Comprobacion de formularios

Tengo un formulario en PHP terminado y quiero que no se envie hasta que todos los campos estén rellenados; no se cómo hacerlo agradecería mucho una...

La FAQ Comprobacion de formularios tiene

Pertenece a la categoría:
Pregunta
Tengo un formulario en PHP terminado y quiero que no se envie hasta que todos los campos estén rellenados; no se cómo hacerlo agradecería mucho una ayudita.
Respuesta de Miguel Angel Alvarez
Si deseas que no se envíe hasta que no esté todo relleno tienes dos posibilidades:





- Hacer una comprobación con Javascript antes de enviar el formulario. Sólo se envía si dicha comprobación fue correcta.


- Hacer una comprobación con PHP en la página que recibe el formulario. Sólo se genera el correo electrónico para enviar el formulario si la comprobación fue correcta. Si no lo fue, lo mejor es mostrar un mensaje de error y volver a escribir el formulario en la página con los datos que se habían rellenado hasta el momento.





La diferencia entre una comprobación y otra es que con Javascript la comprobación es dependiente del ordenador del visitante y con PHP la comprobación es independiente del ordenador del usuario. Es más segura la comprobación con PHP.





Referencias:




Sección de Javascript


Manual de formularios y Javascript


Sección de PHP
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

Liliana Rodríguez

29/10/2005
Este es el código, por ejemplo, que tenga campos como Nombre ó Email, :

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='El '+nm+' no es un email valido. ';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number. ';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'. ';
} } } else if (test.charAt(0) == 'R') errors += 'El campo '+nm+' es requerido. '; }
} if (errors) alert('Tiene los siguientes erorres: '+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>



y en el tag de formulario se pone:

<form action="" method="post" name="form1" onSubmit="MM_validateForm('nombre','','R','email','','RisEmail');return document.MM_returnValue">

Dani

29/6/2007
Yo en micaso lo que hago es hacerme una funcion en JScript donde valido todos los campo uno por uno, añado un boton tipo button (no tipo submit) y en el evento onclick llamo a la funcion validar.
Como funciona la funcion validar: creo una variable error vacia y repaso campo por campo, en aquel que no este correcto añado un texto na la variable error y al final de repasar todos los campos pregunto por la variable error, si esta vacia, hago un submit, en caso contrario muestro el texto de la variable error. el campo tal esta mal, el campo cual le falta n dos digitos...
Ok.
Espero te ayude

Emilio

08/9/2007
Validar la información en el lado del cliente (caso de Javascript) es una tontería, porque un cliente malintencionado puede manipular esas medidas (o directamente saltárselas) y enviar información comprometida. La validación debe efectuarse SIEMPRE en el lado del servidor (PHP/ASP/PERL o lo que corresponda).
Quien te aconseje lo contrario no tiene ni idea de programación.

dhernandez

14/1/2008
Las validaciones en JavaScript tienen un problema, y es que dependen de que el cliente tenga JavaScript en su navegador (y que lo tenga activo). Si no, pueden pasar dos cosas... que la funcionalidad no se pueda utilizar o que la validación no se realice, con todos los problemas de seguridad que eso conlleva en el servidor...

Es mejor realizar SIEMPRE las validaciones en el lado servidor, y que las validaciones en el lado cliente, si se quieren hacer, sirvan para evitar carga innecesaria en el servidor y/o para mejorar la experiencia del usuario, permitiendole corregir los errores antes de enviar el formulario

eduardo_galindez-502847

16/6/2010
Validación del formulario
Hola,

Soy nuevo en la programación de páginas web y me encuentro en la fase de querer validar si los campos de un formulario están completos. Encontré en este portal el siguiente código:
function valida_envia(){
//valido el nombre
if (document.form1.nombre.value.length==0){
alert("Tiene que escribir su nombre")
document.form1.nombre.focus()
return 0;
}
}


Lo que no sé es si esto va en mi html o en mi php (action:"datos.php")
FAQ relacionadas
Volver al árbol de categoríasVolver al árbol de categorías