Seite 1 von 1

Themen mit http nicht zulassen

Verfasst: Mo 14.Aug, 2006 10:02
von Holger
Hi,

kann ich irgendwie verhindern, dass Themen und Antworten mit URLs geschrieben werden?
Am liebsten wäre mir, eine Fehlermeldung wird angezeigt, wenn jemand versucht eine Antwort/ein Thema mit URL zu speichern.

Gruss
Holger

Verfasst: Mo 14.Aug, 2006 13:34
von oxpus
Man könnte mittels preg_match vorhandene URL-Tags im Post zählen lassen und bei einem Ergebnis dann meckern.
Also sowas in der Art:

Code: Alles auswählen

if (preg_match("/\[url/", $message))
{
message_die(GENERAL_MESSAGE, 'Keine Links posten!');
}
Möglich wäre auch:

Code: Alles auswählen

if (strpos($message, "[url"))
{
message_die(GENERAL_MESSAGE, 'Keine Links posten!');
}
Einbauen würde ich das in der posting.php direkt vor der Zeile mit

Code: Alles auswählen

prepare_post(...);
Ansonsten müsste man in der bbcode.php in der Funktion make_clickable zusätzlich alle umgesetzten Links zählen, sofern diese eben vorhanden sind.
Da müsste ich mir aber nochmal eingehender Gedanken machen, was da zu tun wäre.
Oder Du baust die Formatierung aus der viewtopic.php einfach aus...

Verfasst: Mo 14.Aug, 2006 13:38
von Holger
Die von Dir vorgeschlagenen Code-Schnipsel funktionieren nur, wenn mit dem bbcode [url] gearbeitet wird?
Könnte man auf ähnlicher Art nach "http" suchen?

Verfasst: Mo 14.Aug, 2006 13:43
von oxpus
Klar.
Musst dann eben eine 2. Prüfung machen.
Sinnvoll wären "http", "www", "ftp", etc...

Verfasst: Mo 14.Aug, 2006 13:53
von Holger
Ok, muss ich wirklich eine 2. Prüfung machen oder würde z.B.

Code: Alles auswählen

if (strpos($message, "http")) 
{ 
message_die(GENERAL_MESSAGE, 'Keine Links posten!'); 
}
reichen?

Verfasst: Mo 14.Aug, 2006 14:10
von oxpus
Nicht wirklich, da man ja Links auch nur mit www.oxpus.de posten kann, also ohne http.
Vielleicht wäre es geschickter, selbst bei diesen vielen Prüfungen einen Zähler zu verwenden, also vor der ersten URL-Prüfung auf 0 und mit jeder Regel eins hochzählen.
Und nach der letzten Regel prüfen, ob der Zähler > 0 ist und dann die Meldung ausgeben.
Was anderes geschieht ja in der bbcode.php mit den unterschiedlichen Link-Formen ja auch nicht beim Formatieren...

Verfasst: Mo 14.Aug, 2006 14:18
von Holger
Da die Spambots fast immer links mit http posten reicht das ja.

Könnte ich sonst ganz stupide auch

Code: Alles auswählen

if (strpos($message, "http")) 
{ 
message_die(GENERAL_MESSAGE, 'Keine Links posten!'); 
}

if (strpos($message, "www")) 
{ 
message_die(GENERAL_MESSAGE, 'Keine Links posten!'); 
}

prepare_post(...);
verwenden?

Verfasst: Mo 14.Aug, 2006 14:34
von oxpus
Ja, das ginge auch. Vergrössert aber dabei das Script, welches der Server ja komplett laden muss.
Aber funktionabel...

Verfasst: Mo 20.Nov, 2006 11:12
von Holger
Ich habe

Code: Alles auswählen

if (strpos($message, "http")) 
{ 
message_die(GENERAL_MESSAGE, 'Keine Links posten!'); 
} 


if (strpos($message, "www")) 
{ 
message_die(GENERAL_MESSAGE, 'Keine Links posten!'); 
} 


prepare_post(...);
eingesetzt. Trotzdem werden z.B. www.test.de nicht angemeckert!

/Holger

Verfasst: Mo 20.Nov, 2006 12:59
von Bootenks
Och Leute... Sowas macht man doch nicht...

strpos gibt beim Fund die Stelle als int zurück und im negativen Fall den BOOLEAN Wert FALSE!

Klar ihr denkt, dass wenn er nichts findet da gar nicht reingeht und wenn er was findet die Zahl als TRUE wertet! Dem ist aber nicht in allen Fällen so. Um genau zu sein klappt das bei einem Wert nicht: 0 Wenn man in einer Bedingung nur 0 stehen hat, bedeutet dieses FALSE! Sprich diese Stelle spuckt euch in die Suppe. *grins*

Verfasst: Mo 20.Nov, 2006 13:06
von Holger
UND?
Wie ist die Lösung, Schlaumeier? *fgrins*

:rofl:

Verfasst: Mo 20.Nov, 2006 13:17
von Bootenks
Ich und Schlaumeier :P Hier führen viele Wege nach Rom... So würde es z.B. gehen:

Code: Alles auswählen

!stristr($message, "http") === FALSE
funktionieren :P

Naja ich würde es aber an deiner Stelle lieber mit reg. Expression machen :)

Edit:
jetzt hab ich dir das Bsp unterschlagen.. :P nicht, dass ich noch ein Drückeberger bin :P

Code: Alles auswählen

eregi("http|www", $message)

Verfasst: Mo 20.Nov, 2006 13:20
von Holger
UND??????????????? WIE??????????? :wall:

Oder: wie kann ich

Code: Alles auswählen

!stristr($message, "http") === FALSE
mit dem anderen kombinieren?



EDIT:
Also:

Code: Alles auswählen

if (eregi("http|www", $message)) 
{ 
message_die(GENERAL_MESSAGE, 'Keine Links posten!'); 
} 

prepare_post(...);

Verfasst: Mo 20.Nov, 2006 13:30
von Bootenks
jep so schaut es aus ;)