Validar nombre, email y url en un formulario php.
Una de las reglas básicas de cerciorarte que el usuario que rellena un formulario no es un spammer o bromista, y quiere contactar con nosotros, es cerciorarte que los datos de contacto introducidos son validos.
Es evidente que es imposible saber si son reales o no, pero por lo menos algo evitaremos introduciendo métodos que validen que los datos introducidos están bien escritos y concatenados.
Vemos los tres tipos de validaciones, que son prácticamente obligatorias en cualquier formulario de contacto (también de otras índoles) que se precie.
- Validar nombre
- Validar correo electrónico (email)
- Validar url
Comenzamos…
Validar nombre (name)
Este código es la manera más simple de verificar que el campo «name» solo contiene letras y espacios en blanco.
La función preg_match () busca la cadena en el patrón, y devuelve el resultado como verdadero o falso.
$name = test_input($_POST["name"]); if (!preg_match("/^[a-zA-Z ]*$/",$name)) { $nameErr = "Solo letras o espacios en blanco"; }
Imprime el error en pantalla.
Validar correo electrónico (email)
Validaremos el correo electrónico con la función PHP filter_var (), que lo que realmente hace es filtrar lo que le indiquemos.
$email = test_input($_POST["email"]); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Formato de email incorrecto"; }
Imprime el error en pantalla.
Validar URL (website)
Con el ultimo código expuesto, verificamos que la sintaxis de una dirección URL es válida (se permiten guiones).
$website = test_input($_POST["website"]); if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "URL incorrecta"; }
Imprime el error en pantalla.
Script de verificación de formulario
Ejemplo completo:
<?php // define variables and set to empty values $nameErr = $emailErr = $genderErr = $websiteErr = ""; $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "Name is required"; } else { $name = test_input($_POST["name"]); // check if name only contains letters and whitespace if (!preg_match("/^[a-zA-Z ]*$/",$name)) { $nameErr = "Solo letras o espacios en blanco"; } } if (empty($_POST["email"])) { $emailErr = "Email is required"; } else { $email = test_input($_POST["email"]); // check if e-mail address is well-formed if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Formato de email incorrecto"; } } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); // check if URL address syntax is valid (this regular expression also allows dashes in the URL) if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "URL incorrecta"; } } if (empty($_POST["comment"])) { $comment = ""; } else { $comment = test_input($_POST["comment"]); } if (empty($_POST["gender"])) { $genderErr = "Gender is required"; } else { $gender = test_input($_POST["gender"]); } } ?>
Espero te sea útil.