Hallo Frank,
ich habe mich in letzter Zeit viel um das Thema Datenbanken etc. gekümmert. Speziel um eine Frage:
Wie sollte man am besten die Daten behandeln BEVOR die Daten in die Datenbank kommen? Einige sagen dazu, man sollte die Funktion htmlspecialchars() benutzen,
Das ist in den meisten Fällen unsinnig. Sinnvoll ist es meiner Meinung nach, Rohdaten zu speichern.
man sollte lieber die funktion mysql_real_escape_string() benutzen.
wenn Du mysql_query benutzt, kommst Du bei Eingabedaten überhaupt nicht um diese Funktion herum.
Andere wieder sagen, man sollte beide Funktionen verwenden?
Das ist in den meisten Fällen unsinnig, weil es meiner Meinung nach sinnvoll ist, Rohdaten zu speichern.
Soweit ich mich jetzt schon einlesen konnte, ist die funktion mysql_real_escape_string() dafür da sonderzeichen wie ' zu escapen. Die funktion htmlspecialchars() ist dazu da sonderzeichen wie ' zu entfernen
Nein, html_special_chars() wandelt bestimmte Zeichen um, die in HTML eine bestimmte Bedeutung haben. Du denkst derzeit an Datenbanken, an SQL. Da ist HTML völlig irrelevant.
Die Frage um die es eig. geht ist also, in welcher Form man die Datenbank am besten bringen sollte. Sollte man lieber die Funktion mysql_real_escape_string() benutzen, um Daten im klartext mit allen Zeichen in die DB zu bringen,
Ja - und vergiß bitte nicht, ganz zu Beginn in Abhängigkeit der Magic Quotes ggf. stripslashes auf die Daten anzuwenden.
um sie erst beim auslesen mit htmlspecialchars() zu benutzen
Nein, nicht beim Auslesen. Beim Ausgeben in einem HTML-Kontext. Sonst ist das völlig überflüssig. Datenbanken existieren nicht nur im Webumfeld.
Derzeit lasse ich folgende Funktionen über meine Daten laufen bevor sie gespeichert werden:
- htmlspecialchars() + 'ENT_QUOTES'
Meiner Meinung nach unsinnig.
- trim()
Das kann in Abhängigkeit vom Umfeld unsinnig sein.
- stripslashes()
Das ist nur in Abhängigkeit von magic_quotes_gpc sinnvoll, nicht generell. Du solltest zudem an Arrays denken.
ist da mysql_real_escape_string() doch noch wichtig?
Ja, Dein Vorgehen ist alles andere als sinnvoll und zielgerichtet. Du schlägst blind um Dich, sonst nichts. Lies Dir bitte folgendes Posting von dedlfix in der aktuellen Forumshauptdatei durch. Das erklärt das ganz gut.
Freundliche Grüße
Vinzenz