Om nah hoo pez nyeetz, Kasandra!
diese würde ich gerne so sichern, das kein Schadcode beim versenden drin ist.
Wenn ich es richtig verstehe, müsste es so funktionieren und sicher sein:
mysql_real_escape_string(htmlentities('Daten aus dem Formular'));
Du musst immer nur das escapen, was tatsächlich Schaden anrichten kann. Also beispielsweise SQL-Syntax, wenn du die Daten in einer Datenbank speichern möchtest.
⇒ mysql_real_escape_string('Daten aus dem Formular');
Die besonderen HTML-Zeichen können und sollen dabei ruhig in der DB stehen. htmlentities ist dabei natürlich der overkill, denn, eine sinnvolle Zeichenkodierung (UTF-8) und deren korrekte Angabe vorausgesetzt, müssen die Umlaute nicht verstümmelt werden. Du kannst also vergessen, dass du je wusstest, dass die Funktion htmlentities existiert. ;-)
Bei der Ausgabe im HTML-Kontext können natürlich auch wieder Probleme auftauchen. Dafür ist htmlspecialchars (konvertiert nur >, <, & sowie je nach Einstellung Anführungszeichen) ausreichend.
⇒ htmlspecialchars('Daten aus der Datenbank')
Dann kann dir auch keiner schädlichen, nervigen JavaScript-Code unerschieben, weil aus
„<script … >“ „<script … >“ wird, was im Browser wieder als „<script … >“ dargestellt wird ohne ein HTML-Tag zu sein.
Matthias