Hallo Marcus,
htmlspecialchars oder htmlentities wandeln dir Sonderzeichen in den entsprechenden HTML-Code um...so wird aus & -> & und aus ü -> ü.
Deine Datenbank sollte mit solchen Sonderzeichen gut klarkommen und deshalb verwendet man die Befehle eigentlich erst bei der Ausgabe...
Beispiel:
$sql_statement = "SELECT * FROM beispiel WHERE ID = 12";
$result = mysql_query($sql_statement);
$entry = mysql_fetch_array($result);
//Ausgabe
echo htmlentities($entry[tabellenspalte]);
Sollten aber schon die Einträge in deiner Datenbank (einfach im phpmyadmin nachschauen) Fehler aufweisen, wie bei mir, wird die ganze Geschichte etwas komplizierter.
Meine Log-Files haben im übrigen Aufschluss gegeben. Die fehlerhaften Einträge kommen alle aus einer externen Quelle. Scheinbar verdient jemand seine Kohle dadurch die Mitteilungen auf möglichst vielen Seiten zu verteilen und macht dies - eigentlich geschickt - per Skript.
Das blöde ist, dass er ganz offensichtlich eine fehlerhafte Zeichenkollation verwendet und mir damit zusätzliche Arbeit verursacht ._.
Ein kleiner Auszug aus dem Logfile (IP - Adresse blende ich aus...)
Gelesene Daten:
fputs($logfile, date("d.m.Y, H:i:s",time()) . ", " . $_SERVER[\'REMOTE_ADDR\'] . ", " . $_SERVER[\'REQUEST_METHOD\'] . ", " . $_SERVER[\'SCRIPT_NAME\'] .", ". $_SERVER[\'HTTP_USER_AGENT\'] . ", " . $_SERVER[\'HTTP_REFERER\'] ."\\n");
Normaler Eintrag:
26.06.2010, 00:47:38, IP-ADRESSE, POST, /pressemitteilungen/pressemitteilung_eintragen.php, Mozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4, www.portalderwirtschaft.de/pressemitteilungen/pressemitteilung_eintragen.php
Fehlerhafter Eintrag:
26.06.2010, 09:30:21, IP-ADRESSE, POST, /pressemitteilungen/pressemitteilung_eintragen.php, Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) FirePHP/0.3,
Das ist noch nicht soo spektakulär, allerdings schickt Nr. 2 z.T. 20 Einträge nacheinander exakt im 4 Sekunden Takt. Das kann nun wirklich kein Mensch (auch nicht mit Copy-Paste) leisten.
Vor allen Dingen da es sich um vollkommen unterschiedliche Einträge handelt, in der unterschiedliche Ansprechpartner und unterschiedliche Einsteller genannt werden ...
Wie gesagt, ein Captcha wird wohl die Lösung sein - auch wenn dann weniger Content kommt!
Viele Grüße
Johnny
Beitrag erstellen
EinloggenKostenlos registrieren