Foros del Web » Programando para Internet » PHP »

Formulario Completo

Estas en el tema de Formulario Completo en el foro de PHP en Foros del Web. BUENO, quedarían así: <?php session_start();//verifico captcha if ($_SESSION['tmptxt'] != $_POST['tmptxt']) { echo "<script>alert(Codigo CAPTCHA INVALIDO)</script>";/ echo "<script>location.href=javascript :history.back ()</script>"; exit; } ...y así con todos ...

  #31 (permalink)  
Antiguo 03/10/2009, 17:13
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Formulario Completo

BUENO, quedarían así:

<?php session_start();//verifico captcha

if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
echo "<script>alert(Codigo CAPTCHA INVALIDO)</script>";/
echo "<script>location.href=javascript:history.back ()</script>";
exit;
}
...y así con todos

el exit debe estar dentro de los IF .. PERO, de todas formas, puedes BORRAR todos los exit sin problemas .. funcionará igual... :)
__________________
-----------------------------------
Éxitos !!! .. joao
  #32 (permalink)  
Antiguo 04/10/2009, 06:02
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 18 años
Puntos: 3
Respuesta: Formulario Completo

Buenas, volvemos a la carga :)

pues mira he quitado todos los exit; como me has dicho y ahora al menos me sale el mensaje de:
El mensaje se envió correctamente

Pero sigue sin validarme ni nada. Te adjunto el codigo como lo tengo:
Código procesa.php:
Ver original
  1. <?php session_start();//verifico captcha
  2. if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
  3. echo "<script>alert(Codigo CAPTCHA INVALIDO)</script>";//mensaje de error correspondiente
  4. echo "<script>location.href=javascript:history.back ()</script>";//con esto no se pierden los datos del FORM
  5. }
  6.  
  7. //**************** COMPRUEBO NOMBRE VACIO **********************
  8. if (!($_POST['nombre'])){
  9. echo "<script>alert(No deje nombre vacio)</script>";
  10. echo "<script>location.href=javascript:history.back ()</script>";
  11.  
  12. }
  13.  
  14. //**************** COMPRUEBO EMAIL VACIO Y VALIDO **********************
  15. if (!($_POST['email'])){
  16. echo "<script>alert(No deje email vacio)</script>";
  17. echo "<script>location.href=javascript:history.back ()</script>";
  18.  
  19. }
  20.  
  21. elseif(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$_POST['email'])){
  22. echo "<script>alert(El email ingresado es inválido)</script>";
  23. echo "<script>location.href=javascript:history.back ()</script>";
  24. //acá verifico que el email sea VALIDO, que tenga la forma [email protected]
  25. }
  26.  
  27. //**************** COMPRUEBO RADIO BOTON MARCADO **********************
  28. if (!($_POST['karate'])){
  29. echo "<script>alert(No deje email vacio)</script>";
  30. echo "<script>location.href=javascript:history.back ()</script>";
  31.  
  32. }
  33.  
  34. //**************** COMPRUEBO ciudad **********************
  35. if (!($_POST['ciudad'])){
  36. echo "<script>alert(No deje ciudad vacio)</script>";
  37. echo "<script>location.href=javascript:history.back ()</script>";
  38.  
  39. }
  40.  
  41. //**************** COMPRUEBO comentarios MARCADO **********************
  42. if (!($_POST['comentarios'])){
  43. echo "<script>alert(No deje email vacio)</script>";
  44. echo "<script>location.href=javascript:history.back ()</script>";
  45.  
  46. }
  47.  
  48. //**************** COMPRUEBO si aceptó las condiciones **********************
  49. if (!($_POST['A'])){
  50. echo "<script>alert(Debe aceptar las condiciones)</script>";
  51. echo "<script>location.href=javascript:history.back ()</script>";
  52.  
  53. }
  54.  
  55. //una vez que verifique todo, pues envío el email.
  56. //Declaras hacia donde se envía el correo, el Destinatario
  57. $recipiente = "[email protected]";
  58.  
  59. //defines el Asunto del correo
  60. $asunto = "Contacto desde la Pagina WEB ";
  61.  
  62. //defines el cuerpo del mensaje
  63. $message ="nombre: ".$_POST['nombre']."<br>";
  64. $message .="email: ".$_POST['email']."<br>";
  65. $message .="preferencias: ".$_POST['karate']."<br>";
  66. $message .="ciudad: ".$_POST['ciudad']."<br>";
  67. $message .="comentarios: ".$_POST['comentarios']."<br>";
  68.  
  69. $message = stripslashes($message);
  70.  
  71. //haces los encabezados
  72. $headers = "MIME-Version: 1.0\r\n";
  73. $headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
  74. $headers .= "From: $email\r\n";
  75. $headers .= "Repaly-to: $email\r\n";
  76. $headers .= "Cc: ".$_POST['email']."\r\n";//le envías una copia al remitente
  77.  
  78. //chao email!!
  79. mail($recipiente,$asunto,$message,$headers);
  80.  
  81. echo "El mensaje se envió correctamente";
  82. ?>
  #33 (permalink)  
