PHP Ejemplos

Validación de Formularios con PHP [Ejemplo Completo]

Form Validation PHP Full Example

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 Demo
Validación de Formularios con PHP [Ejemplo Completo]
Validación de Formularios con PHP [Ejemplo Completo]

Validació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:

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,

Descarga 156 Sistemas PHP & MySQL

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba