Nueva pregunta

Pregunta:

Fecha: 20-09-2017 11:38:53 (En Español)

validacion formulario header location php[No resuelta]

Buenas, quisiera saber como se puede validar mas de un campo de un formulario con header location en php y que muestre un mensaje distinto por cada validación de campo, por ejemplo pagina1.php:
<?php
{
if (isset($_REQUEST['error']))
echo "Debe completar el campo<br>";
}
?>

<form method="post" action="pagina2.php">
<input type="" name="nombre">
<input type="" name="apellido">
<input type="" name="direccion">
<input type="submit" value="confirmar">
</form>

pagina2.php seria, acá, me valida el campo nombre y como validaría los demás:

<?php
if ($_REQUEST['nombre']=="")
{
header("Location: pagina1.php?error=1");
}

?>
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php echo $_REQUEST['nombre']; ?>
</body>
</html>

gracias, espero puedan entender y responder.

Saludos
Etiquetas: Formulario - PHP Votos: 0 - Respuestas: 1 - Vistas: 15 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 20-09-2017 16:39:05 Acá te dejo modificado sobre tu mismo código, si no entiendes alguna parte pregunta :)
    <?php
    	session_start();
    
        if(isset($_GET['error']) && $_GET['error'] == 1){
            // echo "Debe completar el campo<br>";
            if(isset($_SESSION['errors']) && is_array($_SESSION['errors']) && sizeof($_SESSION['errors']) > 0){
            	foreach($_SESSION['errors'] as $error){
            		switch($error){
            			case 'nombre' : echo 'Debe completar el campo nombre <br/>'; break;
            			case 'apellido' : echo 'Debe completar el campo apellido <br/>'; break;
            			case 'direccion' : echo 'Debe completar el campo direccion <br/>'; break;
            		}
            	}
            	unset($_SESSION['errors']);
            }
        }
    ?>
    
    <form method="post" action="pagina2.php">
    	<input type="" name="nombre">
    	<input type="" name="apellido">
    	<input type="" name="direccion">
    	<input type="submit" value="confirmar">
    </form>
    
    pagina2.php seria, acá, me valida el campo nombre y como validaría los demás:
    
    <?php
    	// Investiga un poco sobre sesiones :)
    	session_start();
    
    	$errors = array();
    
    	// Trata de validar mejor los datos. Valida formato, tipo y rango de datos, si vas con cadenas trata de usar trim para evitar que '  ' (espacios) al llenar el formulario logren pasar tu validacion.
    
    	if(isset($_POST['nombre']) || strlen(trim($_POST['nombre'])) == 0){
    		$errors[] = 'nombre';
    	}
    
    	if(isset($_POST['apellido']) || strlen(trim($_POST['apellido'])) == 0){
    		$errors[] = 'apellido';
    	}
    
    	if(isset($_POST['direccion']) || strlen(trim($_POST['direccion'])) == 0){
    		$errors[] = 'direccion';
    	}
    
    	if(sizeof($errors) > 0){
    		$_SESSION['errors'] = $errors;
    		header("Location: pagina1.php?error=1");
    		// Siempre haz un return o die luego de una redireccion por header, un navegador configurado para no seguir redirecciones saltaria esta validacion
    		return;
    	}
    ?>
    <html>
    <head>
    <title>Problema</title>
    </head>
    <body>
    <?php
    	// Nunca imprimas valores directamente sin procesarlos primero, vulnerable a XSS reflejado, trata de usar $_GET y $_POST en vez de $_REQUEST
    	echo $_REQUEST['nombre'];
    ?>
    </body>
    </html>
    
      Votos: 2 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com