Rolf B: Variablen absichern per mysqli_real_escape_string: Reicht das aus?

Beitrag lesen

Hallo Christian_D,

HTML Symbole wie " haben für SQL keine Bedeutung. Es ist unproblematisch, wenn sie in einem SQL Statement innerhalb einer Zeichenkette auftauchen.

Wenn ein Anwender in einem input-Element so etwas wie Der "größte" Mist eingibt, solltest Du auch genau das in PHP bekommen, und nicht etwa Der &quot;gr&ouml;&szlig;te&quot; Mist. Eine Codierung von speziellen Zeichen für HTML ist nur erforderlich, wenn Du Daten für die Ausgabe im HTML aufbereitest. Wenn Du deine HTML Seite UTF-8 codiert ausgibst (und dein PHP Code in UTF-8 Codierung geschrieben ist), brauchst Du die meisten Zeichen sowieso nicht zu verschlüsseln, das ist nur für < > & erforderlich.

Du musst bei der Eingabe nur dahinhgend mit ö und ß aufpassen, dass Du sie bei ordentlich konfiguriertem Server als UTF-8 Codierung bekommst, d.h. die klassischen Stringfunktionen von PHP behandeln sie wie zwei Zeichen. Wenn Du die Connection zum SQL Server korrekt herstellst, sollte das aber vom SQL Server transparent behandelt werden und korrekt in der Datenbank landen. Prüfen solltest Du trotzdem, ob ein ö als ö oder als ö gespeichert wird.

Ich gebe zu, das ist alles verwirrend. Es gibt mehrere Kontexte, es gibt unterschiedliche Zeichencodierungen, da muss man sich erst einmal hindurchfinden. Aber man muss es tun. Andernfalls fällt man auf Mythen herein oder führt unnötige oder gar falsche Schritte aus.

Rolf

--
sumpsi - posui - obstruxi