Agregar protección y validación de formularios web con Captcha
Publicado por admin el 26 de Junio de 2009 en PHP/*php edit_post_link('Edit', ' | ', ''); */?>
Muchas veces tenemos un sitio web de negocios y estamos cansados de recibir spam en la página de Contacto, Contáctenos, o como sea llamada. ¿Es posible evitar el spam? ¿Es possible evitar que las máquinas zombies envien correos? Si, podemos detener estás tácticas.
Usted necesita instalar Captcha, en cual genera una imagen para verificar que es una persona la que está escribiendo realmente el formulario y no un sistema automatizado. Hay muchas librerías para PHP e incluso para páginas .ASPX. Yo recomiendo la librería PHP reCAPTCHA, la cual proporciona una forma simple de instalar CAPTCHA en sus formularios PHP. Esto puede hacer detener a los motores automatizados de spam. Esto funcionará con la API de reCAPTCHA.
Paso # 1: Obtener la librería reCAPTCHA
Visitando el sitio web de reCAPTCHA y registrándose para obtener la API key (esto es gratis). Usted tendrá su llave publica y llave privadas.
Paso # 2: Descargar e instalar reCAPTCHA PHP
Descargar la líbreria reCAPTCHA desde Google code repo:
$ cd /tmp
$ wget http://recaptcha.googlecode.com/files/recaptcha-php-1.10.zip
Unzip recaptcha-php-1.10.zip, ingresando:
$ unzip recaptcha-php-1.10.zip
Finalmente, copiar recaptchalib.php al directorio donde usted tiene sus formularios web. Por ejemplo: si usted posee la página contacto.php en /var/www/html, entonces debe copiar recaptchalib.php de la siguientes forma:
$ cp /tmp/recaptcha-php-1.10/recaptchalib.php /var/www/html
Paso # 3: Probar y verificar
Crear un script php como el siguiente:
<html><head>
<title>Formulario Simple de Correo</title>
</head><body>
<script>
function checkForm() {
if (document.forms.myphpform.elements['yname'].value.length == 0) {
alert('Por favor ingrese un valor para el campo "Nombre"');
return false;
}
if (document.forms.myphpform.elements['email'].value.length == 0) {
alert('Por favor ingrese un valor para el campo "Email"');
return false;
}
if (document.forms.myphpform.elements['message'].value.length == 0) {
alert('Por favor ingrese un valor para el campo mensaje "Message"');
return false;
}
return true;
}
</script>
<form action="?done=1" method="post" name="myphpform" onSubmit="return checkForm()" >
<table border=0>
<tr><td>Su Nombre:</td>
<td>
<input type="text" name="yname" size="50" maxlength="50" value="" /></td>
</tr><tr>
<td>Su Email:</td>
<td>
<input type="text" name="email" size="50" maxlength="50" value="" /></td>
</tr><tr>
<td>Mensaje:</td>
<td>
<input type="text" name="message" size="50" maxlength="50" value="" /></td>
</tr><tr>
<td>¿Es usted un humano?</td><td>
<?php
@require_once('recaptchalib.php');
$publickey = "YOUR-PUBLIC-KEY";
$privatekey = "YOUR-PRIVATE-KEY";
$resp = null;
$error = null;
if ($_POST["submit"]) {
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
$to="usted@ejemplo";
$subject="Feedback from ejemplo";
$body=" Mensaje via webform:
Nombre: " .$_POST["yname"] . "\n
Email: " .$_POST["email"] . "\n
Message: " .$_POST["message"] . "\n";
/* enviando correo */
mail($to,$subject,$body);
echo "
Correo Enviado!
";
exit(1);
} else {
echo "Lo sentimos pero no ha colocado el texto correctamente! Intente nuevamente...";
}
}
echo recaptcha_get_html($publickey, $error);
?>
<td/>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" name="submit" value="submit" /></td>
</tr>
</table>
</form>
</body>
</html>


1 comentario sobre Agregar protección y validación de formularios web con Captcha
Por diego josue el 4 de Agosto de 2009 en 15:26
ola men seguro que este es 1codigo de proteccion
Suscribirse
A los siguientes comentarios suscribiéndose a Agregar protección y validación de formularios web con Captcha Comments RSS feed.