Antiguo 04/10/2009, 08:48
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 8
Sonrisa Respuesta: Formulario Completo

hola ... en tu página que procesa saca todo y solo pon lo siguiente:

echo $_POST['tmptxt']);
echo $_POST['nombre']);
echo $_POST['email']);
echo $_POST['karate']);
echo $_POST['ciudad']);
echo $_POST['comentarios']);
echo $_POST['A']);

con esto vas a recibir todos los datos de tu FORM, tu código está perfecto, debes recibir todos los datos así como está, y mostrarte los mensajes de alerta para cada caso. pero como dices que no recibe nada, has esto, este código simplemente te imprime en pantalla todo lo que viene del FORM ...
__________________
-----------------------------------
Éxitos !!! .. joao
  #34 (permalink)  
Antiguo 04/10/2009, 09:26
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 18 años
Puntos: 3
Hola,
tenia un error perdona, el codigo me envia el formulario a mi email y tambien al usuario correctamente

pero no me valida nada, puedo darle a enviar sin rellenar nada, no me da ningun mensaje de "error falta el captcha" o el email, ....
Me sale haga lo que haga "El mensaje se envió correctamente"

Ya queda menos!

Muchas gracias

(Lee tambien mi post anterior)
Creo que el error esta en las variables, pues si en el archivo procesa.php pongo el codigo qe me has dicho antes de:

echo $_POST['tmptxt']);
echo $_POST['nombre']);
echo $_POST['email']);
echo $_POST['karate']);
echo $_POST['ciudad']);
echo $_POST['comentarios']);
echo $_POST['A']);


al enviar un formulario me sale esto de abajo: ¿no me deberia salir el nombre de lo que he elegido?:

echo $_POST['tmptxt']); echo $_POST['nombre']); echo $_POST['email']); echo $_POST['karate']); echo $_POST['ciudad']); echo $_POST['comentarios']); echo $_POST['A']);

Última edición por GatorV; 04/10/2009 a las 13:49
  #35 (permalink)  
Antiguo 04/10/2009, 17:24
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 8
Sonrisa Respuesta: Formulario Completo

hola .... acá:

echo $_POST['tmptxt']); le sobra el ) ..el paréntisis ...he mirado el código 100 veces y no le veo error alguno .. es extraño ... además, si envía el email, es pq está recibiendo los datos, pues la dirección la recoge de el mismo FORM...sácale el ) que le sobra y mira a ver si imprime bien tus variables ... e imagino que si ...
__________________
-----------------------------------
Éxitos !!! .. joao
  #36 (permalink)  
Antiguo 04/10/2009, 23:39
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Formulario Completo

Hola amigo

tus alerts están mal hechos, ya que le faltan las comillas
Código PHP:
echo "<script>alert(El email ingresado es inválido)</script>"
por
Código PHP:
echo '<script>alert("El email ingresado es invalido")</script>'
Saludos
__________________
krowmx
Hostings y Dominios
Tú defines la idea, nosotros la desarrollamos
  #37 (permalink)  
Antiguo 05/10/2009, 01:30
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 18 años
Puntos: 3
Respuesta: Formulario Completo

Hola joaowizard,
si le quito el parentesis a:
Código procesa.php:
Ver original
  1. echo $_POST['tmptxt'];
  2. echo $_POST['nombre'];
  3. echo $_POST['email'];
  4. echo $_POST['karate'];
  5. echo $_POST['ciudad'];
  6. echo $_POST['comentarios'];
  7. echo $_POST['A'];

me sale esto:

echo $_POST['tmptxt']; echo $_POST['nombre']; echo $_POST['email']; echo $_POST['karate']; echo $_POST['ciudad']; echo $_POST['comentarios']; echo $_POST['A'];

