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.
1 2 3 4 | $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.
1 2 3 4 | $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).
1 2 3 4 | $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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?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.