Seite 1 von 1

BBcodes für bestimmte Benutzer sperren/freigeben

Verfasst: 24.07.2007 23:27
von gn#36
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');
}

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

Verfasst: 04.06.2008 23:09
von gn#36
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.