Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Filtrar urls de spam

Estas en el tema de Filtrar urls de spam en el foro de Sistemas de gestión de contenidos en Foros del Web. Tengo un foro en phpbb y como constantemente la gente hace spam por mensajes privados estoy haciendo un sistema que filtre dichas urls. Había pensado ...
  #1 (permalink)  
Antiguo 31/01/2011, 09:57
Avatar de TheRD  
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Filtrar urls de spam

Tengo un foro en phpbb y como constantemente la gente hace spam por mensajes privados estoy haciendo un sistema que filtre dichas urls.

Había pensado un preg_match_all() con una expresión que detecte urls y luego de cada url detectada mire si tiene http://midominio.com, si no lo tiene reemplace la url por: Spam de sitios web deshabilitado.

La cosa es que eso no modificaría las urls en el mensaje original, solo en las alias posteriores de las variables encontradas. Ahí ya me he quedado sin ideas de como hacerlo :/

Saludos y gracias.
  #2 (permalink)  
Antiguo 31/01/2011, 10:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde PHP a Aplicaciones prefabricadas
  #3 (permalink)  
Antiguo 31/01/2011, 10:26
Avatar de TheRD  
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Filtrar urls de spam

Ya lo he solucionado. Por si a alguien le sirve:

Código PHP:
Ver original
  1. $u = 'cadena con urls';
  2. $domain = 'dominio.com';
  3. function filter_spam_urls($matches)
  4. {
  5.     if (!strrpos($matches[1], $domain))
  6.     {
  7.         $matches[1] = 'URL de SPAM bloqueada.';
  8.     }
  9.     return $matches[1];
  10. }
  11.  
  12.     $host = "([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]";  
  13.     $port = "(:\d{1,})?";  
  14.     $path = "(\/[^?<>\#\"\s]+)?";  
  15.     $query = "(\?[^<>\#\"\s]+)?";  
  16.  
  17.     $reg = "#(((www.|(ht|f)tps?:\/\/){$host}{$path}{$query})|{$host}{$path}{$query})#i";
  18.  
  19. echo preg_replace_callback($reg, 'filter_spam_urls', $u);

Las expresiones regulares son de http://craftyman.net/expresiones-reg.../#validar_link solo las modifiqué un poco para que no solo requiriese http sino que cogiese también sin http y con www. y sin ambos.

Saludos!

Etiquetas: mensajes, php, spam, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.