Seite 1 von 1

Linkzensur, aber wie

Verfasst: 30.09.2008 09:00
von pimboli
Hallo Leute,

ich möchte verhindern, dass bestimmte Links im Forum gespamt werden. Über die Wortzensur habe ich es nur hinbekommen, wenn die genaue URL eingegeben wird. Packt die jemand in den URL-Tag, klappt das aber nicht. Wenn jemand eine Unterseite der gesperrten URL angibt klappts auch nicht.

Beispiel: Ich sperre mit der Wortzensur die URL

Code: Alles auswählen

http://www.blabla123xy.de


dann klappt die Sperre. Aber wenn jemand

Code: Alles auswählen

[url]http://www.blabla123xy.de[/url]


eingibt, dann klappt die Sperre nicht.

Auch wenn jemand

Code: Alles auswählen

http://www.blabla123xy.de/eine_unterseite.html
eingibt klappt die Sperre nicht. Auch nicht, wenn ich mit Platzhaltern, also * arbeite. Für 2.0 gabs ja das Linkzensur Mod. Was kann ich nun in der Version 3.0 tun?

Verfasst: 30.09.2008 09:19
von 4seven
hallo,

möchtest du verhindern, das diese urls gepostet werden können oder 'nur',
das sie im post angezeigt werden (oder beides)?

Verfasst: 30.09.2008 10:10
von pimboli
Also am liebsten wäre es mir, wenn die URL garnicht angezeigt wird oder durch einen Hinweistext ersetzt wird.

Verfasst: 30.09.2008 10:56
von 4seven
resultat:
http://www.loaditup.de/files/275307.png

öffne viewtopic.de

finde

Code: Alles auswählen

$message = censor_text($row['post_text']);
dahinter füge ein

Code: Alles auswählen

$match_1                = 'url';
$censored_txt           = 'Nicht erlaubte Url';
$search_pattern[0]      = "!http\:\/\/www.google.de(.*?)!";
$search_pattern[1]      = "!\[$match_1\]google(.*?)de(.*?)\[\/$match_1(.*?)\]!";
$search_pattern[2]      = "!\[$match_1(.*?)\](.*?)google(.*?)de(.*?)\[\/$match_1\:(.*?)\]!";
$search_pattern[3]      = "!\[$match_1=google(.*?)de(.*?)\](.*?)\[\/$match_1(.*?)\]!";
$search_pattern[4]      = "!\[$match_1=(.*?)google(.*?)de(.*?)\](.*?)\[\/$match_1\:(.*?)\]!";
$pattern_replacement[0] = $censored_txt;
$pattern_replacement[1] = $censored_txt;
$pattern_replacement[2] = $censored_txt;
$pattern_replacement[3] = $censored_txt;
$pattern_replacement[4] = $censored_txt;
$target_source          = $row['post_text'];
$message                = preg_replace($search_pattern, $pattern_replacement, $target_source);
- $censored_txt anpasssen oder leer
- google und de anpassen (nichts anderes)

Verfasst: 30.09.2008 12:53
von pimboli
Danke!! Das klappt super! :grin:

Leider habe ich vom programmieren keine Ahnung. Daher eine abschließende Frage. Wie muss ich es anstellen, wenn ich mehrere URLs sperren will?

Verfasst: 30.09.2008 13:10
von 4seven
du kopierst die funktion

und erweiterst die nummerierung [*] fortlaufend bei $search_pattern und $pattern_replacement ..

also so:

Code: Alles auswählen

$match_1                = 'url';
$censored_txt           = 'Nicht erlaubte Url';
$search_pattern[0]      = "!http\:\/\/www.google.de(.*?)!";
$search_pattern[1]      = "!\[$match_1\]google(.*?)de(.*?)\[\/$match_1(.*?)\]!";
$search_pattern[2]      = "!\[$match_1(.*?)\](.*?)google(.*?)de(.*?)\[\/$match_1\:(.*?)\]!";
$search_pattern[3]      = "!\[$match_1=google(.*?)de(.*?)\](.*?)\[\/$match_1(.*?)\]!";
$search_pattern[4]      = "!\[$match_1=(.*?)google(.*?)de(.*?)\](.*?)\[\/$match_1\:(.*?)\]!";
$search_pattern[5]      = "!http\:\/\/www.weitere_domain.de(.*?)!";
$search_pattern[6]      = "!\[$match_1\]weitere_domain(.*?)de(.*?)\[\/$match_1(.*?)\]!";
$search_pattern[7]      = "!\[$match_1(.*?)\](.*?)weitere_domain(.*?)de(.*?)\[\/$match_1\:(.*?)\]!";
$search_pattern[8]      = "!\[$match_1=weitere_domain(.*?)de(.*?)\](.*?)\[\/$match_1(.*?)\]!";
$search_pattern[9]      = "!\[$match_1=(.*?)weitere_domain(.*?)de(.*?)\](.*?)\[\/$match_1\:(.*?)\]!";
$pattern_replacement[0] = $censored_txt;
$pattern_replacement[1] = $censored_txt;
$pattern_replacement[2] = $censored_txt;
$pattern_replacement[3] = $censored_txt;
$pattern_replacement[4] = $censored_txt;
$pattern_replacement[5] = $censored_txt;
$pattern_replacement[6] = $censored_txt;
$pattern_replacement[7] = $censored_txt;
$pattern_replacement[8] = $censored_txt;
$pattern_replacement[9] = $censored_txt;
$target_source          = $row['post_text'];
$message                = preg_replace($search_pattern, $pattern_replacement, $target_source);
- weitere_domain und de anpassen

usw. usf.

Code: Alles auswählen

$match_1                = 'url';
$censored_txt           = 'Nicht erlaubte Url';
..und..

Code: Alles auswählen

$target_source          = $row['post_text'];
$message                = preg_replace($search_pattern, $pattern_replacement, $target_source);
lässt du unangetastet.

Verfasst: 30.09.2008 13:37
von Metzle
Hallo,

alternativ kannst du dir auch die Mod th23 Autolinks einbauen, die dir die Sachen ersetzt.

Verfasst: 30.09.2008 13:48
von 4seven
Jup Metzle,

Alternativen gibt es immer..

Verfasst: 30.09.2008 14:31
von pimboli
Vielen Dank für Eure gute Hilfe. Ich habe nun 4sevens Vorschlag eingebaut, der mich überzeugt hat. Funktioniert einwandfrei.