Foros del Web » Programando para Internet » PHP »

Validación de form en php.

Estas en el tema de Validación de form en php. en el foro de PHP en Foros del Web. Buenas. Tengo un formulario en un php y quiero validar que todos estos campos esten informados, pero la pregunta es donde tengo que meter estas ...
  #1 (permalink)  
Antiguo 10/08/2011, 03:01
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Validación de form en php.

Buenas.
Tengo un formulario en un php y quiero validar que todos estos campos esten informados, pero la pregunta es donde tengo que meter estas validaciones. Es decir, donde tengo que meter estas validaciones para que en caso de que exista algún error no me envie el formulario una vez haya pulsado el botón de envio del formulario.
Gracias.
  #2 (permalink)  
Antiguo 10/08/2011, 03:06
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Validación de form en php.

Buenas, te dejo un mensaje que le pasé a un compañero y ahí puedes ver, que está todo explicado. Tanto cómo se hace la validación (JavaScript y PHP) como la forma en que se utiliza.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 10/08/2011, 03:08
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Validación de form en php.

Muchas gracias.
  #4 (permalink)  
Antiguo 10/08/2011, 03:19
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Validación de form en php.

Lo estoy viendo pero quizás no me he explicado en mi duda.
Partimos de la base de que soy nuevo en esto. Te explico...
Lo que no veo es una vez dentro del php que contiene el formulario, ¿donde meto estas validaciones para que la llamada dentro del submit no la realice si existen errores en los campos del formulario?
¿Tengo que meter estas validaciones dentro del formulario para cada campo?, ¿tengo que hacerlo posteriormente al formulario?, entiendo que esto no porque sería enviado antes de validar.
Y en cualquier caso, ¿puedo de alguna manera devolver un php al de llamada sin perder los datos previamente introducidos en el de llamada?
Gracias, saludos y perdonad mi ignorancia.

PD.Decir que cuando lo pregunto en el foro previamente estoy mirando a ver si encuentro las respuestas a mis preguntas por la red.
  #5 (permalink)  
Antiguo 10/08/2011, 04:43
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Validación de form en php.

Buenas,

Cita:
Iniciado por agcforos Ver Mensaje
Partimos de la base de que soy nuevo en esto. Te explico...
Si esto es como dices, deberías empezar por mirar algún manual y demás, porque si yo te explico cómo funcionan las validaciones en JS y PHP, asumo que tienes un conocimiento previo. Si no lo tienes, no te vas a enterar de nada.

Esto está perfectamente explicado en el post que te pasé, pero no lo habrás entendido. Te extiendo la explicación. La interacción entre un cliente y un servidor es la siguiente: el cliente realiza un evento (acción) y esto genera una petición HTTP que se envía al servidor, el servidor recoge la petición, accede al script que tiene que cargar, lo evalúa (es decir, ejecuta su código) y, con la respuesta que genera el script monta una respuesta HTTP que es enviada e interpretada por el cliente.

Bien, dentro de este esquema tenemos PHP y JS: PHP es un lenguaje de servidor y JS es un leguaje de cliente. Qué quiere decir esto? Quiere decir que PHP se va a ejecutar únicamente en el servidor y JS únicamente en el cliente. A la hora de validar, JS se mete (dentro del proceso que te he explicado) entre la generación de la acción (en este caso, darle a enviar el formulario) y el montaje de la petición HTTP, luego si la página no valida con JS no se envía la petición al servidor, se queda en la misma página y nunca pierdes los datos que tengas insertados en el formulario. Sin embargo, la validación PHP se introduce en la ejecución del script que se ejecuta en el servidor (nota que la petición ya ha sido enviada). Este script será el encargado de definir qué se hace si no se pasa la validación.

Con esto claro, paso a tus preguntas.

Cita:
Iniciado por agcforos Ver Mensaje
Lo que no veo es una vez dentro del php que contiene el formulario, ¿donde meto estas validaciones para que la llamada dentro del submit no la realice si existen errores en los campos del formulario?
Si lo que quieres es que la petición HTTP no se envíe, hay que validar con JS y en el post que se pasé viene cómo llamar a la función. Se llama desde el evento onsubmit del tag del form. Es decir:
<form name="nombre_del_form" action="loquesea" onsubmit="return validateForm()" method="post">
Dónde validateForm() es una función JS que valida todos los campos del formulario y devuelve true si pasó la validación y false en caso contrario.

Pero esto no es completo, por qué? Sencillo, un usuario puede desactivar JS en su navegador y si sólo tienes validación con JS se la saltaría y podría enviarte al servidor datos basura que no han pasado la validación, con la consecuente catástrofe que esto significa. Hay que validar en JS y en PHP siempre.

Cita:
Iniciado por agcforos Ver Mensaje
¿Tengo que meter estas validaciones dentro del formulario para cada campo?, ¿tengo que hacerlo posteriormente al formulario?, entiendo que esto no porque sería enviado antes de validar.
Ya has visto cómo se valida desde JS. Para validar en PHP lo que hay que hacer es, en el php que recibe los datos del formulario, tienes que añadir las siguientes líneas:
Código PHP:
Ver original
  1. if ($message = ValidateForm()) {
  2.     // Aquí todo ha ido bien
  3. } else {
  4.     // Aquí no se ha pasado alguna validación y en $message tienes un mensaje que te dice qué ha pasado.
  5. }

En tu caso, si lo que quieres es que si no valida le vuelva a reenviar a la página del formulario, tendrás que ponerlo en el else.

Cita:
Iniciado por agcforos Ver Mensaje
Y en cualquier caso, ¿puedo de alguna manera devolver un php al de llamada sin perder los datos previamente introducidos en el de llamada?
Gracias, saludos y perdonad mi ignorancia.
Puedes, como ya te he indicado, redirigir desde el PHP a al misma página en la que está el formulario. Pero los campos no se van a rellenar por arte de magia, tendrás que extraer sus valores del $_POST y rellenarlos tú.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #6 (permalink)  
Antiguo 10/08/2011, 05:11
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Validación de form en php.

Muchas gracias una vez mas por tu tiempo.
Intentaré aprovechar tu respuesta para aclarar conceptos que obviamente necesito tener claros.
Un saludo.
  #7 (permalink)  
Antiguo 10/08/2011, 07:49
 
Fecha de Ingreso: julio-2011
Mensajes: 91
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Validación de form en php.

Hola de nuevo.
Creo que a nivel teórico entiendo perfectamente tus mensajes.
Saludos.

Etiquetas: formulario, validar
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 01:46.