Captcha, formularios seguros
Para evitar el spam a traves del formulario de PerformSec me vi obligado a configurar un sistema de captcha en PHP para evitarlo, es un poco mas molesto para los usuarios que quieran contactar conmigo, pero mas seguro, asi este código de verificación diferenciará si quien realmente quiere contactar conmigo es una persona o un bot.
La configuracion de captcha en formularios es muy sencilla, simplemente un copy-paste del codigo que os voy a mostrar a continuación.
El código de captcha:
<?php
session_start();// Genero el codigo y lo guardo en la sesión para consultarlo luego.
$captchaCode = substr(sha1(microtime() * mktime()), 0, 6);
$_SESSION['CAPTCHA_CODE'] = sha1($captchaCode);// Genero la imagen
$img = imagecreatetruecolor(70, 25);// Colores
$bgColor = imagecolorallocate($img, 230, 230, 230);
$stringColor = imagecolorallocate($img, 90, 90, 90);
$lineColor = imagecolorallocate($img, 245, 245, 245);// Fondo
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);
// Escribo el código
imageString($img, 5, 8, 5, $captchaCode, $stringColor);
// Image output.
header("Content-type: image/png");
imagepng($img);
?>
Copiamos este código y lo guardamos como captcha.php.
Ahora vamos configurar el formulario de contacto, para empezar en el principio del HTML, copiamos el siguiente código: Ahora en el cuerpo del HTML (BODY) dibujamos el formulario:
<?php
session_start();
if(isset($_POST['enviar'])) {
$Message = "";
$Captcha = (string) $_POST["CAPTCHA_CODE"];
if($_POST['nombre'] == '') {
echo "<center><p style='color: #ff0000;'><strong>No has ingresado tu Nombre.</strong></p></center>";
}elseif($_POST['email'] == '') {
echo "<center><p style='color: #ff0000;'><strong>No has ingresado tu Email.</strong></p></center>";
}elseif($_POST['asunto'] == '') {
echo "<center><p style='color: #ff0000;'><strong>No has ingresado el Asunto del mensaje.</strong></p></center>";
}elseif($_POST['mensaje'] == '') {
echo "<center><p style='color: #ff0000;'><strong>No has ingresado el Mensaje.</strong></p></center>";
}elseif(sha1($Captcha) != $_SESSION["CAPTCHA_CODE"]) {
$Message = "<center><p style='color: #ff0000;'><strong>El código de validación no ha sido ingresado o es incorrecto.</strong></p></center>";
}else {
mail ("tu@msn.com", "$asunto", "$mensaje", "From: $nombre <$email>"); // coloque aqui su correo
echo '<p style="color: #a3c76a;"><strong>El email ha sido enviado con éxito.</strong></p>';
}
}
if(!empty($Message)) {
// Muestro los posibles errores de validación previos.
echo "$Message";
}
// Si aún no se han enviado los datos, mostramos el formulario
?>
<form method=”post” action=”contacto.php”>
<label class=”Estilo13″><br />
Nombre / Nick:</label>
<p>
<input name=”nombre” type=”text” size=”45″ />
</p>
<p> </p>
<label class=”Estilo13″>Email:</label>
<p>
<input name=”email” type=”text” size=”45″ />
</p>
<label><span class=”Estilo1″><br />
</span><span class=”Estilo13″>Asunto:</span><br />
</label>
<input name=”asunto” type=”text” size=”45″ />
<label><br />
<br />
<span class=”Estilo13″>Mensaje:</span><br />
</label>
<textarea name=”mensaje” cols=”50″ rows=”10″></textarea>
<label><br />
<br />
<span class=”Estilo13″>Código de seguridad:</span></label>
<p> </p>
<p><img src=”captcha.php” align=”absbottom” />
<input name=”CAPTCHA_CODE” type=”text” style=”width: 60px;” />
</p>
<p> </p>
<p style=”padding-top: 5px;”>
<input type=”submit” name=”enviar” value=”Enviar Mensaje” />
<input type=”reset” name=”enviar” value=”Borrar datos” />
</p>
<p style=”padding-top: 5px;”> </p>
</form>
Este esta con mi configuración de diseño, cada uno lo adaptara par su web, ya que lo importante es el código, bueno pues para finalizar guardamos esto como contacto.php.
Espero que os sirva a podais evitar el spam tan pesado, es una explicación muy breve, si teneis alguna duda de configuración no duden en preguntarla.
Publicado en: PHP
Tags: captcha, formularios seguros, PHP, Seguridad
Reacciones con otros blogs:  ¡Click!
Marcadores sociales: Compártelo

































