Foros del Web » Programando para Internet » PHP »

Validación del lado del servidor

Estas en el tema de Validación del lado del servidor en el foro de PHP en Foros del Web. Hola a tod@s. Supongo que esta duda se habrá contestado infinidad de veces, pero por más que busco no logro encontrar nada que se ajuste ...
  #1 (permalink)  
Antiguo 28/02/2014, 09:50
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 58
Validación del lado del servidor

Hola a tod@s.

Supongo que esta duda se habrá contestado infinidad de veces, pero por más que busco no logro encontrar nada que se ajuste a lo que quiero.

Lo que quiero saber es cual es la mejor forma de recuperar los datos del formulario que el usuario envió para no tener que escribirlos nuevamente si hay algún dato que no ha sido válido.

Una forma que he visto es enviar el formulario a la misma página donde está éste poniendo action="", pero eso implica tener todas las funciones de validación en la misma página del formulario y eso no me gusta. Yo prefiero enviar los datos a otro fichero .php y allí tratarlos y luego volver a la página del formulario si no ha pasado la validación. Pero en este caso, ¿como recupero los datos?.

Creo que una forma de hacerlo es usando la variable $_SESSION, pero no se si este método solo se usa cuando el usuario se tiene que loguear en la página.
En mi página no hay que loguearse ni registrarse, entonces ¿se usa tambien esa variable o hay otra forma mejor?.

Si es con la variable $_SESSION ¿como habría que hacerlo?, ¿cuando y como habría que borrar el contenido de la variable para los sucesivos envíos del formulario si no van validando?
¿Alguien me puede poner algo así un poco esquemático de como se haría?, ¿o pasarme algún link donde lo expliquen?

Muchas gracias. Un saludo.
  #2 (permalink)  
Antiguo 28/02/2014, 10:22
Avatar de xpapachox  
Fecha de Ingreso: junio-2011
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 12
Respuesta: Validación del lado del servidor

Supongamos tenemos 2 formularios.

Form1:

Código PHP:
$txt1="";
$txt2="";
if(ISSET(
$_GET['band'])){
   
$txt1=$_GET['txt1'];
   
$txt2=$_GET['txt2'];

Código HTML:
<form action="form2.php" method="post">       
       <input type="text" name="txt1" value="<?=$txt1; ?>" />
       <input type="text" name="txt2" value="<?=$txt2; ?>" />
</form> 


Form2:

Código PHP:
$txt1=$_POST['txt1'];
$txt2=$_POST['txt2'];

//Aca alguna validacion
.......
.....
//Y si hay algun error Retornas a la página inicial.

Header("Location:form1.php?txt1=$txt1&txt2=$txt2&band=1");exit(); 
  #3 (permalink)  
Antiguo 28/02/2014, 11:36
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Validación del lado del servidor

Otra alternativa al uso de sesiones es realizando la validación mediante una petición asíncrona (Ajax), de modo que envías los datos a una archivo externo, éste realiza la comprobación de datos y devuelve una respuesta. Con esa respuesta decides entre enviar los datos para el registro (o lo que intentes hacer) o mostrar un mensaje de alerta indicándole al usuario que los datos ingresados ya existen en la BD. Como la petición es asíncrona, la página no se recarga.

Hace poco respondí a una pregunta muy similar, quizá te sirva: http://www.forosdelweb.com/f18/valid...mysql-1092552/

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 28/02/2014, 13:48
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 58
Respuesta: Validación del lado del servidor

Ah!, gracias. Me han gustado las dos respuestas.
No se me había ocurrido enviar los datos mediante GET, es un buen método para no tener que usar sesiones.
Lo de Ajax está muy bien también. Voy a mirar a ver si me sale porque no estoy muy puesto en jQuery. Si lo consigo hacer parece que es el mejor método.

Muchas gracias a los dos.

Un saludo.

Etiquetas: formulario, lado, servidor, variable
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 22:15.