Text genauso in DB speichern

kesnw

Erfahrenes Mitglied
Hallo,

ich habe ein Textfeld, dessen Inhalt ich in eine Datenbank speichere. Wenn ich jetzt aber "wenn's regnet" speichere wird "wenn/'s regnet" gespeichert. Wiederhole ich das steht irgendwann "wenn////////////////////////////'s regnet" in der DB. Wie kann ich das verhindern?
 
Hallo!

Nein, das tut dein Server nicht :D
Wenn überhaupt speichert er "wenn\'s regnet"... ;)

Dieses Phänomen basiert auf den magic quotes. Diese kriegst du durch die PHP-Funktion stripslashes() weg. Vor dem Hinzufügen in die MySQL-Datenbank solltest du aber unbedingt per mysql_real_escape_string($deinString, $DB_ressource); wieder mit den notwendigen Slashes versehen, da dir sonst dein Query zerstört wird.

Mamphil
 
Danke!

Heißt das aber im Umkehschluss, dass ich bei einem Fragebogen alle Inhalte mit mysql_real_escape_string() in die DB speichern muss?
 
Du solltest immer alle Variablen, die per Usereingabe in Dein Query einfließen mit [phpf]mysql_real_escape_string[/phpf] bearbeiten, um SQL-Injection zu vermeiden.
Beispiel:
PHP:
//angenommen $s wäre die Usereingabe für 
//eine Suche nach Benutzern eines Forums:
$s="';DELETE FROM usertabelle WHERE username LIKE '";
$q="SELECT * FROM usertabelle WHERE username LIKE '%".$s."%'";
Setze die Strings mal ineinander ein und schaue, was sich dabei für Querys ergeben.

Gruß hpvw
 
Zurück