Validación de Formularios con PHP. En los formularios web algunos de los campos son importantes y es necesario que lo validemos para que no estén vacíos y tengan los valores que deseamos como los correos electrónicos, números telefónicos, edad, fechas, etc. Por lo tanto, en este artículo veremos una estrategia para validar los formularios de manera correcta usando PHP y sus funciones por defecto.
Validación de Formularios con PHP
Usaremos las siguientes herramientas
- Lenguaje PHP
- Una función PHP
- Formulario HTML
- Librería BootStrap 4.5
- Filtro FILTER_VALIDATE_EMAIL
Para validar usaremos un script PHP del lado del servidor se utiliza para manejar los datos ingresados por los usuarios. Ahora, usaremos PHP para validar los datos y devolver los mensajes de error en los inputs y detenga en envío para la corrección.
Ver DemoValidación de formularios con PHP y componentes PHP
Los formularios se utilizan principalmente para recopilar datos ingresados por el usuario en el sistema.
Hay diferentes componentes como cuadro de texto, botones de radio, casilla de verificación, cuadro combinado o cuadros de lista desplegable para que los usuarios ingresen datos en un sistema.
¿Cómo validar el correo electrónico?
Este campo suele ser complicado para realizar una validación porque tenemos que validad puntos y arrobas para que sea validado. Sin embargo, PHP nos hace la vida fácil porque posee una función llamada «FILTER_VALIDATE_EMAIL» que nos hace la tarea muy fácil, veamos un ejemplo de uso.
$email = validar_input($_POST["email"]); // Verifica el correcto formato de email if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Formato de email invalido"; }
Formulario del ejemplo
Para este ejemplo usaremos un formulario HTML con incrustación de variables, condicionales para devolver resultados en caso de error de validación.
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> <div class="form-group"> <label class="col-form-label"><span class="error">* </span>Nombre</label> <input name="nombre" type="text" class="form-control" value="<?php if (!empty($_POST["nombre"])) { echo $nombre; }else {echo "";}?>"> <span class="error invalid-feedback"> <?php echo $nombreErr;?></span> </div> <div class="form-group"> <label class="col-form-label"><span class="error">* </span>Email</label> <input name="email" type="text" class="form-control" value="<?php if (!empty($_POST["email"])) { echo $email; }else {echo "";}?>"> <span class="error invalid-feedback"> <?php echo $emailErr;?></span> </div> <div class="form-group"> <button class="btn btn-primary btn-block" name="submit">Enviar</button> </div> </form>
Validación PHP del Formulario
EL usuario al enviar el formulario se ejecuta el siguiente script PHP en el cual verificara que los dos campos enviados por el formulario cumplan con los requisitos requeridos.
<?php // Definir variables $nombreErr = $emailErr = ""; $nombre = $email = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["nombre"])) { $nombreErr = "Nombre es requerido"; }else { $nombre = validar_input($_POST["nombre"]); } if (empty($_POST["email"])) { $emailErr = "Email es requerido"; }else { $email = validar_input($_POST["email"]); // Verifica el correcto formato de email if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Formato de email invalido"; } } }
Función limpiar caracteres especiales
Para proteger nuestros formularios hay varias estrategias. Por lo tanto, como sabrás hay personas que usan los formularios para ejecutar inyecciones SQL.
Además, usaremos el método POST PHP.
Ahora, si bien este script sirve para validar que los campos no estén vacíos, no se salvan de los ataques. Sin embargo, esta función PHP se encarga de limpiar caracteres especiales en nuestro formulario.
function validar_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; }
Respuesta del envío de formulario
Si, el envío paso todas las validaciones en PHP se mostrará resultados al final del formulario con los valores correctos según la necesidad del programador.
Sin embargo, también en esta sección se podría validar para envío de la información a las siguientes secciones:
- Base de datos MySQL
- Envío de la información vía email usando la librería PHPMailer
if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($nombreErr) and empty($emailErr)) { echo "<br><h6>Tus valores son:</h6>"; echo "<strong>Nombre</strong>: ".$nombre; echo "<br>"; echo "<strong>Email</strong>: ".$email; echo "<br>"; } }
Código fuente completo del script
Aquí, les dejare el script completo donde están todos los procesos de validación y respuestas dentro del formulario en el caso que algún campo sea erróneo y deba corregirse según sea el caso.
Para el correcto funcionamiento del script, les dajaré la librería BooStrap 4.5
<html> <head> <meta charset="utf-8"> <title>Validacion de formulario con PHP</title> <link rel="stylesheet" href="css/bootstrap.min.css"> <style> .error {color: #FF0000;} .invalid-feedback{ display:block !important} </style> </head> <body> <?php // Definir variables $nombreErr = $emailErr = ""; $nombre = $email = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["nombre"])) { $nombreErr = "Nombre es requerido"; }else { $nombre = validar_input($_POST["nombre"]); } if (empty($_POST["email"])) { $emailErr = "Email es requerido"; }else { $email = validar_input($_POST["email"]); // Verifica el correcto formato de email if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Formato de email invalido"; } } } function validar_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <div class="container"> <br> <div class="card bg-light"> <div class="card-header"> Formulario de registro con validación </div> <div class="card-body"> <span class = "error">* Campos requeridos.</span> <div class="row"> <div class="col-md-6"> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> <div class="form-group"> <label class="col-form-label"><span class="error">* </span>Nombre</label> <input name="nombre" type="text" class="form-control" value="<?php if (!empty($_POST["nombre"])) { echo $nombre; }else {echo "";}?>"> <span class="error invalid-feedback"> <?php echo $nombreErr;?></span> </div> <div class="form-group"> <label class="col-form-label"><span class="error">* </span>Email</label> <input name="email" type="text" class="form-control" value="<?php if (!empty($_POST["email"])) { echo $email; }else {echo "";}?>"> <span class="error invalid-feedback"> <?php echo $emailErr;?></span> </div> <div class="form-group"> <button class="btn btn-primary btn-block" name="submit">Enviar</button> </div> </form> </div> </div> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($nombreErr) and empty($emailErr)) { echo "<br><h6>Tus valores son:</h6>"; echo "<strong>Nombre</strong>: ".$nombre; echo "<br>"; echo "<strong>Email</strong>: ".$email; echo "<br>"; } } ?> </div> </div> </div> </body> </html>
CONCLUSIÓN
La validación de formularios suele ser complicado porque existe varias formas de hacerlos, algunos suelen validad con JavaScript, como sabrán este lenguaje trabaja al lado del cliente (Navegador web) y suele ser inseguro.
Es recomendable validarlo para mayor seguridad desde el lado del servidor y PHP cumple estos requisitos.
Como han apreciado, las implementaciones de estas validaciones no son complicadas y en este artículo hemos detallado punto a punto.
Espero que esta breve explicación les ayude en sus proyectos web,