• Sábado 18 de Mayo de 2024, 22:09

Autor Tema:  Validacion De Formulario En Jscript Y Envio En Php  (Leído 1349 veces)

Kyrylys

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Validacion De Formulario En Jscript Y Envio En Php
« en: Viernes 15 de Diciembre de 2006, 15:25 »
0
Hola a todos, posteo esto aqui porque creo que es el Jscript el que falla, pero si es es el php muevelo por favor...

Tengo un pequeño problema, es el que sigue.

Estoy haciendo un formulario que envie los campos a una direccion de correo definida, mediante php.

Lo que hago es verificar con un javascript que los campos no estén vacios, que el mail contenga la arroba (me queda quitar el codigo malicioso < y > entre otros...)... y que si todo está ok lo mande al correo.

El problema es que si dejo algún campo vacio el js me informa mediante un alert -tal y como tiene qeu hacer- pero en vez de parar el proceso, manda el correo.

Tengo 3 documentos:

el formulario va en contacto.php
Código: Text
  1. &#60;form method=&#34;post&#34; action=&#34;envio.php&#34; id=&#34;contacto&#34; name=&#34;contacto&#34;&#62;
  2.      
  3.       &#60;table width=&#34;258&#34; height=&#34;290&#34; align=&#34;center&#34;&#62;
  4.         &#60;tr&#62;
  5.           &#60;td width=&#34;124&#34;&#62;Nombre:&#60;/td&#62;
  6.         &#60;td width=&#34;122&#34;&#62;&#60;input  type=&#34;text&#34; name=&#34;nombre&#34; id=&#34;nombre&#34; size=&#34;10&#34; /&#62;&#60;/td&#62;
  7.       &#60;/tr&#62;
  8.       &#60;tr&#62;
  9.         &#60;td&#62;Apellido:&#60;/td&#62;
  10.         &#60;td&#62;&#60;input type=&#34;text&#34; name=&#34;apellido&#34; id=&#34;apellido&#34; size=&#34;10&#34; /&#62;&#60;/td&#62;
  11.       &#60;/tr&#62;
  12.       &#60;tr&#62;
  13.        
  14.       &#60;td&#62;E-Mail:&#60;/td&#62;
  15.         &#60;td&#62;&#60;input  type=&#34;text&#34; name=&#34;email&#34; id=&#34;email&#34; size=&#34;10&#34; /&#62;&#60;/td&#62;
  16.       &#60;/tr&#62;  
  17.       &#60;tr&#62;
  18.         &#60;td colspan=&#34;2&#34;&#62;&#60;textarea  name=&#34;mensaje&#34; cols=&#34;30&#34; rows=&#34;5&#34; wrap=&#34;OFF&#34;&#62;&#60;/textarea&#62;&#60;/td&#62;
  19.       &#60;/tr&#62;  
  20.       &#60;tr&#62;
  21.         &#60;td colspan=&#34;2&#34; align=&#34;center&#34;&#62;&#60;input type=&#34;submit&#34; name=&#34;Submit&#34; value=&#34;Enviar&#34;onClick=&#34;javacript:check_form();&#34;&#62;&#60;/td&#62;
  22.       &#60;/tr&#62;
  23.     &#60;/table&#62;
  24. &#60;/form&#62;
  25.  
  26.  
  27.  

como veis es muy sencillo.

el jscript que valida es este:

