Foros del Web » Programando para Internet » PHP »

problema con validación en formulario

Estas en el tema de problema con validación en formulario en el foro de PHP en Foros del Web. Hola tengo la siguiente duda, ya tengo las siguientes validaciones hechas en PHP, pero no las tiene en cuenta, lo ideal sería que las haga ...
  #1 (permalink)  
Antiguo 14/06/2015, 20:47
 
Fecha de Ingreso: junio-2013
Mensajes: 20
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta problema con validación en formulario

Hola tengo la siguiente duda, ya tengo las siguientes validaciones hechas en PHP, pero no las tiene en cuenta, lo ideal sería que las haga antes de ir a registracion.php, para no guardar datos incorrectos en la base de datos, cómo hago?

Código:
<html>
    <head>
            <title>Formulario de registro</title>
    </head>
            <body>
                <h2>Ingrese sus datos</h2>
                <form action="registracion.php" method="POST">
                        <p><label for="nombre">Nombre: </label><br>
                        <input type="text" name="nombre"></p>
                        <p><label for="apellido">Apellido: </label><br>
                        <input type="text" name="apellido"></p>        
                     <p><label for="email">Email: </label><br>
                        <input type="text" name="email"></p>
                        <p><label for="dni">DNI: </label><br>
                        <input type="text" name="dni"></p>
                    <label for="sexo">Sexo: </label><br>                                          
                    <select name="sexo" id="ubicacion">
                        <option value="" selected="selected">-</option>
                        <option value="F">Femenino</option>
                        <option value="M">Masculino</option>      
                        </select>
                        <br /><br />
                        Fecha
               <input type="text" name="dia" size="2">
                                <input type="text" name="mes" size="2">
                                <input type="text" name="anio" size="4">
                                <br>
                                <?php
                        if(isset($_POST["submit"]))
                        {
                                $nombre = trim($_POST["nombre"]);
                                $apellido = trim($_POST["apellido"]);
                              	$email = trim($_POST["email"]);
                                $sexo = trim($_POST["sexo"]);
                               	$dni = trim($_POST["dni"]);                    
                              $dia= trim($_POST["dia"]);
                                $mes= trim($_POST["mes"]);
                                $anio= trim($_POST["anio"]);
                                $response = array();
                               // if($nombre == "" or $apellido == "" or $dni == "" or $email == "" or $sexo == "" or $dia== 0 or $mes== 0 or $anio== 0)
                               if($nombre == "" or $apellido == ""  or $email == "" or $dni == "" or $sexo == "" or $dia== 0 or $mes== 0 or $anio== 0)
                                        $response[] = "Debes completar todos los campos";
                                if((strlen($nombre) < 5)||(strlen($nombre) > 10))
                                        $response[] ="El nombre debe tener entre 5 y 10 caracteres";
                                if(!(filter_var($nombre, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[a-zA-Z]*$/")))))
                                        $response[]="Se deben ingresar solo letras";
                                if((strlen($apellido) < 5)||(strlen($apellido) > 10))
                                        $response[] ="El apellido debe tener entre 5 y 10 caracteres";
                                if(!(filter_var($apellido, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[a-zA-Z]*$/")))))
                                        $response[]="Se deben ingresar solo letras";                           
                                if(!is_numeric($dni))
                                        $response[]="Debe tener solo numeros";
                           		if(!filter_var($email,FILTER_VALIDATE_EMAIL ))
                                         "El email no es valido";
                               if (!(checkdate($_REQUEST['mes'],$_REQUEST['dia'],$_REQUEST['anio'])))
                                        $response[] = "La fecha no es valida"; 
                                if(empty($response))
                                        echo "<p> Sus datos se han enviado correctamente</p>";
                                else
                                {
                                        foreach($response as $r)
                                        echo "Errores: ".$r."<br>";
                                }
                        }
                ?>                   
                       
                        <p><input type="submit" value="Registrarse" name="submit"></p>
                        <p><input type="reset" value="Limpiar"></p>
                </form>

               
        </body>
    </html>
  #2 (permalink)  
Antiguo 15/06/2015, 01:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: problema con validación en formulario

Hola:

El método post se considera al enviar el formulario y no antes... desde el navegador debes usar javascript, que puede fallar, así que tu validación debería ir en la página que indicas en el action del formulario.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 15/06/2015, 05:08
 
Fecha de Ingreso: junio-2015
Mensajes: 2
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: problema con validación en formulario

como bien dice caricatos, las variables sacadas de $_POST se recogen una vez enviado el formulario, porque estos datos viajan en la cabecera del HTML.
SI quieres hacer una buena validación para no insertar datos erroneos en la BD, valida dichos datos en Javascript y tambien en PHP una vez enviado el formulario...
Si quieres validar esos datos antes de enviar el formulario, la unica solución es validarlos con JavaScript...
UN saludo y buen dia
  #4 (permalink)  
Antiguo 15/06/2015, 14:05
Avatar de ruxee
Usuario no validado
 
Fecha de Ingreso: agosto-2002
Ubicación: USA
Mensajes: 131
Antigüedad: 22 años, 3 meses
Puntos: 7
Respuesta: problema con validación en formulario

La validacion debes hacerla antes, como bien dice caricatos. Generalmente con Javascript puesto que lo ideal es que se haga del lado del navegador y no del servidor (seguridad y eficiencia).

Hay varios scripts en Javascript que no son complejos de entender y son gratis, estos te pueden ayudar si buscas por javascript form validation. De cualquier manera usando HTML5 podrias hacer ya muchas de las validaciones previas, sino buscate uno prefabricado.

Uno que te recomiendo está en JavaScriptCoder.com

Espero te sirva,
  #5 (permalink)  
Antiguo 15/06/2015, 17:59
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: problema con validación en formulario

Hola:

Cita:
Iniciado por caricatos Ver Mensaje
... así que tu validación debería ir en la página que indicas en el action del formulario...
Cita:
Iniciado por ruxee Ver Mensaje
La validacion debes hacerla antes, como bien dice caricatos. Generalmente con Javascript puesto que lo ideal es que se haga del lado del navegador y no del servidor (seguridad y eficiencia).
Me parece que no estamos hablando de lo mismo...

La validación javascript es la secundaria... tan solo deshabilitándolo hace colar todo.

Es bueno validar con javascript, pero es imprescindible hacerlo en el servidor.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: formulario, validacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:00.