Foros del Web » Programando para Internet » PHP »

Problema con re-captcha y un formulario.

Estas en el tema de Problema con re-captcha y un formulario. en el foro de PHP en Foros del Web. Hola, como notaran soy nuevo, les cuento que tengo el siguiente problema: Tengo un script de envio de formulario y le he querido agregar el ...
  #1 (permalink)  
Antiguo 21/11/2008, 12:55
 
Fecha de Ingreso: noviembre-2008
Mensajes: 18
Antigüedad: 15 años, 5 meses
Puntos: 0
Problema con re-captcha y un formulario.

Hola, como notaran soy nuevo, les cuento que tengo el siguiente problema:
Tengo un script de envio de formulario y le he querido agregar el servicio de captcha que brinda re-captcha. Cuando uno ingrresa mal el capcha aparece el mensaje de error y cuando lo ingresa bien te agradece, el problema es que en los dos casos me envia el mail.
Debe haber un error muy bobo pero soy nuevo en estoy y necesito su ayuda.
Les dejo el script.

Código PHP:
<center>

<html>


<body>
<?
require_once('recaptchalib.php');
//Llaves de la captcha
$captcha_publickey "...";
$captcha_privatekey "...";
$error_captcha=null;

if (
$_POST){
   
$captcha_respuesta recaptcha_check_answer ($captcha_privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
   if (
$captcha_respuesta->is_valid) {
      
//todo correcto
      //hacemos lo que se deba hacer una vez recibido el formulario válido
      
echo "Thanks for your comments.";
   }else{
      
//El código de validación de la imagen está mal escrito.
      
echo 'The captcha that you have entered is wrong. <br> <a href="/contact.php">Please Try again</a>';
      
$error_captcha $captcha_respuesta->error;
   }
}
?>

<? 
if (!$HTTP_POST_VARS){ 
?> 

<form action="contact.php" method=post name="contact.php" id="contact.php"> 
<font face="Verdana, Arial, Helvetica, sans-serif"><br> 
<font size="3">


<table bordercolordark="#2E9AFE" bordercolorlight="#81BEF7" border="8" cellpadding="1" cellspacing="1">

<tr>

<td>Full Name:</td>
<td></font></font> <font size="3"> 
<input type=text name="nombre" size=25> </td>

</tr>
<tr>


<td>Email:</font> </td>
<td><font size="3" >
<input type=text name="email" size=25> </td>

</tr>
<tr>
 

<td>Coments:</font> </td>
<td><font size="2" > 
<textarea name="coment" cols="25" rows="6"></textarea> </td>

</tr>
</table> 
</font>
<br>

<?
//escribimos en la página lo que nos devuelve recaptcha_get_html()
echo recaptcha_get_html($captcha_publickey$error_captcha);
?>
<br>
<input class="submit" input type="image" src="/menu/images/boton.png" input name="submit" value="Send">
</form>

<? 

}else{ 

//Estoy recibiendo el formulario, compongo el cuerpo 

$cuerpo "Formulario enviado desde la pagina web www.juanpivec.co.cc\n"

$cuerpo .= "Full Name: " $HTTP_POST_VARS["nombre"] . "\n"

$cuerpo .= "Email: " $HTTP_POST_VARS["email"] . "\n"

$cuerpo .= "Coments: " $HTTP_POST_VARS["coment"] . "\n"



//mando el correo... 

mail("[email protected]","Formulario recibido","Formulario recibido",$cuerpo); 






?> 
<!-- Fin del formulario de la página  --> 

</font>

</body>
</html>

</center>

<br>
<br>
<br>   
             
</div>
<? include("footer.php")?>

</body>
</head>
  #2 (permalink)  
Antiguo 21/11/2008, 13:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con re-captcha y un formulario.

Lo que pasa es que tu control de flujo esta mal, necesitas definir bien tu flujo de tu programa para que todo el proceso de envio de email solo ocurra cuando $captcha_respuesta->isvalid.

Saludos
  #3 (permalink)  
Antiguo 21/11/2008, 14:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 18
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con re-captcha y un formulario.

Me podrias ayudar, porque la verdad que recien empiezo con esto de programar. Podria decirme como queda.
Creo que la parte que envia el mail deberia estar despues del echo (si el codigo es correcto) pero me da error.
  #4 (permalink)  
Antiguo 21/11/2008, 14:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con re-captcha y un formulario.

Solamente dibuja el flujo de tu programa, si estas empezando lo mejor es que analizes el porque tu problema es muy basico, ve el siguiente pseudocodigo:
Código:
include_librerias();
if( envio_formulario() ) {
     if( captcha_valido() {
            enviar_mail();
     } else {
            mostrar_mensaje_error();
     }
} else {
     mostrar_formulario_contacto();
}
Saludos.
  #5 (permalink)  
Antiguo 21/11/2008, 15:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 18
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con re-captcha y un formulario.

Entiendo lo que me dices, pero no se como llevar eso a la practica.
  #6 (permalink)  
Antiguo 21/11/2008, 16:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con re-captcha y un formulario.

Ve tu código como si fueran bloques, al verlo asi podras entonces mover los bloques y obtener el resultado que esperas.

Saludos.
  #7 (permalink)  
Antiguo 21/11/2008, 16:28
 
Fecha de Ingreso: noviembre-2008
Mensajes: 18
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con re-captcha y un formulario.

if( envio_formulario() ) cual seria este bloque ?
  #8 (permalink)  
Antiguo 21/11/2008, 16:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con re-captcha y un formulario.

Si el formulario fue enviado, es decir donde compruebas si el usuario presiono el boton de "enviar".

Saludos
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 19:16.