Código: Text
  1. function check_form()
  2. {
  3. var cont=0;
  4. var err='Para poder atenderle mejor nos es necesario que rellene los siguientes campos:&#092;n&#092;n&#092;n';
  5.    if (contacto.nombre.value=='')  
  6.        {err=err+&#34;    Nombre&#092;n&#34;;cont=1;}
  7.    if (contacto.apellido.value=='')
  8.        {err=err+&#34;    Apellido&#092;n&#34;;cont=1;}
  9.    if (contacto.email.value=='')
  10.        {err=err+&#34;    Correo electrónico&#092;n&#34;;cont=1;}
  11.      //implementacion: mirar la arroba sólo si el campo mail ha sido rellenado
  12.   if ((contacto.email.value!='')&&(contacto.email.value.indexOf(&#34;@&#34;)==-1))
  13.     {err=&#34; su dirección de e-mail no es válida&#092;n&#34;; cont=1;}
  14.     //fin verificacion @
  15.    if (contacto.mensaje.value=='')
  16.        {err=err+&#34;    Mensaje&#092;n&#34;; cont=1;}
  17.              err=err+&#34;&#092;n&#092;n... disculpe las molestias.&#34;;
  18.    if (cont==1) alert(err);
  19.          else {contacto.submit();}  
  20. }
  21.  
como veis le digo que si hay un error saque un alert -cosa que hace-
y si no (else) que envie el formulario. pero es como si ignorase el else.

por ultimo el documento que procesa el envio del formulario via e-mail.

Código: Text
  1. &#60;?php
  2. session_start();
  3.  
  4.  
  5. &#036;mensaje='';
  6.  
  7.  
  8. &#036;to=&#34;MAIL PERSONAL QUE NO SE VISUALIZA EN LA WEB Y A LA QUE LLEGA EL FORMULARIO&#34;;
  9.  
  10.  
  11. &#036;subject=&#34;Consulta Web&#34;;
  12.  
  13. &#036;mensaje=&#036;mensaje.&#34;Nombre: &#34;.&#036;_REQUEST[&#34;nombre&#34;].&#34;&#092;n&#34;;
  14. &#036;mensaje=&#036;mensaje.&#34;Apellido: &#34;.&#036;_REQUEST[&#34;apellido&#34;].&#34;&#092;n&#34;;
  15. &#036;mensaje=&#036;mensaje.&#34;E-mail: &#34;.&#036;_REQUEST[&#34;email&#34;].&#34;&#092;n&#34;;
  16. &#036;mensaje=&#036;mensaje.&#34;&#092;n&#34;.&#036;_REQUEST[&#34;mensaje&#34;].&#34;&#092;n&#34;;
  17.  
  18. &#036;env=@mail(&#036;to,&#036;subject,&#036;mensaje,&#34;From:&#34;.&#036;_REQUEST[&#34;email&#34;]);
  19.  
  20. ?&#62;
  21. &#60;html&#62;  
  22. &#60;head&#62;
  23. &#60;title&#62;&#60;/title&#62;
  24. &#60;?php
  25. require(&#34;icono.php&#34;);
  26. require(&#34;metatags.php&#34;);
  27. require(&#34;estilo.php&#34;);
  28. require(&#34;scripts.php&#34;);
  29. ?&#62;
  30.  
  31. &#60;/head&#62;
  32.  
  33. &#60;body marginwidth=&#34;0&#34; leftmargin=&#34;0&#34; marginheight=&#34;0&#34; topmargin=&#34;0&#34;&#62;
  34.  
  35. &#60;?php
  36. echo(&#34;&#60;!---------------MAIN---------------------------&#62;&#34;);
  37. require(&#34;top.php&#34;);
  38. require(&#34;menu.php&#34;);
  39. require(&#34;barras.php&#34;);
  40. ?&#62;
  41.  
  42. &#60;?php if (!&#036;env) {echo(&#34;
  43.   &#60;div style='position:absolute; left:250; top:400;'&#62;
  44.   &#60;table&#62;
  45.     &#60;tr height='19px'&#62;
  46.       &#60;td&#62;&#60;p align='center'&#62;Lamentamos anunciar que su consulta no ha sido enviada&#60;/p&#62;&#60;/td&#62;
  47.          &#60;!--td background='../IMG/buttons/ini.jpg' width='3' align='left'&#62;&#60;/td--&#62;
  48.       &#60;td background='../IMG/buttons/med.jpg' width='70' align='center'&#62;&#60;a href='main.php?link=contacto'&#62;&#60;i&#62;volver atras&#60;/i&#62;&#60;/a&#62;&#60;/td&#62;
  49.       &#60;!--td background='../IMG/buttons/fin.jpg' width='3' align='right'&#62;&#60;/td--&#62;
  50.       &#60;/tr&#62;
  51. &#60;/table&#62;
  52. &#60;/div&#62;
  53. &#34;);
  54. }
  55. else{
  56. echo(&#34;
  57. &#60;div style='position:absolute; left:250; top:400;'&#62;
  58.   &#60;table aling='center'&#62;
  59.     &#60;tr height='19px'&#62;
  60.       &#60;td&#62;&#60;p align='center'&#62;En unos días recibirá respuesta a su consulta. Muchas gracias.&#60;/p&#62;&#60;/td&#62;
  61.          &#60;td background='../IMG/buttons/ini.jpg' width='3' align='left'&#62;&#60;/td&#62;
  62.       &#60;td background='../IMG/buttons/med.jpg' width='100' align='center'&#62;&#60;a href='main.php?link=inicio'&#62;&#60;i&#62;Inicio&#60;/i&#62;&#60;/a&#62;&#60;/td&#62;
  63.       &#60;td background='../IMG/buttons/fin.jpg' width='3' align='right'&#62;&#60;/td&#62;
  64.       &#60;/tr&#62;
  65.   &#60;/table&#62;
  66. &#60;/div&#62;  
  67. &#34;);
  68. }
  69. ?&#62;
  70.  
  71. &#60;?php
  72. require(&#34;footer.php&#34;);
  73. echo(&#34;&#60;!-------------END MAIN-----------------------------&#62;&#34;);
  74. require(&#34;disconnect.php&#34;);
  75. ?&#62;
  76. &#60;/body&#62;
  77.  
  78. &#60;/html&#62;
  79.  
  80.  
  81.  

Bueno gracias por adelantado por las molestias que os estoy causando :losiento:  y gracias.


Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Validacion De Formulario En Jscript Y Envio En Php
« Respuesta #1 en: Viernes 15 de Diciembre de 2006, 18:25 »
0
Hola Kyrylys:

El problema que tenés es que agregaste al formulario un boton del tipo Submit, esto hace que el formulario se envíe una vez que terminó de ejecutar el script.
Tienes dos opciones:


1- Cambiar el tipo del boton de submit a button:

Citar
<input type="button" name="Submit" value="Enviar"onClick="javacript:check_form();">

2- O sacar el evento onclick del boton, y en el formulario llamar al script con el evento onsubmit:

Citar
<form method="post" action="envio.php" id="contacto" name="contacto" onSubmit="return check_form();">

Ojo, con esta última opción, si la función devuelve true el formulario se enviará, si devuelve false no. Si quieres que el formulario lo envíe el script, haz que devuelva siempre false.
En caso de que no devuelva nada, probablemente lo interprete como true (al menos el IE hace eso)..



Espero que te sirva.
Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

Kyrylys

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Re: Validacion De Formulario En Jscript Y Envio En Php
« Respuesta #2 en: Sábado 16 de Diciembre de 2006, 20:44 »
0
gracias probare de las dos formas que dices para ver como funcionan empiricamente.