Ich überlege grade was genau das bewirken soll. Soll das dazu dienen das der User egal was er auch versuchen mag keine Möglichkeit bekommt SQL Injections zu nutzen oder sonst einen Unfug zu machen?
Wie dem auch sei. Ich zerlege mal die einzelnen Vorgänge die du anwenden möchtest und vielleicht wird dadurch klar warum das nicht klappt.
|
PHP Source code
|
1
|
$tmpstring = strip_tags($sMessage);
|
Dadurch werden alle Tags aus dem String von HTML und PHP entfernt. Denke das ist gewollt so.
|
PHP Source code
|
1
|
$tmpstring = utf8_decode($tmpstring);
|
Damit soll der String in UTF-8 konvertiert werden. Das Euro Symbol ist jedoch nicht Bestandteil von ISO-8859-1 was dazu führt das das Euro Symbol als ? dargestellt wird. Damit das funktioniert verwende mal folgendes. (Quelle:
www.php.net)
|
PHP Source code
|
1
|
$tmpstring = iconv("UTF-8", "CP1252", $tmpstring);
|
|
PHP Source code
|
1
|
$tmpstring = htmlentities($tmpstring,ENT_QUOTES,UTF-8);
|
Hier gibst Du den Parameter ENT_QUOTES mit. Das bewirkt, dass einfache und doppelte Anführungszeichen konvertiert werden. Vielleicht möchtest Du genau das Gegenteil dann muss da ENT_NOQUOTES hin.
|
PHP Source code
|
1
|
$tmpstring = nl2br($tmpstring);
|
Da gibt es nichts zu zu sagen denke ich. Kann einfach so stehen bleiben.
|
PHP Source code
|
1
|
$tmpstring = mysql_escape_string($tmpstring);
|
Ist eigentlich auch klar. Schau mal da ->
http://de3.php.net/manual/de/function.my…cape-string.php
Seit PHP 4.3.0 sollte man lieber mysql_real_excape_string verwenden.
Zusammen gebaut sieht das ganze dann wie folgt aus.
|
PHP Source code
|
1
|
$tmpstring = mysql_real_escape_string(nl2br(htmlentities(utf8_decode(strip_tags($sMessage)),ENT_QUOTES,UTF-8)));
|
Habs nicht getestet aber sollte nach meinem Verständnis funktionieren.
Hoffe meine Antwort kommt nicht all zu spät