dedlfix: Text in Mysql Datenbank abpeichern

Beitrag lesen

Tach!

ich möchte aus einem Formular die Daten in meine MYSQL Datenbank abpeichern. Jetzt habe ich hier über Kontextwechsel gelesen und bin mir jetzt unsicher ob ich das richtig mache.

Wenn ich in einem TEXTAREA HTML Feld einen Text habe und diesen abspeicher, muss ich ihn doch auf bösen Code hin absichern.

Nein, die Entschärfung "bösen Codes" ist nicht das Hauptziel sondern nur eine erwünschte Nebenwirkung. Hauptziel ist, dass die Daten für das SQL-Statement ein syntaktisch korrektes Stringliteral ergeben. Also, falls du überhaupt den Weg des Einbettens in das Statement wählen willst und nicht gleich auf Prepared Statements setzen möchtest, welche dieses Problem prinzipbedingt gleich gar nicht haben. (Zu empfehlen ist dann auch eher PDO statt mysqli, weil PDO programmiererfreundlicher verwendet werden kann.)

aber damit bekomme ich immer folgende Zeichen \r\n in meine Datenbank

Was konkret siehst du? Und auf welche Weise "schaust" du? Sind es die 4 Zeichen \ und r und \ und n oder meinst du wirklich Wagenrücklauf U+000D und Zeilenumbruch U+000A?

Wenn du bestimmte Zeichen nicht haben möchtest, dann untersuch erstmal, wo sie herkommen. Sind sie bereits in den Eingabedaten? Dann wende auf diese eine Stringersetzung, um sie zu entfernen. Zum Untersuchen lässt sich urlencode() sehr gut missbrauchen. Es lässt die häufig verwendeten lateinischen Grundbuchstaben (nebst Ziffern und noch ein paar anderen Zeichen) ungeschoren und damit deutlich erkennbar, konvertiert dafür die anderen Zeichen in Prozentkodierung, so dass man ihre Bytewerte sehen kann.

Nichtsdestotrotz muss weiterhin der Kontextwechsel beachtet werden.

dedlfix.