dedlfix: addslahes liefert nicht das gewünschte Ergebnis

Beitrag lesen

echo $begrüßung;

ich habe ein php-Formular, dessen Eingaben ich erst nach Behandlung mit addslashes in die mysql-Datenbank speichere. Das Escapen scheint dabei aber nicht wie gewünscht zu funktionieren.
Ein String wie \ ' steht auch genauso in der Datenbank. Wenn ich mir die Werte aus der Datenbank mit stripslashes anzeigen lassen will, wird daraus natürlich \ '

Bisher nicht erwähnt wurde noch ein PHP-Feature namens Magic Quotes. Wenn das aktiviert ist, wendet es bereits selbständig addslashes() auf sämtliche Eingabedaten an. Sowas gehört sich nicht. Daten müssen dem Ausgabemedium entsprechend behandelt werden, nicht generell auf Verdacht für ein einziges spezifisches und dann noch dazu nicht richtig. addslashes() und Magic Quotes berücksichtigen nicht alle Zeichen, die für MySQL beachtet werden müssen. Möchte man die Eingabedaten gar nicht in eine Datenbank ausgeben sondern beispielsweise in ein HTML-Dokument (z.B. beim Affenformular), dann sind die Slashes komplett fehl am Platz. Hier muss htmlspecialchars() angewendet werden.

Vorschlag: Versuche die Magic Quotes zu deaktivieren. Wenn das nicht generell geht, verwende das Codebeispiel auf der verlinkten Seite einmalig am Scriptanfang, um die Auswirkungen der Magic Quotes rückgängig zu machen. Verwende vor einer Datenausgabe die speziell für dieses Medium vorgesehene Behandlung.

echo "$verabschiedung $name";