Gracias KrowMx, por interesarte, pero he quitado las comillas como me dijiste y tampoco sale. Me sale lo de siempre:
Su mensaje ha sido enviado.

Yo creo que el problema esta en el codigo de formulario. Mirar vuelvo a poner los archivos a ver si podeis probarlos vosotros en vuestro servidor, y será mucho más rápido. Gracias por vuestro apoyo!

Código formulario.php:
Ver original
  1. <html><head><title>formulario</title></head>
  2.  
  3. <body>
  4. <form name="ejemplo" action="procesa.php" method="post">
  5. <p>Nombre: <input type="text" name="Nombre" value="nombre">(obligatorio)</p>
  6. <p>email: <input type="text" name="email" value="email">(obligatorio)</p>
  7. <p><input type="radio" name="karate">Baloncesto <input type="radio" name="karate">Karate <input type="radio" name="karate">Futbol &nbsp;(obligatorio)</p>
  8. <p>Aceptas las condiciones: <input type="checkbox" name="A">Si&nbsp;&nbsp;&nbsp;(obligatorio)</p>
  9. <p>ciudad: <select name="ciudad" size="1">
  10. <option>Barcelona</option>
  11. <option>Madrid</option>
  12. <option>Sevilla</option>
  13. </select>(obligatorio)</p>
  14. <p>Comentarios: <textarea name="comentarios" rows="2"></textarea>(obligatorio)</p>
  15. <p><img src="captcha.php" width="100" height="30"></p>
  16. <p><input name="tmptxt" type="text">
  17. (obligatorio)</p>
  18. <p>
  19. <label>
  20. <input type="submit" name="button" id="button" value="Enviar">
  21. </label>
  22. </p>
  23. </form>
  24. </body>

Código procesa.php:
Ver original
  1. <?php session_start();//verifico captcha
  2. if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
  3. echo '<script>alert(Codigo CAPTCHA INVALIDO)</script>';//mensaje de error correspondiente
  4. echo '<script>location.href=javascript:history.back ()</script>';//con esto no se pierden los datos del FORM
  5. }
  6.  
  7. //**************** COMPRUEBO NOMBRE VACIO **********************
  8. if (!($_POST['nombre'])){
  9. echo '<script>alert(No deje nombre vacio)</script>';
  10. echo '<script>location.href=javascript:history.back ()</script>';
  11.  
  12. }
  13.  
  14. //**************** COMPRUEBO EMAIL VACIO Y VALIDO **********************
  15. if (!($_POST['email'])){
  16. echo '<script>alert(No deje email vacio)</script>';
  17. echo '<script>location.href=javascript:history.back ()</script>';
  18.  
  19. }
  20.  
  21. elseif(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$_POST['email'])){
  22. echo '<script>alert(El email ingresado es inválido)</script>';
  23. echo '<script>location.href=javascript:history.back ()</script>';
  24. //acá verifico que el email sea VALIDO, que tenga la forma [email protected]
  25. }
  26.  
  27. //**************** COMPRUEBO RADIO BOTON MARCADO **********************
  28. if (!($_POST['karate'])){
  29. echo '<script>alert(No deje email vacio)</script>';
  30. echo '<script>location.href=javascript:history.back ()</script>';
  31.  
  32. }
  33.  
  34. //**************** COMPRUEBO ciudad **********************
  35. if (!($_POST['ciudad'])){
  36. echo '<script>alert(No deje ciudad vacio)</script>';
  37. echo '<script>location.href=javascript:history.back ()</script>';
  38.  
  39. }
  40.  
  41. //**************** COMPRUEBO comentarios MARCADO **********************
  42. if (!($_POST['comentarios'])){
  43. echo '<script>alert(No deje email vacio)</script>';
  44. echo '<script>location.href=javascript:history.back ()</script>';
  45.  
  46. }
  47.  
  48. //**************** COMPRUEBO si aceptó las condiciones **********************
  49. if (!($_POST['A'])){
  50. echo '<script>alert(Debe aceptar las condiciones)</script>';
  51. echo '<script>location.href=javascript:history.back ()</script>';
  52.  
  53. }
  54.  
  55. //una vez que verifique todo, pues envío el email.
  56. //Declaras hacia donde se envía el correo, el Destinatario
  57. $recipiente = "[email protected]";
  58.  
  59. //defines el Asunto del correo
  60. $asunto = "Contacto desde la Pagina WEB ";
  61.  
  62. //defines el cuerpo del mensaje
  63. $message ="nombre: ".$_POST['nombre']."<br>";
  64. $message .="email: ".$_POST['email']."<br>";
  65. $message .="preferencias: ".$_POST['karate']."<br>";
  66. $message .="ciudad: ".$_POST['ciudad']."<br>";
  67. $message .="comentarios: ".$_POST['comentarios']."<br>";
  68.  
  69. $message = stripslashes($message);
  70.  
  71. //haces los encabezados
  72. $headers = "MIME-Version: 1.0\r\n";
  73. $headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
  74. $headers .= "From: $email\r\n";
  75. $headers .= "Repaly-to: $email\r\n";
  76. $headers .= "Cc: ".$_POST['email']."\r\n";//le envías una copia al remitente
  77.  
  78. //chao email!!
  79. mail($recipiente,$asunto,$message,$headers);
  80.  
  81. echo "El mensaje se envió correctamente";
  82. ?>

Código captcha.php:
Ver original
  1. <?php session_start();
  2. function captcha($length) {
  3. $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
  4. for($i=0;$i<$length;$i++) {
  5. $key .= $pattern{rand(0,50)};
  6. }
  7. return $key;
  8. }
  9.  
  10.  
  11. $_SESSION['tmptxt'] = captcha(8);
  12. $captcha = imagecreatefromgif("fondocaptcha.gif");
  13. $colText = imagecolorallocate($captcha, 0, 0, 0);
  14. imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText);
  15. header("Content-type: image/gif");
  16. imagegif($captcha);
  17. ?>
  #38 (permalink)  
Antiguo 06/10/2009, 03:43
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 18 años
Puntos: 3
Respuesta: Formulario Completo

El formulario esta mal y tambien las validaciones:

A fin de encontrar los errores, he simplificado el formulario.
Para ello he cambiado el archivo formulario.php por:
Código PHP:
<html><head><title>formulario</title></head>

<
body>
<
form ACTION="procesa.php" METHOD="POST">
Nombre:<INPUT TYPE="text" NAME="nombre">(obligatorio)<BR>
email: <input type="text" name="email" >(obligatorio)<BR>
<
INPUT TYPE="submit" VALUE="Enviar">

</
form>


</
body>
</
html
Y el archivo procesa.php por:
Código PHP:
<?php session_start();//verifico captcha
if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
echo 
'<script>alert(Codigo CAPTCHA INVALIDO)</script>';//mensaje de error correspondiente
echo "<script>location.href=javascript:history.back ()</script>";//con esto no se pierden los datos del FORM
}

//**************** COMPRUEBO NOMBRE VACIO **********************
if (!($_POST['nombre'])){
echo 
'ERROR el Nombre es obligatorio';
echo 
"<script>location.href=javascript:history.back ()</script>";
echo 
"<br>";
}

//**************** COMPRUEBO EMAIL VACIO Y VALIDO **********************
if (!($_POST['email'])){
echo 
'ERROR el Email es obligatorio';
echo 
"<script>location.href=javascript:history.back ()</script>";

}


//una vez que verifique todo, pues envÃ*o el email.
//Declaras hacia donde se envÃ*a el correo, el Destinatario
$recipiente "[email protected]";

//defines el Asunto del correo
$asunto "Contacto desde la Pagina WEB ";

//defines el cuerpo del mensaje
$message ="nombre: ".$_POST['nombre']."<br>";
$message .="email: ".$_POST['email']."<br>";
$message .="preferencias: ".$_POST['karate']."<br>";
$message .="ciudad: ".$_POST['ciudad']."<br>";
$message .="comentarios: ".$_POST['comentarios']."<br>";

$message stripslashes($message);

//haces los encabezados
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
$headers .= "From: $email\r\n";
$headers .= "Repaly-to: $email\r\n";
$headers .= "Cc: ".$_POST['email']."\r\n";//le envÃ*as una copia al remitente

//chao email!!
mail($recipiente,$asunto,$message,$headers);
echo 
$_POST['nombre'];
echo 
'<br>';
echo 
$_POST['email'];
echo 
'<br>';
echo 
"El mensaje se envio correctamente";
?>
Código Si el formuario lo dejo en BLANCO me sale::
Ver original
  1. ERROR el Nombre es obligatorio
  2. ERROR el Email es obligatorio
  3.  
  4. El mensaje se envio correctamente


Código Y si lo RELLENO me sale::
Ver original
  1. juan
  2.  
  3. El mensaje se envio correctamente

