Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/09/2012, 13:35
Avatar de kimmy
kimmy
 
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Validar captcha antes de enviar email

Hola, tengo un mini formulario en el home que permite enviar un mensaje pero quiero agregar un captcha y no me valida. El form está aqui:

http://vamonosdevacaciones.com.ve/

Este es el código del form:

Código PHP:
Ver original
  1. $code = trim($_POST['code']);
  2. if(isset($_POST['save']))
  3.     {
  4.         if($_SESSION['captcha'] == $code)
  5.         {
  6.             echo "<span style='color:green'>Es correcto el captcha ingresado</span>";
  7.         }
  8.         else
  9.         {
  10.             echo "<span style='color:red'>Es incorrecto el captcha ingresado</span>";
  11.         }  
  12.     }
  13.  
  14.  
  15.         <form method="post" action="envio.php" id="myform" name="myform" onSubmit="return limpiar()" >
  16.         <fieldset id="caja_mensaje">
  17.         <legend>Contacto</legend>
  18.         <ol>
  19.             <li><label>Nombre:</label><input type="text" size="30" name="fname" /></li>
  20.             <li><label>E-mail:</label><input type="text" size="30" name="femail" /></li>
  21.             <li><label>Mensaje:</label><textarea name="fcomment" id="fcomment" rows="3" cols="25" onkeyup="limitarCaracter(this.id,80,'charTexto');"></textarea></li>
  22.             <li><div style="font-size:10px;" id="charTexto"></div></li><br />
  23.             <li><label></label><img src="captcha.php" width="100" height="30" vspace="3"></li><br />
  24.             <li><input name="code" type="text"/></li>
  25.             <li><input type="submit" name="save" value="Enviar"></li>
  26.         </ol>
  27.       </fieldset>
  28. </form>

este es el archivo de envio.php:

Código PHP:
Ver original
  1. $mensaje="";
  2. $mensaje.="Contacto desde:". "\n\n";
  3. $mensaje.="Nombre: ".$_POST['fname']."\n";
  4. $mensaje.="E-mail: ".$_POST['femail']."\n";
  5. $mensaje.="Mensaje: ".$_POST['fcomment']."\n";
  6. // definimos a quien se lo enviamos
  7. $email_destiny="[email protected]";
  8. $subject="Mensaje";
  9. // verificamos si se envió
  10. if (mail($email_destiny,$subject,$mensaje,"From: Contact<".$_POST['femail'].">")) {
  11.     echo '<p align="center" style="color:#263e88; font-family:Arial; font-size:11px;"><b>Gracias por su mensaje</b></p>';
  12. } else {
  13.     echo '<p align="center">Error '.$_POST['fname'].'</p>';
  14. }

y este es el codigo captcha.php:

Código PHP:
Ver original
  1. function texto($ancho)
  2. {
  3.      $cadena = "0123456789abcdefghijkmnñlopqrstwxyz";
  4.      for($i = 0; $i<$ancho;$i++)
  5.      {
  6.           $muestra .= $cadena{rand(0,35)};
  7.      }
  8.      return $muestra;
  9. }
  10.  
  11. // Define el ancho del texto usando un parametro (5) para la función creada anteriormente.
  12. $_SESSION['captcha'] = texto(5);
  13.  
  14. // La imagen gif de fondo.
  15. $captcha = imagecreatefromgif("images/bgcaptcha.gif");
  16.  
  17. // La localizacion de la imagen, lo dejamos en 0,0,0
  18. $letras = imagecolorallocate($captcha,0,0,0);
  19.  
  20. // Unir el texto en la imagen gif creada.
  21. imagestring($captcha,5,16,7,$_SESSION['captcha'],$letras);
  22.  
  23. // Pone la imagen en cabezera.
  24. header("Content-type: images/gif");
  25.  
  26. // Muestra la imagen.
  27. imagegif($captcha);

No entiendo porque no funciona.

Será que tengo que poner todo el código en envio.php?

y si es así, cómo debo colocarlo???

Gracias
__________________
Caminando con el corazón partío