Métodos para prevenir el spam

JesúsR ha recopilado en su blog una serie de métodos con los que dejar de lado al tedioso Captcha para evitar el spam. Yo, que aunque me codeo un poco con programación no dejo de ser maquetadora, me decanto más por el primero de ellos. Aquí os dejo los tres:

Basado en CSS;  si colocamos un campo como “display: none” y nos llega una petición del formulario que haya rellenado el campo invisible, sabremos entonces que es un robot, y por tanto no aceptaremos la petición.

En el css:

.noshow { display:none; }

En el html

<label for=”leaveblank”>Leave this blank</label>
<input type=”text” id=”leaveblank” name=”leaveblank” /><br />
<label for=”dontchange”>Do not change this</label>
<input type=”text” value=”http://” id=”dontchange” name=”dontchange” />

//Si alguno de estos dos campos son modificados, sabremos que es un bot.

En el php:

if ($_POST['leaveblank'] == ” && $_POST['dontchange'] == ‘http://’) {
// accept form submission
}

Basado en PHP, y siguiendo el mismo modelo.

En el php:

// You can use the date() function to change field names periodically:
// For daily changes, use e.g.:
$code = date(’Yz’); // Don’t copy this 1:1 - adjust the date parameters. (Y:year. z:day of the year)
$html = “<input type=’text’ id=’abc$code’ name=’abc$code’ />\n”;
if (!isset($_POST["abc$code"]) {
// reject form submission
}

Basado en Bases de datos; que lo que hace es grabar la hora y día en que una ip envía un formulario, evitando que esa ip cargue dicho formulario más de una vez cada dos minutos.

Ejemplo:

En la base de datos:

CREATE TABLE `spam` (
`ip` int(10) unsigned default NULL,
`timestamp` timestamp NOT NULL,
KEY `ip` (`ip`));

En el php:

$ip = $_SERVER['REMOTE_ADDR'];
// when you reject a form submission:
mysql_query(”INSERT INTO `spam` SET `ip`=INET_ATON(’$ip’);”);
// whenever somebody opens the page:
mysql_query(”SELECT `timestamp` FROM `spam` WHERE ip=INET_ATON(’$ip’) ORDER BY `timestamp` DESC LIMIT 1;”);
if (time() - $timestamp < 120) { // 2 minutes
// display error message: try again in 2 minutes
}
else {
// display HTML form
}

Usad la que más os convenga.

Enlace: Prevenir el spam


Deja tu comentario :)