Lo que quiere decir que ahora las variables si que se pasan al archivo procesa.php, pero sin embargo este el formulario rellenado o no, siempre lo envia

¿Alguien puede ayudar?

Muchas gracias.

Última edición por manupalaya; 06/10/2009 a las 04:01
  #39 (permalink)  
Antiguo 06/10/2009, 06:51
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Formulario Completo

hola manupalaya .. bueno, a veces las cosas mas simples y los errores mas fáciles se tornan dificiles de ver .. me tomé un tiempo, hice todo en mi PC, y probé, efectivamente no funcionaban las alertas, tu FORM no tiene problemas, el problema estaba en los javascript que metimos en las alertas, tenían problemas de comillas y de ;, la forma de los mismos debe ser así:

echo "<script>window.alert('Debe llenar el campo XXXXX');</script>;";
echo "<script>location.href='javascript:history.back()' ;</script>;";

Respeta todas las comillas simples y dobles y los ;
...ya probé todo como te dije en mi PC y funciona de 100 puntos ... salu2 !!!!
__________________
-----------------------------------
Éxitos !!! .. joao
  #40 (permalink)  
Antiguo 06/10/2009, 09:39
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 18 años
Puntos: 3
Respuesta: Formulario Completo

Funciona!!!

Pero veo que estamos validando con Ventanitas de script, ¿No se puede validar con php? Esta muy chulo ese efecto que te rebota otra vez al formulario y conserva los datos ya rellenados ¿No se podría hacer que cuando rebote haya una letras arriba que diga "FALTA EL NOMBRE, FALTA EL EMAIL"?

Además después de pulsar el botón de enviar o cuando valida, sale en la parte de arriba de la pagina este mensaje de Error:

Código Error:
Ver original
  1. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homeformfull/procesa.php:1) in /homeformfull/procesa.php on line 1

Gracias, gracias :)
  #41 (permalink)  
Antiguo 06/10/2009, 10:14
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 8
Sonrisa Respuesta: Formulario Completo

buenísimo !!!! ...

bueno, primero la verificación la haces con php no con javascript, lo que haces con javascript es el mensaje de alerta y el retorno sin borrar los datos del FORM. Lo otro que quieres poner un mensaje de error sobre el campo que tiene el error, pues hay que hacer algunos cambios, y para esto sería mejor usar AJAX, y no creo que desees cambiar muchas cosas después de tanta odisea jejejeje, lo que si puedes hacer cuando tira el mensaje de error poner el FOCUS del script y te ponga el cursor en el campo con problema. Por último, el error que te tira es pq "creo" que no puede crear la sesión en esa página, intenta agregando esto session_start(); en la PRIMERA línea de tu página que tiene FORM ... salu2!!
__________________
-----------------------------------
Éxitos !!! .. joao
  #42 (permalink)  
Antiguo 06/10/2009, 12:34
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 18 años
Puntos: 3
Respuesta: Formulario Completo

Hola joaowizard,
gracias por tus consejos del focus, lo itentare poner, pero más adelante, pues ya he puesto lo que me has dicho arriba de formulario.php

<?php session_start(); ?>

pero me da el error:

Código Error:
Ver original
  1. session_start() [function.session-start] Cannot send session cache limiter - headers already sent (output started at home/formfull/procesa.php) on line 1

Además he observado que el email siempre lo envia este validado o no.
Es decir si yo soy un usuario y le doy a enviar, y luego sale el Alert y por ejemplo cancelo, aun así el formulario me lo envia aunque sea vacio.

Agradezco mucho tu ayuda. Te paso de nuevo los formularios

Código PHP:
<?php session_start(); ?>
<html><head><title>formulario</title></head>
      <body>
      <form name="ejemplo" action="procesa.php" method="post">
      <p>Nombre: <input type="text" name="nombre">(obligatorio)</p>
      <p>email: <input type="text" name="email">(obligatorio)</p>
      <p>Habilidades:<input type="radio" name="karate">Baloncesto <input type="radio" name="karate">Karate <input type="radio" name="karate">Futbol &nbsp;(obligatorio)</p>
      <p>Aceptas las condiciones: <input type="checkbox" name="aceptas">Si(obligatorio)</p>
      <p>ciudad: <select name="ciudad" size="1">
      <option>Barcelona</option>
      <option>Madrid</option>
      <option>Sevilla</option>
      </select>(obligatorio)</p>
      <p>Comentarios: <textarea name="comentarios" rows="2"></textarea>(obligatorio)</p>
      <p><img src="captcha.php" width="100" height="30"></p>
      <p><input name="tmptxt" type="text">
      (obligatorio)</p>
      <p>
      <label>
      <input type="submit" name="button" id="button" value="Enviar">
      </label>
      </p>
      </form>
      </body>
