Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/09/2006, 04:29
palcantara
 
Fecha de Ingreso: septiembre-2006
Ubicación: España
Mensajes: 19
Antigüedad: 18 años, 5 meses
Puntos: 0
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/