User sollen keine URL's mehr angeben könen.
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.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
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.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
User sollen keine URL's mehr angeben könen.
Um Missbrauch meines Board vorzubeugen möchte ich verhindern das User URLs posten können (bzw. diese in html-tags umgewandelt werden) - ich selbst sollte aber noch (von mir aus auch auf umständlichem Weg) Links in meinen Posts plazieren können.
Hoffe das ist möglich.
SFW
Hoffe das ist möglich.
SFW
Die einfachste Lösung: öffne functions.php, finde (bei mir Zeile 1121) "function make_clickable($text)" und füge direkt am Anfang (nach dem "{" ) ein:
ggf. die user_id ändern, falls sie nicht 1 ist (in der users-tabelle nachgucken).
Falls du nicht einem bestimmten Benutzer, sondern z.B. allen Administratoren das posten von Links erlauben willst:
wobei Administrator=4; Supermoderatoren=3; Moderatoren=2.
Code: Alles auswählen
global $userdata;
if($userdata['user_id'] != 1)
return $text;
Falls du nicht einem bestimmten Benutzer, sondern z.B. allen Administratoren das posten von Links erlauben willst:
Code: Alles auswählen
global $userdata;
if($userdata['user_level'] < 4)
return $text;
ich hab das mal gecheckt. das ganze ist bei mir in der includes/bbcode.php zu finden.
Soweit ich diese Kryptographie entschlüsselt habe, wird jetzt eine Adresse, die direkt eingegeben wird nicht mehr in eine URL umgewandelt.
Aber wie siehts aus, wenn jemand einfach das schreibt:
Was muss ich machen, damit dieser Weg eine Url anzugeben auch verhindert wird? oder is das schon in deinem Mod inbegriffen?
Edit: ich habs ausprobiert.
1. urls werden nicht mehr umgewandelt. meine aber leider auch nicht mehr (bin admin und habe die 2. variante verwendet.)
2. die Variante mit dem bbcode geht immer noch
Achja ich sehe grade ich habe im Falschen Forum gepostet!
ICH BENUTZE phpBB 2.0.2 !!!!!! Ich poste mal im richtigen Forum!
Soweit ich diese Kryptographie entschlüsselt habe, wird jetzt eine Adresse, die direkt eingegeben wird nicht mehr in eine URL umgewandelt.
Aber wie siehts aus, wenn jemand einfach das schreibt:
Code: Alles auswählen
[url]www.adresse.com[/url]
Edit: ich habs ausprobiert.
1. urls werden nicht mehr umgewandelt. meine aber leider auch nicht mehr (bin admin und habe die 2. variante verwendet.)
2. die Variante mit dem bbcode geht immer noch
Achja ich sehe grade ich habe im Falschen Forum gepostet!
ICH BENUTZE phpBB 2.0.2 !!!!!! Ich poste mal im richtigen Forum!
Kein Wunder daß mein Code dann nicht funktioniert...sfw hat geschrieben:Achja ich sehe grade ich habe im Falschen Forum gepostet!
ICH BENUTZE phpBB 2.0.2 !!!!!! Ich poste mal im richtigen Forum!
Die entsprechenden Aufrufe findest du in bbencode_second_pass; Das Problem dabei ist nur, daß diese erst in viewtopic.php aufgerufen werden, d.h. in $userdata befinden sich dann die Daten des Benutzers, der sich den Beitrag gerade ansieht, und nicht dessen, der den Beitrag geschrieben hat.sfw hat geschrieben:Aber wie siehts aus, wenn jemand einfach das schreibt:Was muss ich machen, damit dieser Weg eine Url anzugeben auch verhindert wird?Code: Alles auswählen
[url]www.adresse.com[/url]
Auch das ist kein Wunder. phpBB2 verwendet nämlich andere Werte für den user_level(stehen in constants.php). Um nur Admins das posten zu erlauben, musst du dann z.B. if($posterdata['user_level'] != ADMIN) verwenden.sfw hat geschrieben:bin admin und habe die 2. variante verwendet.
Okydoky, dann versuch ich das mal.
Ich muss also schreiben: bbcode.php einfach nur foglendes einfügen:
wenn ich das richtig verstanden hat, dann wird alles war in der Klamma foglt, also das url umandeln nur vollzogen, wenn der User ein Admin ist. *auchphplernenwill*
ich hab mir mal einen einfachen Ausweg überlegt: ich definiere einfach ein eigenes Tag. z.B [urladmin]adresse.com[/urladmin]
das dürfte ja nicht so schwer sein. jetzt müsst ich nur noch wissen, wie ich das mache. Ich werd mal versuchen den URL-Botton aus der Post-Template Datei rauszubekommen. Falls ich das nicht hinbekomm, kannst du dich auf noch einen Post von mir freuen. *gg*
Auf jeden Fall mal Danke für deine Mühe!
Edit:
Botton entfernen war natürlich kein Problem. Das mit der Codeänderung werde ich jetzt auch mal selbst versuchen. Ich war mir nicht sicher, ob ich da nicht mehere Files ändern muss, aber offenbar reicht es aus, wenn ich in der bbcode.php alle [ u r l ] -tags ändere. melde mich wieder, wenn ich ergebnisse hab
Ich muss also schreiben: bbcode.php einfach nur foglendes einfügen:
Code: Alles auswählen
if($posterdata['user_level'] != ADMIN)
Das heißt ich kann das url-tag nur ganz verbieten oder gar nicht, right?Die entsprechenden Aufrufe findest du in bbencode_second_pass; Das Problem dabei ist nur, daß diese erst in viewtopic.php aufgerufen werden, d.h. in $userdata befinden sich dann die Daten des Benutzers, der sich den Beitrag gerade ansieht, und nicht dessen, der den Beitrag geschrieben hat.
ich hab mir mal einen einfachen Ausweg überlegt: ich definiere einfach ein eigenes Tag. z.B [urladmin]adresse.com[/urladmin]
das dürfte ja nicht so schwer sein. jetzt müsst ich nur noch wissen, wie ich das mache. Ich werd mal versuchen den URL-Botton aus der Post-Template Datei rauszubekommen. Falls ich das nicht hinbekomm, kannst du dich auf noch einen Post von mir freuen. *gg*
Auf jeden Fall mal Danke für deine Mühe!
Edit:
Botton entfernen war natürlich kein Problem. Das mit der Codeänderung werde ich jetzt auch mal selbst versuchen. Ich war mir nicht sicher, ob ich da nicht mehere Files ändern muss, aber offenbar reicht es aus, wenn ich in der bbcode.php alle [ u r l ] -tags ändere. melde mich wieder, wenn ich ergebnisse hab
is doch nciht so einfach wie ich gedacht hab: ich hab mal alles rausgesucht, wo ich glaube, dass ich was ändern muss:
richts wenn ich da überall nach url noch ein paar zeichen anhänge oder muss ich sonst noch was machen?
Code: Alles auswählen
// [url]xxxx://www.phpbb.com[/url] code..
$patterns[1] = "#\[url\]([a-z]+?://){1}([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+\(\)]+)\[/url\]#si";
$replacements[1] = $bbcode_tpl['url1'];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$patterns[2] = "#\[url\]([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+\(\)]+)\[/url\]#si";
$replacements[2] = $bbcode_tpl['url2'];
// [url=xxxx://www.phpbb.com]phpBB[/url] code..
$patterns[3] = "#\[url=([a-z]+?://){1}([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+\(\)]+)\](.*?)\[/url\]#si";
$replacements[3] = $bbcode_tpl['url3'];
// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
$patterns[4] = "#\[url=([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+\(\)]+)\](.*?)\[/url\]#si";
$replacements[4] = $bbcode_tpl['url4'];
// [email]user@domain.tld[/email] code..
$patterns[5] = "#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
$replacements[5] = $bbcode_tpl['email'];
o.k. jetzt geht alles bestens. nur eins hat nicht geklappt (gut, ist eh nicht nötig, aber ich wollte dich nur mal darauf aufmerksam machen), nämlich, dass meine url, wenn ich sie ohne Tag eingebe, automaitsch umgewandelt werden, also doch keine sonderreichte für den Admin, was das angeht.
Ansonsten ist alles o.k.
Danke noch mal und Gruß
SFW
Ansonsten ist alles o.k.
Danke noch mal und Gruß
SFW
includes/bbcode.php:
suchen:ersetzen durch
ah
suchen:
Code: Alles auswählen
function make_clickable($text)
{
// pad it with a space so we can match things at the start of the 1st line.
$ret = " " . $text;
// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
// xxxx can only be alpha characters.
// yyyy is anything up to the first space, newline, or comma.
$ret = preg_replace("#([\n ])([a-z]+?)://([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)#i", "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", $ret);
// matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// yyyy contains either alphanum, "-", or "."
// zzzz is optional.. will contain everything up to the first space, newline, or comma.
// This is slightly restrictive - it's not going to match stuff like "forums.foo.com"
// This is to keep it from getting annoying and matching stuff that's not meant to be a link.
$ret = preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i", "\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">www.\\2.\\3\\4</a>", $ret);
// matches an email@domain type address at the start of a line, or after a space.
// Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
$ret = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
// Remove our padding..
$ret = substr($ret, 1);
return($ret);
}
Code: Alles auswählen
function make_clickable($text)
{
global $userdata;
if ( $userdata['user_level'] == ADMIN )
{
// pad it with a space so we can match things at the start of the 1st line.
$ret = " " . $text;
// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
// xxxx can only be alpha characters.
// yyyy is anything up to the first space, newline, or comma.
$ret = preg_replace("#([\n ])([a-z]+?)://([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)#i", "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", $ret);
// matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// yyyy contains either alphanum, "-", or "."
// zzzz is optional.. will contain everything up to the first space, newline, or comma.
// This is slightly restrictive - it's not going to match stuff like "forums.foo.com"
// This is to keep it from getting annoying and matching stuff that's not meant to be a link.
$ret = preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i", "\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">www.\\2.\\3\\4</a>", $ret);
// matches an email@domain type address at the start of a line, or after a space.
// Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
$ret = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
// Remove our padding..
$ret = substr($ret, 1);
return($ret);
}
else
{
return $text;
}
}
hi!
Ich hatte lage gelaubt, dass der hack nicht funktioniert, habe ihn jez nochmal eingebaut, ein bisschen gegrübelt und dann kam die Erleuchtung:
Der Admin sieht alle Links Klickbar und alle anderen User sehen ALLE Links alt Text. Ich möchte aber folgendes:
Wenn ein User url postet -> alle sehen url nur als Text
Wenn admin url postet -> alle User sehen klickbaren Link
..hoffe das ist machbar..
Ich hatte lage gelaubt, dass der hack nicht funktioniert, habe ihn jez nochmal eingebaut, ein bisschen gegrübelt und dann kam die Erleuchtung:
Der Admin sieht alle Links Klickbar und alle anderen User sehen ALLE Links alt Text. Ich möchte aber folgendes:
Wenn ein User url postet -> alle sehen url nur als Text
Wenn admin url postet -> alle User sehen klickbaren Link
..hoffe das ist machbar..