Webstatt.org - Community seit 2006 - 2012 (2024?)

URLs aus Text filtern

user-210
11.02.2007 13:17

Hallo,

Ich habe aktuell ein kleines Problem mit einem Gästebuch. Dort kommen täglich ca. 20-30 Spameinträge rein -.- Immer eine andere IP. Captcha und sowas zieht leider nicht. Ich vermute fast, dass das manuell eingetragen wird.
Der Inhalt sind einfache HTML-Befehle mit Links.
Da es im Gästebuch eine Möglichkeit gibt seine URL anzugeben, möchte ich nun URLs in der Nachricht komplett verbieten. Dazu muss ich die aber erstmal rausfiltern. Kann mir da jemand weiterhelfen? Ich habs nicht so mit regulären Ausdrücken etc.

Sie haben soeben die Position Ihres Mauszeigers auf dem Monitor verändert. Bitte starten sie Windows neu damit die Änderungen wirksam werden.
Avatar user-271
11.02.2007 14:09

$cont = preg_replace("/<a.*?>.*?<\/a>/is","",$cont);

werden einfach alle href rausgefiltert...wohin sie auch immer gehen....werden einfach durch nichts ersetzt


besser wäre es aber, wenn man garnicht erst eintragen könnte, dann würde sowas gut kommen:
if(preg_match("/<a.*?>.*?<\/a>/is",$cont)) {
print "aaahhah....da ist ein link drin";
}

#!/bin/bash
traurig){ neutral:& };:
user-329
11.02.2007 14:49

pass aber auf das dann auch andere html comandos dort nicht funktionieren... ich hatte das mal vergessen und hatte dann plötzlich ein 5000 px großes DIV über die ganze page gestreckt mit nem hackenkreuz im gästebuch^^

Avatar user-271
11.02.2007 16:22

da schauste dir am besten an:
http://de.php.net/htmlentities
oder
http://de.php.net/manual/en/function.htmlspecialchars.php

wobei htmlentitites eher trifft zwinkern

du kannst auch einfach alles rausfiltern, was damit zu tun hat:
$cont = preg_replace(array('/<.*?>.*?<\/.*?>/is','/<.*?>/i'zwinkern,'',$cont);

#!/bin/bash
traurig){ neutral:& };:
user-210
11.02.2007 16:30

Mein Gästebuch ist eigentlich schon ganz gut abgesichert. HTML-Code wird nicht umgewandelt, sondern angezeigt, aber das ist den Spammern wohl egal, da bekomm ich trotzdem ständig Posts rein. "Hauptsache der Link steht drin" oder so!
Jetzt hab ich eine Sperre eingebaut, dass man gar keine Einträge mit Links/URLs im Nachrichtentext einbauen kann.

Damit fang ich nun die unerwünschten Eingaben ab, in der Hoffnung dass das alles so funktioniert. Jedenfalls waren eigene Tests erfolgreich lächeln Jetzt heißt es erstmal abwarten.

} elseif(preg_match("/<a.*?>.*?<\/a>/is",$_POST['nachricht']) OR preg_match("/www\..*?/is",$_POST['nachricht']) OR preg_match("/http:\/\/.*?/is",$_POST['nachricht'])) {	

Sie haben soeben die Position Ihres Mauszeigers auf dem Monitor verändert. Bitte starten sie Windows neu damit die Änderungen wirksam werden.