Procesa.php
Código PHP:
      <?php session_start();//verifico captcha
      
if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
      echo 
"<script>window.alert('IMAGEN DE SEGURIDAD INVALIDA');</script>;";;//mensaje de error correspondiente
      
echo "<script>location.href='javascript:history.back()' ;</script>;";//con esto no se pierden los datos del FORM
      
}
      
//**************** COMPRUEBO NOMBRE VACIO **********************
      
if (!($_POST['nombre'])){
      echo 
"<script>window.alert('Debe llenar el campo Nombre');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      }

      
//**************** COMPRUEBO EMAIL VACIO Y VALIDO **********************
      
if (!($_POST['email'])){
      echo 
"<script>window.alert('Debe llenar el campo Email');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      }

      elseif(!
eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$_POST['email'])){
      echo 
"<script>window.alert('El email ingresado es invalido');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      
//acá verifico que el email sea VALIDO, que tenga la forma [email][email protected][/email]
      
}
      
//**************** COMPRUEBO RADIO BOTON MARCADO **********************
      
if (!($_POST['karate'])){
      echo 
"<script>window.alert('Debe llenar el campo Habilidades Radio buton');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      }
      
//**************** COMPRUEBO si aceptas las condiciones **********************
      
if (!($_POST['aceptas'])){
      echo 
"<script>window.alert('Debe llenar el campo Aceptar las condiciones');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      }
      
//**************** COMPRUEBO ciudad **********************
      
if (!($_POST['ciudad'])){
      echo 
"<script>window.alert('Debe llenar el campo ciudad');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      }
      
//**************** COMPRUEBO comentarios MARCADO **********************
      
if (!($_POST['comentarios'])){
      echo 
"<script>window.alert('Debe llenar el campo comentarios');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      }

      
//una vez que verifique todo, pues envÃ*o el email.
      //Declaras hacia donde se envÃ*a el correo, el Destinatario
      
$recipiente "[email protected]";
      
//defines el Asunto del correo
      
$asunto "Contacto desde la Pagina WEB ";
      
//defines el cuerpo del mensaje
      
$message ="nombre: ".$_POST['nombre']."<br>";
      
$message .="email: ".$_POST['email']."<br>";
      
$message .="preferencias: ".$_POST['karate']."<br>";
      
$message .="ciudad: ".$_POST['ciudad']."<br>";
      
$message .="comentarios: ".$_POST['comentarios']."<br>";
      
$message stripslashes($message);
      
//haces los encabezados
      
$headers "MIME-Version: 1.0\r\n";
      
$headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
      
$headers .= "From: $email\r\n";
      
$headers .= "Repaly-to: $email\r\n";
      
$headers .= "Cc: ".$_POST['email']."\r\n";//le envÃ*as una copia al remitente
      //chao email!!
      
mail($recipiente,$asunto,$message,$headers);
      echo 
"El mensaje se envio correctamente";
      
?>
  #43 (permalink)  
Antiguo 06/10/2009, 14:42
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 8
Sonrisa Respuesta: Formulario Completo

hola .. .bueno, tienes razón, el email siempre se envía, es por eso que necesitábamos el exit(); dentro de todos los IF, pues eso evita que siga ejecutando el código, ponlos nuevamente y chao ese problema. El error de sesión es que no está pudiendo abrir la sesión.. es extraño, porque la sesión se abre cuando llamas al captcha ... haz la prueba, saca esa línea ded procesa, y prueba si valida bien el captcha, es decir, pon un captcha mal a ver si te tira el mensaje de error ...
__________________
-----------------------------------
Éxitos !!! .. joao
  #44 (permalink)  
Antiguo 06/10/2009, 15:20
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 18 años
Puntos: 3
Respuesta: Formulario Completo

Bien, bien....
bueno pues lo de los exit ha funcionado.
Y lo del <?php session_start(); ?> tambien funciona poniendolo arriba de formulario.php

Por cierto seguro que tienes algo mejor que los Alert, mira he logrado hacer esto dentro de los IF, pero resulta que al darle a volver el formulario esta vacio :(

if (!($_POST['nombre'])){
echo "el nombre esta en blanco";
echo '<a href="formulario.php">Atras</a>';
exit();
}

¿me sugieres algo para que se conserven los datos al darle para atras y que no sean scripts? (lo digo por que he probado a desabilitar javascript y no furru el formulario)

Muchas gracias por tu paciencia :)

Última edición por manupalaya; 06/10/2009 a las 16:34
  #45 (permalink)  
Antiguo 06/10/2009, 16:45
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Formulario Completo

hola ... claro, cuando haces esto:
echo '<a href="formulario.php">Atras</a>';

estás llamando al form otra vez desde el server, es por eso que el FORM lo ves en blanco, sin embargo, cuando lo haces con el javascript como vimos antes pues la petición de ir "atrás" no llega hasta el servidor, pues ese javascript solo se ejecuta localmente, hay otras formas de que regrese sin eliminar los datos del form, pero todas llevan javascript o ajax, ambas se puede incluso hasta poner cosas tan ingeniosas como pintar de rojo el campo con problemas, ponerle un mensaje de error, en fin, tantas cosas, pero ya sería hacer un cambio estructural al formulario que tienes, que de hecho está bien completo.
Te recomiendo, por estar comenzando con todo este tema, que no te compliques mas, al menos por ahora, profundiza bien en todo el formulario que tienes hasta ahora, y luego vete complicando poco a poco, es 99% php lo que tienes, tal y como querías. Comenzar desde cero algo es bien dificil, y aplaudo que estés intentandolo, yo igual todos los días quiero aprender algo bueno y me sumerjo muchas veces en cosas que ni idea tengo, y créeme que estos foros me han ayudado mucho, pero el tema es que debemos venir al foro ya con cosas puntuales. Bueno, creo que me extendí demasiado jejeje ... un salu2!!!
__________________
-----------------------------------
Éxitos !!! .. joao
  #46 (permalink)  
Antiguo 07/10/2009, 02:02
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 18 años
Puntos: 3
Respuesta: Formulario Completo

Hola joaowizard,

Llevas razón, este es el último post. Además aprovecho para darte las gracias, por tener tanta paciencia y explicar a un novato, paso a paso como hacer un Formulario Completo.

A continuación dejo una breve explicación para otros y el "Codigo famoso"

CARASTERISTICAS DEL FORMULARIO
Tras rellenar envia un email al Administrador de la web, y al Usuario
Tiene una imagen Captcha para impedir Spam
Todos los campos se validan y sale una Ventana si algún campo esta en blanco.
Es un ejemplo completo que incluye select, radio button, checkbox, textarea
Si el formulario esta mal rellenado vuelve para atrás y los datos se conservan
Si se rellena correctamente sale un mensaje de "Su email se ha enviado correctamente"


NOTAS:

Debes tener una imagen cualquiera llamada "fondocaptcha.gif" de por ejemplo 100x30pixeles, y guardala junto con los demás archivos.
Crea 3 archivos llamados "formulario.php", "procesa.php" y "captcha.php"
y pegales los codigos correspondientes, que abajo se detallan.
Subelos a una carpeta de tu servidor y pon la ruta http://www.tuweb.org/formulario.php


a disfrutar!

CODIGOS CORTA Y PEGA

formulario.php
Código PHP:
<?php session_start(); ?>
<html><head><title>formulario</title></head>
      <body>
      <form name="ejemplo" action="procesa.php" method="post">
      <p>Nombre: <input type="text" name="nombre">(obligatorio)</p>
      <p>email: <input type="text" name="email">(obligatorio)</p>
      <p>Habilidades:<input type="radio" name="karate">Baloncesto <input type="radio" name="karate">Karate <input type="radio" name="karate">Futbol &nbsp;(obligatorio)</p>
      <p>Aceptas las condiciones: <input type="checkbox" name="aceptas">Si(obligatorio)</p>
      <p>ciudad: <select name="ciudad" size="1">
      <option>Barcelona</option>
      <option>Madrid</option>
      <option>Sevilla</option>
      </select>(obligatorio)</p>
      <p>Comentarios: <textarea name="comentarios" rows="2"></textarea>(obligatorio)</p>
      <p><img src="captcha.php" width="100" height="30"></p>
      <p><input name="tmptxt" type="text">
      (obligatorio)</p>
      <p>
      <label>
      <input type="submit" name="button" id="button" value="Enviar">
      </label>
      </p>
      </form>
      </body>
procesa.php
Código PHP:
<?php session_start();//verifico captcha
      
if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
      echo 
"<script>window.alert('IMAGEN DE SEGURIDAD INVALIDA');</script>;";;//mensaje de error correspondiente
      
echo "<script>location.href='javascript:history.back()' ;</script>;";//con esto no se pierden los datos del FORM
      
exit();
      }
      
//**************** COMPRUEBO NOMBRE VACIO **********************
      
if (!($_POST['nombre'])){
      echo 
"<script>window.alert('Debe llenar el campo Nombre');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }

      
//**************** COMPRUEBO EMAIL VACIO Y VALIDO **********************
      
if (!($_POST['email'])){
      echo 
"<script>window.alert('Debe llenar el campo Email');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }

      elseif(!
eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$_POST['email'])){
      echo 
"<script>window.alert('El email ingresado es invalido');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      
//acá verifico que el email sea VALIDO, que tenga la forma [email][email protected][/email]
      
}
      
//**************** COMPRUEBO RADIO BOTON MARCADO **********************
      
if (!($_POST['karate'])){
      echo 
"<script>window.alert('Debe llenar el campo Habilidades Radio buton');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }
      
//**************** COMPRUEBO si aceptas las condiciones **********************
      
if (!($_POST['aceptas'])){
      echo 
"<script>window.alert('Debe llenar el campo Aceptar las condiciones');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }
      
//**************** COMPRUEBO ciudad **********************
      
if (!($_POST['ciudad'])){
      echo 
"<script>window.alert('Debe llenar el campo ciudad');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }
      
//**************** COMPRUEBO comentarios MARCADO **********************
      
if (!($_POST['comentarios'])){
      echo 
"<script>window.alert('Debe llenar el campo comentarios');</script>;";
      echo 
"<script>location.href='javascript:history.back()' ;</script>;";
      exit();
      }

      
//una vez que verifique todo, pues envÃ*o el email.
      //Declaras hacia donde se envÃ*a el correo, el Destinatario
      
$recipiente "[email protected]";
      
//defines el Asunto del correo
      
$asunto "Contacto desde la Pagina WEB ";
      
//defines el cuerpo del mensaje
      
$message ="nombre: ".$_POST['nombre']."<br>";
      
$message .="email: ".$_POST['email']."<br>";
      
$message .="preferencias: ".$_POST['karate']."<br>";
      
$message .="ciudad: ".$_POST['ciudad']."<br>";
      
$message .="comentarios: ".$_POST['comentarios']."<br>";
      
$message stripslashes($message);
      
//haces los encabezados
      
$headers "MIME-Version: 1.0\r\n";
      
$headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
      
$headers .= "From: $email\r\n";
      
$headers .= "Repaly-to: $email\r\n";
      
$headers .= "Cc: ".$_POST['email']."\r\n";//le envÃ*as una copia al remitente
      //chao email!!
      
mail($recipiente,$asunto,$message,$headers);
      echo 
"El mensaje se envio correctamente";
      
?>

captcha.php
Código PHP:
<?php session_start();
function 
captcha($length) {
$pattern "1234567890abcdefghijklmnopqrstuvwxyz";
for(
$i=0;$i<$length;$i++) {
$key .= $pattern{rand(0,50)};
}
return 
$key;
}


$_SESSION['tmptxt'] = captcha(8);
$captcha imagecreatefromgif("fondocaptcha.gif");
$colText imagecolorallocate($captcha000);
imagestring($captcha5167$_SESSION['tmptxt'], $colText);
header("Content-type: image/gif");
imagegif($captcha);
?>
  #47 (permalink)  
Antiguo 07/10/2009, 09:56
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 15 años, 8 meses
Puntos: 5
De acuerdo Respuesta: Formulario Completo

Cita:
Iniciado por manupalaya Ver Mensaje
Hola joaowizard,


Gracias KrowMx, por interesarte, pero he quitado las comillas como me dijiste y tampoco sale. Me sale lo de siempre:
Su mensaje ha sido enviado.

?>
Amigo tal vez se entendió mal mi post, pero yo te mencionaba que le pusieras las comillas a los javascript, puesto que es la sintaxis correcta para los alert

un saludo y enhorabuena!!
__________________
krowmx
Hostings y Dominios
Tú defines la idea, nosotros la desarrollamos
  #48 (permalink)  
Antiguo 07/10/2009, 10:20
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Formulario Completo

:apla uso:
__________________
-----------------------------------
Éxitos !!! .. joao
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 20:23.