Foros del Web » Programando para Internet » PHP »

Ayuda a ingnorante en PHP con reCAPTCHA

Estas en el tema de Ayuda a ingnorante en PHP con reCAPTCHA en el foro de PHP en Foros del Web. Buenas a todos. Por favor, necesito vuestra colaboración. Soy incapaz de hacer funcionar correctamente la validación reCAPTCHA para el formulario que estoy haciendo. He seguido ...
  #1 (permalink)  
Antiguo 07/01/2010, 05:36
Avatar de Maicro  
Fecha de Ingreso: agosto-2009
Ubicación: En el imperio de Gallardón I
Mensajes: 203
Antigüedad: 14 años, 8 meses
Puntos: 2
Ayuda a ingnorante en PHP con reCAPTCHA

Buenas a todos. Por favor, necesito vuestra colaboración. Soy incapaz de hacer funcionar correctamente la validación reCAPTCHA para el formulario que estoy haciendo. He seguido estos dos tutoriales, el de Pedro Ventura y el de desarrolloweb.com. Y los hilos encontrados al respecto en este foro no me han servido por mis limitaciones en PHP. Por todo ello, por favor, necesito una explicación muy clara de lo que debo hacer. Gracias.

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:
<?
if (!$HTTP_POST_VARS){
?>
Os muestro a continuación el código del archivo PHP que contiene el formulario y reCAPTCHA.

Código:
<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>
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.

Última edición por Maicro; 09/01/2010 a las 06:43 Razón: Se me olvidó poner el problema.
  #2 (permalink)  
Antiguo 25/07/2012, 01:04
Avatar de mariosm18  
Fecha de Ingreso: noviembre-2011
Ubicación: España
Mensajes: 82
Antigüedad: 12 años, 5 meses
Puntos: 6
Respuesta: Ayuda a ingnorante en PHP con reCAPTCHA

Hola, estoy teniendo el mismo problema, se envia el formulario sin que el contenido en el captcha esta correcto, lo pudiste resolver? me ayudaria mucho gracias!
__________________
Diseño web

Etiquetas: recaptcha
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 09:49.