Hola Morogoku,
Yo tengo una solución que tengo probada y me da buen resultado. Es un script que analiza una cadena frente a un array de expresiones prohibidas, y si encuentra alguna de ellas devuelve un valor "false":
1. Te creas un archivo .inc que contenga el siguiente código:
<?php
$prohibidos[] = "http";
$prohibidos[] = "buy";
$prohibidos[] = "casino";
$prohibidos[] = "roulette";
$prohibidos[] = "xanax";
$prohibidos[] = "viagra";
$prohibidos[] = "href";
$prohibidos[] = "cool";
$num_prohibidos = count($prohibidos);
function comprobar_prohibidos($cadena) {
global $prohibidos, $num_prohibidos;
$estado = true;
$k = 0;
while ( $k < $num_prohibidos ) {
if ( stristr($cadena,$prohibidos[$k]) ) {
$estado = false;
break;
}
$k++;
}
return $estado;
}
?>
Como ves puedes ampliar el array de cadenas prohibidas
2. En tu script que recibe el resultado del formulario pones, antes que cualquier otra cosa:
include "./prohibidos_spam_formularios.inc";
if ( !comprobar_prohibidos($comentarios) ) {
exit;
}
De esta forma si alguien trata de insertar contenido prohibido se encuentra con una página en blanco (detención del script).
Esta comprobación, que está puesta como ejemplo para la cadena
$comentarios puedes repetirla para tantas cadenas como quieras (
$titulo,
$texto, etc.).
Espero que sea de ayuda.
Un saludo,
---
Pedro Alcántara Martín
http://www.tarsis.net/