BBcodes für bestimmte Benutzer sperren/freigeben

In diesem moderierten Forum werden Code-Schnipsel, die zu klein sind, um richtige Mods zu sein, abgelegt.
Bei Fragen oder Problemen benutze bitte das Forum phpBB 2.0: Mod Support.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
gn#36
Administrator
Administrator
Beiträge: 9131
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

BBcodes für bestimmte Benutzer sperren/freigeben

Beitragvon gn#36 » 24.07.2007 23:27

Nur der Administrator kann Bilder posten

So kannst du den IMG BBcode für alle User mit Ausnahme der Administratoren sperren:
1.Aktion: Backup!

öffne includes/bbcode.php
finde

Code: Alles auswählen

function bbencode_first_pass($text, $uid)
{

füge danach ein:

Code: Alles auswählen

global $userdata;


finde

Code: Alles auswählen

// [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 durch das hier:

Code: Alles auswählen

// [img]image_url_here[/img] code..
if($userdata['user_level'] == ADMIN)
{
   $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);
}


Bitte beachte, dass diese Änderung keinerlei Auswirkungen auf bisherige Posts hat. Bei allen Nachfolgenden Posts führt diese Änderung dazu, dass die IMG Codes so dargestellt werden, wie sie eingegeben wurden, der Admin kann allerdings in den Posts durch simples Bearbeiten der Posts die Bilder freischalten.

IMG BBcode für Usergruppen freigeben
So kannst du den IMG BBcode für ganze Usergruppen freigeben:

1.Aktion: Backup!

öffne includes/bbcode.php
finde

Code: Alles auswählen

function bbencode_first_pass($text, $uid)
{

füge danach ein:

Code: Alles auswählen

global $userdata, $db;


finde

Code: Alles auswählen

// [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 durch das hier:

Code: Alles auswählen

// [img]image_url_here[/img] code..
$sql = "SELECT user_id FROM ". USER_GROUP_TABLE . " WHERE group_id IN (1234) AND user_pending = 0 AND user_id = ".$userdata['user_id'];
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR,'Konnte Gruppendaten nicht laden','',__LINE__, __FILE__, $sql);
}
if($db->sql_numrows($result) || $userdata['user_level'] == ADMIN )
{
   $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);
}

Die 1234 musst du durch die gewünschte Gruppen ID ersetzen, hier lässt sich auch eine ganze Liste an Gruppen definieren (dann jeweils durch Komma getrennt). Bitte beachte dass auch diese Änderung keinerlei Auswirkungen auf bisherige Posts hat, hier vorhandene Bilder bleiben vorhanden. Die Administratorfreigabe für Bilder ist in dieser Änderung mit enthalten, sie muss also nicht extra durchgeführt werden.

Auf Wunsch hinzugefügt:
Nur registrierte User können Bilder posten

So kannst du den IMG BBcode für alle Gäste sperren:
1.Aktion: Backup!

öffne includes/bbcode.php
finde

Code: Alles auswählen

function bbencode_first_pass($text, $uid)
{

füge danach ein:

Code: Alles auswählen

global $userdata;


finde

Code: Alles auswählen

// [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 durch das hier:

Code: Alles auswählen

// [img]image_url_here[/img] code..
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);
}


Bitte beachte, dass diese Änderung keinerlei Auswirkungen auf bisherige Posts hat. Bei allen Nachfolgenden Posts führt diese Änderung dazu, dass die IMG Codes so dargestellt werden, wie sie eingegeben wurden, der Admin kann allerdings in den Posts durch simples Bearbeiten der Posts die Bilder freischalten. Außerdem gibt es in diesem Fall für Gäste keine Fehlermeldung. Falls das gewünscht ist muss nach der oben genannten Änderung zusätzlich direkt dahinter noch dieser Code:

Code: Alles auswählen

else
{
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');
}
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.

Benutzeravatar
gn#36
Administrator
Administrator
Beiträge: 9131
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Spamschutz im Gästebuch - BBcodes für Gäste sperren

Beitragvon gn#36 » 04.06.2008 23:09

BBCodes mit Spamschutz für Gäste sperren

Mit den vorangegangenen Änderungen könnt ihr verhindern, dass User oder Gäste Bilder direkt einbinden. Stattdessen werden Bilder dann als Link eingebunden. Bei einem Gästebuch wird das aber Spam vermutlich nicht verhindern. Um in einem Gästebuchforum bei Verwendung eines verbotenen BBCodes eine Fehlermeldung auszugeben führt die folgenden Änderungen aus. In diesem Fall ist das beispielhaft für den IMG BBcode ausgeführt, es lässt sich aber analog auf die übrigen übertragen.

Durch diese Änderung wird eine Fehlermeldung ausgegeben, sobald ein Gast versucht, den entsprechenden BBcode zu verwenden. Registrierte User hingegen können weiterhin uneingeschränkt alle BBcodes verwenden.

Vielen Dank an Beloved Angel für dieses Snippet.

1. Aktion: Backup!

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');
   }


Zusätzlich lassen sich auf ähnliche Weise auch einige verbotene Wörter definieren, die die Eintragung eines Posts verhindern, sofern diese Worte im Beitrag vorkommen:

Code:

Code: Alles auswählen


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

includes/bbcode.php

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

function bbencode_first_pass($text, $uid)
{

#
#-----[ Füge danach ein ]-------------------------------------------
#
# Diese Änderung muss nur durchgeführt werden, sofern dort noch kein global $userdata; steht (also bei Verwendung obiger Änderung beispielsweise nicht).

// 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');
    }
   }
   }


Die Liste der Begriffe lässt sich analog beliebig erweitern, indem die Zeile

Code: Alles auswählen

   $wort = array("viagra", "cialis", "levitra", "sex");
angepasst wird.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.


Zurück zu „phpBB 2.0: Snippets“