El problema es que el formulario se envía sea correcto o incorrecto el texto introducido en el reCAPTCHA.
Creo que el problema reside al intentar incluir el código PHP en un formulario que ya había implementado. Este formulario ya hecho mandaba a una página dando las gracias por el envío, un correo al remitente notificando de la salida del formulario -a esperar de poder validar su funcionamiento con direcciones de correos distintas al dominio donde alojo la página- y otro correo al titular de la página. A su vez, esta nueva página de agradecimiento, también en PHP, a los cuatro segundos volvía a mandar a la página del formulario.
Me imagino que el problema viene de la función que realiza el botón Enviar del formulario, que debe de pegarse con la validación del reCAPTCHA. Los códigos del reCAPTCHA los he sacado de la propia página de reCAPTCHA -que han cambiado-, no del de los tutoriales. Aun así, algo los he personificado y a lo mejor también he errado en ello. En el directorio que aloja el formulario están estos tres archvio:
• contacto.php => El archivo que contiene el formulario y el reCAPTCHA.
• gracias.php => La página donde va el formulario una vez enviado y que a los cuatro segundos vuelve a la página del formulario.
• recaptchalib.php => El archivo original que se obtiene de reCAPTCHA que no he modificado.
Tras el <body> tengo insertado este código para que se visualice la página con el formulario:
Cita:
Os muestro a continuación el código del archivo PHP que contiene el formulario y reCAPTCHA. <?
if (!$HTTP_POST_VARS){
?>
if (!$HTTP_POST_VARS){
?>
Código:
Muchas gracias por vuestro interés. Deciros que la realización de esta página es un favor para un gran y apreciado amigo. No le cobro por ello. Saludos. <div id="tablaformulario"> <table summary="Formulario de contacto de Classic Co."> <form action="contacto.php" method="post"> <tr> <td> <label for="nombre">Nombre:</label> </td> <td> <input type="text" name="nombre" id="nombre" size="64" maxlength="60" /> </td> </tr> <tr> <td> <label for="email">Correo:</label> </td> <td> <input type="text" name="email" size="64" maxlength="60" value="@" /> </td> </tr> <tr> <td valign="top"> <label for="coment">Mensaje:</label> </td> <td> <textarea name="coment" cols="50" rows="6"></textarea> </td> </tr> <tr> <td> </td> <td> <? require_once('recaptchalib.php'); //Claves optenidas de http://recaptcha.net/api/getkey $publickey = "???"; $privatekey = "???"; # the response from reCAPTCHA $resp = null; # the error code from reCAPTCHA, if any $error = null; # was there a reCAPTCHA response? if ($_POST["recaptcha_response_field"]) { $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if ($resp->is_valid) { //Si es correcto hacemos lo que se deba hacer una vez recibido el formulario válido echo "Todo correcto"; } else { //El código de validación de la imagen está mal escrito. echo "Has escrito mal el texto"; $error = $resp->error; } } echo recaptcha_get_html($publickey, $error); ?> </td> </tr> <tr> <td> <input type="submit" value="Enviar" class="botonformulario" /> </td> <td> <input type="reset" value="Borrar" class="botonformulario" /> </td> </tr> </form> <? }else{ //Cuerpo del mensaje que recibe el dueño de la pagina $cuerpo = "El formulario enviado es el siguiente.\n"; $cuerpo .= "Nombre del remitente: " . $HTTP_POST_VARS["nombre"] . "\n"; $cuerpo .= "Dirección de correo del remitente: " . $HTTP_POST_VARS["email"] . "\n"; $cuerpo .= "Mensaje escrito: " . $HTTP_POST_VARS["coment"] . "\n"; $remitente = $HTTP_POST_VARS["email"]; //Mando el correo al dueño de la pagina $cabeceras = "From: $remitente\nReply-To: $remitente\n"; mail("??@??.??","Formulario enviado desde la página web",$cuerpo,$cabeceras); //Mando la notificacion de envio al remitente. OJO, el servidor debe permitir enviar mensajes a otros dominios. $respuesta = 'En Classic Co. hemos recibido tu formulario de contacto. En breve nos pondremos en contacto contigo. Gracias. Saludos.' ; mail($remitente,"Formulario recibido en Classic Co.",$cuerpo,$respuesta); //Redirecciono para dar las gracias por el envío print "<meta http-equiv=Refresh content=\"0 ; url=gracias.php\">"; } ?> </table> </div>