Despues de leer tu mensaje pense en crear una captcha simple como el de openclassifieds, este muestra dos valores del 0 al 9 y pide al usuario hacer la suma de estos valores, si la suma es correcta crea el registro, si no, pasa de largo.
Yo use una base de datos con una tabla
captcha y dos campos (
id, valor) en valor cree diez registros con los numeros del 0 al 9 (diez en total), luego selecciono dos al azar, los sumo secretamente, y los mando por un hidden hasta el archivo que ingresa el mensaje, junto con un input rellenado por el usuario, si los valores son iguales se crea el registro, si no pasa de largo o lo mandas a algun otro lado.
captcha.php
Código PHP:
Ver original<?php
$ss=1;
$sentencia="SELECT * FROM captcha ORDER by rand() LIMIT 2";
$ccc=$ver->valor;
$capt[$ss]="$ccc";//creamos primero la variable $capt[1] y luego $capt[2] ayudados por la variable$ss
$ss=$ss+1;//aumentamos $ss en 1
}//fin while
$suma=$capt[1]+$capt[2];//creamos la suma secreta
?>
una vez con este archivo creado, lo llamamos al formulario con include() , y agregamos el hidden y el input para mandar los datos
Código PHP:
Ver originalel principio de tu form
---
---
--
<?php
require("inc/captcha.php");
echo"<div>Cuanto es $capt[1] + $capt[2] ?";
?>
<input id="agregarsuma" title="Ingresa tu nombre" name="suma2">
<input type="hidden" name="suma1" value="<?php echo"".$suma.""; ?>" >
---
--
---
resto de tu form
Código PHP:
Ver original//y en el archivo en el que esta el codigo para ingresar el mensaje o lo que sea, pones
$suma1=$_POST['suma1'];
$suma2=$_POST['suma2'];
if($suma1==$suma2){
echo"creamos registro del mensaje";
}else{
echo"o se equivoco al sumar o es spam";
}
Nota:Si tu atacantee s muy habil y logra leer los numeros dados para la suma, puedes cambiar el campo valor por el campo imagen, y agregarle imagenes de los numeros del 0 al 9 , entonces muestras las imagenes y sumas los datos de los campos valor, espero que te sea de ayuda, saludos.