Seite 1 von 1

BBCodes für bestimmte Nutzer sperren

Verfasst: 25.05.2008 14:48
von Beloved Angel
Hallo Forum,

nachdem das Snippet http://www.phpbb.de/viewtopic.php?t=151867 zum Sperren von Gästebildern nicht den gewünschten Effekt hatte habe ich etwas rumprobiert. Die Gäste konnten zwar keine Bilder mehr posten aber der Link stand trotzdem klickbar im Posting und der Rest des Pornospams war auch noch zu lesen. Wenn man die Fehlermeldung des Snippets eingebaut hatte wurden sogar alle Gästeposts unterbunden.

Mit der Variante die ich zusammengelötet habe wird auf das Vorkommen von den IMG-Tags (durch stripos() wird auf Groß- und Kleinschreibung geprüft) im Text gesucht und wenn die User_id auf ANONYMOUS steht eine Fehlermeldung ausgegeben und der Beitrag wird nicht gesendet. Was für automatische Spam-Routinen bisher ausreichte um diese Postings komplett zu unterbinden.

Code: Alles auswählen

#
#-----[ Öffne ]------------------------------------------
#

includes/bbcode.php

#
#-----[ Finde ]------------------------------------------
#

function bbencode_first_pass($text, $uid)
{

#
#-----[ Füge danach ein ]-------------------------------------------
#

// Lade Globale Variable für Benutzer.
	global $userdata;

#
#-----[ Finde ]------------------------------------------
#

// [img]image_url_here[/img] code..

	$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
	
#
#-----[ Ersetze mit ]-------------------------------------------
#

// [img]image_url_here[/img] code..

// Eingeloggte Nutzer dürfen Bilder posten
	
	if($userdata['session_logged_in'] && $userdata['user_id'] != ANONYMOUS)
	{
   	$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
	} 

// Unterbindung von Gästebildern
	
	if($userdata['user_id'] == ANONYMOUS && (stripos($text,"[IMG]") !== false))
	{
	message_die(GENERAL_MESSAGE,'Es ist Gästen nicht erlaubt Bilder in ihre Beiträge zu stellen. Bitte entferne die Bilder aus deinem Beitrag','Bilder verboten'); 
	}



Verfasst: 25.05.2008 22:28
von Beloved Angel
Als Erweiterung zum obereren Snippet habe ich noch eine Abfrage zu verbotenen Worten gebaut. Diese lässt die Spam-Robots zwar absenden aber nicht posten weil da die Fehlermeldung auftritt. Ich habe die Funktion in die bbcode.php eingebaut weil diese Datei ja eh abläuft wenn ein Posting erstellt wird

Code: Alles auswählen


#
#-----[ Öffne ]-------------------------------
#

includes/bbcode.php

#
#-----[ Finde ]------------------------------------------
#

function bbencode_first_pass($text, $uid)
{

#
#-----[ Füge danach ein ]-------------------------------------------
#

// Lade Globale Variable für Benutzer.
   global $userdata; 

#
#-----[ Finde ]-------------------------------
#

// This is important; bbencode_quote(), bbencode_list(), and bbencode_code() all depend on it.
	$text = " " . $text;

#
#-----[ Füge danach ein ]------------------
#


// Verbotene Worte im Array einsetzen. 

if($userdata['user_id'] == ANONYMOUS)
	{
	$wort = array("viagra", "cialis", "levitra", "sex");
   	foreach ( $wort as $gesucht)
   	{
      if ( stripos($text, $gesucht) !== false )
 	{ 
	message_die(GENERAL_MESSAGE,'Es ist Gästen nicht erlaubt Werbung oder anstößige Inhalte in ihre Beiträge zu stellen. Bitte entferne die betreffenden Stellen aus deinem Beitrag','Verbotene Inhalte entdeckt'); 
    }
	}
	}