User sollen keine URL's mehr angeben könen.

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
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.
Gast

User sollen keine URL's mehr angeben könen.

Beitrag von Gast »

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
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

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:

Code: Alles auswählen

global $userdata;
if($userdata['user_id'] != 1)
    return $text;
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:

Code: Alles auswählen

global $userdata;
if($userdata['user_level'] < 4)
    return $text;
wobei Administrator=4; Supermoderatoren=3; Moderatoren=2.
Gast

Beitrag von Gast »

cool, das heißt ich muss nur noch den url-button entfernen, um missverständnisse zu vermeiden. Ansonst müssten nach der Änderung nur mehr die urls in einen Link umgewandelt werden, die der Admin postet, right?
Gast

Beitrag von Gast »

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:

Code: Alles auswählen

[url]www.adresse.com[/url]
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!
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

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!
Kein Wunder daß mein Code dann nicht funktioniert...
sfw hat geschrieben:Aber wie siehts aus, wenn jemand einfach das schreibt:

Code: Alles auswählen

[url]www.adresse.com[/url]
Was muss ich machen, damit dieser Weg eine Url anzugeben auch verhindert wird?
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:bin admin und habe die 2. variante verwendet.
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.
Gast

Beitrag von Gast »

Okydoky, dann versuch ich das mal.

Ich muss also schreiben: bbcode.php einfach nur foglendes einfügen:

Code: Alles auswählen

if($posterdata['user_level'] != ADMIN)
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*
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.
Das heißt ich kann das url-tag nur ganz verbieten oder gar nicht, right?

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
Gast

Beitrag von Gast »

is doch nciht so einfach wie ich gedacht hab: ich hab mal alles rausgesucht, wo ich glaube, dass ich was ändern muss:

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'];
richts wenn ich da überall nach url noch ein paar zeichen anhänge oder muss ich sonst noch was machen?
Gast

Beitrag von Gast »

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
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

includes/bbcode.php:
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);
}
ersetzen durch

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;
        }
}
ah
Syco23
Mitglied
Beiträge: 83
Registriert: 04.03.2003 15:25

Beitrag von Syco23 »

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..
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“