Sin dudas la pelea contra el SPAM esta más lejos de ganarse que cualquier otra cosa, pero siempre podemos ir buscado alternativas para hacerle la cosa mas dificil a estos individuos y sus inescrupulosas actividades.

Es bastante conocido y utilizado el sistema de CAPTCHA en todas sus variantes: textos, preguntas, numeros, operaciones matemáticas, palabras, y combinaciones de todo esto, donde controlamos la igualdad entre 2 variables, una generada por nuestra página y otra escrita por nuestro navegante.

Aca una solución que me ha dado buen resultado con 2 controles adicionales.

Partiendo de la base que en nuestro form tenemos un CAPTCHA, lo que hacemos es enviar la variable que contiene el valor de control $var1 y la que contiene el valor escrito por el navegante $var2. Suponiendo que nos anulan el control de igualdad de estas variables y el formulario se envia igual, en el archivo PHP que hace el envio agregamos

if ($_POST['var1'] == $_POST['var2']) {
// aca va todo lo que hace el envio
}
else {
echo "Error, <a href="\">Click aquí</a> para completar correctamente el formulario!";
  } ;

Ademas vamos a agregale un contro de dominio, donde controlaremos que el domino de la página de referencia donde esta el formulario, sea igual al donde esta almacenado el PHP que envia. Con esto evitamos que utilicen nuestro script de envio archivos que no nos pertenezcan.

$urlreferer=$_SERVER['HTTP_REFERER']; //acá tomamos la url que tiene el formulario
$fulldomain = parse_url($urlreferer); //acá creamos un array con los datos de esa url
$ref=$dominioentero['host']; //acá extraemos el dominio de esa url
$svr=$_SERVER['SERVER_NAME']; // acá leemos el dominio donde esta el script que envia
if ($ref == $svr) {
// aca va todo lo que hace el envio
}
else {
echo "Error, Dominio no válido!";
  } ;

Y por último podemos combinar las dos cosas. Hasta aca mi aporte. Espero que les sea util como a mi.



Si te resultó útil este artículo no olvides de dejar un comentario o visitar alguno de los auspiciantes. Gracias