¿Qué es un captcha?
Captcha es una prueba que consiste en que el usuario introduzca un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se utiliza, principalmente, en el envío de formularios de contactos.
Este método se utiliza para evitar que robots, también llamados spambots, puedan utilizar ciertos servicios. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta, por lo que solamente el humano podría hacerlo.
Antes de que se utilizaran los captcha, era frecuente que los robots entraran en los correos, simplemente introduciendo aleatoriamente claves de usuarios y contraseñas hasta dar con las correctas. Una vez dentro utilizaban la cuenta y sus contactos para propagar a discreción todo tipo de información comercial indeseable.
Con la inserción de este método, difícilmente terceros puedan hacer uso de sus cuentas de correos.
A continuación, te brindamos un código para que puedas utilizarlo en tu formulario de contacto.
Archivo que muestra el captcha, botones y caja de texto
Cópialo y pégalo en contacto.html.
<?php session_start(); $Captcha = (string) $_POST["CAPTCHA_CODE"]; if(sha1($Captcha) != $_SESSION["CAPTCHA_CODE"]) { echo “<p style=’color: #ff0000;’><strong>El código de validación no ha sido ingresado o es incorrecto.</strong></p>”; } else { // se agrega el código que usted utiliza para enviar header (“Location: http://www.tudominio/ok.html”); } ?> <form name=’enviar’ method=’POST’ action=’?PHP echo $PHP_SELF ?>’> <table> <tr><td><label>Código de seguridad:</label></td></tr> <tr><td><img src=”captcha.php” /></td></tr> <tr><td> <input type=”text” name=”CAPTCHA_CODE” style=”width: 50px;” /></td></tr> <p style=”padding-top: 5px;”> <tr><td><input type=”submit” name=”enviar” value=”Enviar Mensaje” /></td> <td><input type=”reset” name=”enviar” value=”Borrar datos” /></td></tr> </p> </table>
Archivo del captcha php
<?php session_start(); // Genero el codigo y lo guardo en la sesión para consultarlo luego. $captchaCode = substr(sha1(microtime() * mktime()), 0, 6); // mktime()), 0, esto es el número de caracteres a mostrar, aca muestra 6); $_SESSION['CAPTCHA_CODE'] = sha1($captchaCode); // Genero la imagen $img = imagecreatetruecolor(70, 25); // (largo, alto) imagen // Colores $bgColor = imagecolorallocate($img, 230, 230, 230); // color de fondo $stringColor = imagecolorallocate($img, 90, 90, 90); // color letra $lineColor = imagecolorallocate($img, 245, 245, 245); // color lineas // Fondo colores imagefill($img, 0, 0, $bgColor); imageline($img, 0, 5, 70, 5, $lineColor); imageline($img, 0, 10, 70, 10, $lineColor); imageline($img, 0, 15, 70, 15, $lineColor); imageline($img, 0, 20, 70, 20, $lineColor); imageline($img, 12, 0, 12, 25, $lineColor); imageline($img, 24, 0, 24, 25, $lineColor); imageline($img, 36, 0, 36, 25, $lineColor); imageline($img, 48, 0, 48, 25, $lineColor); imageline($img, 60, 0, 60, 25, $lineColor); // Se escribe el código imageString($img, 5, 8, 5, $captchaCode, $stringColor); // ($ing, tamaño, hacia la derecha, hacia abajo) // Imagen de salida header(“Content-type: image/png”); imagepng($img); ?>
En la siguiente imagen podrás corroborar como quedará el captcha.