Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Importación de archivos.
Trabajo con funciones
Validación de formularios
Index.php
<?php
//Definimos la codificación de la cabecera.
header('Content-Type: text/html; charset=utf-8');
//Importamos el archivo con las validaciones.
require_once 'validaciones.php';
//Guarda los valores de los campos en variables, siempre y cuando se haya enviado el formulario, sino
se guardará null.
$nombre = isset($_POST['nombre']) ? $_POST['nombre'] : null;
$edad = isset($_POST['edad']) ? $_POST['edad'] : null;
$email = isset($_POST['email']) ? $_POST['email'] : null;
//Este array guardará los errores de validación que surjan.
$errores = array();
//Pregunta si está llegando una petición por POST, lo que significa que el usuario envió el formulario.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//Valida que el campo nombre no esté vacío.
if (!validaRequerido($nombre)) {
$errores[] = 'El campo nombre es incorrecto.';
}
//Valida la edad con un rango de 3 a 130 años.
$opciones_edad = array(
'options' => array(
//Definimos el rango de edad entre 3 a 130.
'min_range' => 3,
'max_range' => 130
)
);
if (!validarEntero($edad, $opciones_edad)) {
$errores[] = 'El campo edad es incorrecto.';
}
//Valida que el campo email sea correcto.
if (!validaEmail($email)) {
$errores[] = 'El campo email es incorrecto.';
}
//Verifica si ha encontrado errores y de no haber redirige a la página con el mensaje de que
pasó la validación.
if(!$errores){
header('Location: validado.php');
exit;
}
}
?>
<!DOCTYPE>
<html>
<head>
<title> Formulario </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php if ($errores): ?>
<ul style="color: #f00;">
<?php foreach ($errores as $error): ?>
<li> <?php echo $error ?> </li>
1
<?php endforeach; ?>
</ul>
<?php endif; ?>
<form method="post" action="index.php">
<label> Nombre </label>
<br />
<input type="text" name="nombre" value="<?php echo $nombre ?>" />
<br />
<label> Edad </label>
<br />
<input type="text" name="edad" size="3" value="<?php echo $edad ?>" />
<br />
<label> E-mail </label>
<br />
<input type="text" name="email" value="<?php echo $email ?>" />
<br />
<input type="submit" value="Enviar" />
</form>
</body>
</html>
validaciones.php
<?php
function validaRequerido($valor){
if(trim($valor) == ''){
return false;
}else{
return true;
}
}
function validarEntero($valor, $opciones=null){
if(filter_var($valor, FILTER_VALIDATE_INT, $opciones) === FALSE){
return false;
}else{
return true;
}
}
function validaEmail($valor){
if(filter_var($valor, FILTER_VALIDATE_EMAIL) === FALSE){
return false;
}else{
return true;
}
}
?>
validado.php
<!DOCTYPE>
<html>
<head>
<title> Formulario </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<strong> Sus datos han sido enviados correctamente </strong>
</body>
</html>
2
vista.html
<html>
<head>
<title>Ejemplo de validaciones</title>
</head>
<body>
Nivel de inglés:
<input type="radio" name="radIngles" value="BAJO" /> Bajo
<input type="radio" name="radIngles" value="MEDIO" /> Medio
<input type="radio" name="radIngles" value="ALTO" /> Alto<p/>
</form>
</body>
</html>
Vista.php
<?php
// Arrays para guardar mensajes y errores:
$aErrores = array();
$aMensajes = array();
3
$aErrores[] = "Debe especificar el nombre";
else
{
// Comprobar mediante una expresión regular, que sólo contiene letras y espacios:
if( preg_match($patron_texto, $_POST['txtNombre']) )
$aMensajes[] = "Nombre: [".$_POST['txtNombre']."]";
else
$aErrores[] = "El nombre sólo puede contener letras y espacios";
}
// Apellidos:
if( empty($_POST['txtApellidos']) )
$aErrores[] = "Debe especificar los apellidos";
else
{
// Comprobar mediante una expresión regular, que sólo contienen letras y espacios:
if( preg_match($patron_texto, $_POST['txtApellidos']) )
$aMensajes[] = "Apellidos: [".$_POST['txtApellidos']."]";
else
$aErrores[] = "Los apellidos sólo pueden contener letras y espacios";
}
// Edad:
if( (isset($_POST['txtEdad']) ) && (!empty($_POST['txtEdad'])) )
{
if( is_numeric($_POST['txtEdad']) )
$aMensajes[] ="Edad: [".$_POST['txtEdad']."]";
else
$aErrores[] = "El campo edad debe contener un número.";
}
// Inglés:
if( isset($_POST['radIngles']) )
$aMensajes[] = "El nivel de inglés es: [".$_POST['radIngles']."]";
// Coche:
if( isset($_POST['chkCoche']) )
{
/*
No hace falta comprobar el valor de la casilla de verificación, ya que si
está definido 'chkCoche' es que se ha marcado (al igual que sucede con
los botones radio)
*/
$aMensajes[] = "Coche: [SI]";
}
}
else
{
echo "<p>No se han especificado todos los datos requeridos.</p>";
}