Daten aus Formular in Datenbank eintragen - ' ?
Maja
- php
Hallo,
habe mal eine kurze Frage, wenn ich aus einer MySql Datenbank Daten zum bearbeiten in einem Formular auslese muß ich doch irgendwas stripslashes oder addslashes machen, damit mir z.B. - Sofie's World - angezeigt wird und nicht nur - Sophie - und die Info nach dem Hochkomma nicht mehr.
Wäre dankbar wenn ihr mir kurz sagen könntet wie bzw. was ich genau machen muß und ob ich das für den Rückeintrag in die Datenbank auch beachten muß (da gibt es momentan noch keine Probleme).
Greetz Maja
Ich grüsse den Cosmos,
muß ich doch irgendwas stripslashes oder addslashes machen,
http://de3.php.net/manual/de/function.mysql-real-escape-string.php wäre auch sehr schnell zu finden, wenn man in der Doku nach mysql sucht.
Wäre dankbar wenn ihr mir kurz sagen könntet wie bzw. was ich genau machen muß und ob ich das für den Rückeintrag in die Datenbank auch beachten muß (da gibt es momentan noch keine Probleme).
Du musst alle Userdaten auf schädlichen Code überprüfen
Möge das "Self" mit euch sein
echo $begrüßung;
habe mal eine kurze Frage, wenn ich aus einer MySql Datenbank Daten zum bearbeiten in einem Formular auslese muß ich doch irgendwas stripslashes oder addslashes machen, damit mir z.B. - Sofie's World - angezeigt wird und nicht nur - Sophie - und die Info nach dem Hochkomma nicht mehr.
Zum einen gibt es das PHP-Feature Magic Quotes, das diese Aufgabe erledigen soll. Doch Magic Quotes erledigt seine Aufgabe in Hinblick auf eine MySQL-Datenbank nur unvollständig. Außerdem arbeitet es immer, auch wenn man gar keine Maskierung mit Slashes brauchen kann, beispielsweise bei HTML-Code. Sollte sich dieses Feature nicht generell ausschalten lassen, müssten zuerst seine Auswirkungen rückgängig gemacht werden. Siehe Kapitel "Disabling Magic Quotes" auf der verlinkten Seite.
Wenn Daten in einen bestimmten Kontext gebracht werden müssen, müssen diese immer kontextspezifisch kodiert werden.
SQL-Statements sind Text-Befehle. Wenn man Daten in einem Text-Kontext übertragen möchte, und diese Daten mit bestimmten Zeichen eingerahmt werden müssen (hier ' oder "), müssen diese (und noch ein paar mehr) Zeichen, so sie in den Daten vorkommen, maskiert werden. Die MySQL-API-Funktion mysql_real_escape_string() erledigt dies für MySQL maßgeschneidert. Diese Maskierung wird nur für diese Text-Schittstelle benötigt. MySQL entfernt die Maskierungszeichen aus dem Text-Datenstrom, bevor die Daten in die Datenbank eingetragen werden.
Die Ergebnismenge kommt in Reinform zurück. Hier ist keine Text-Schnittstelle zwischengeschaltet, die irgendwelche Maskierungen benötigt. Deshalb ist beim Auslesen der Ergebnismenge keine Demaskierung erforderlich.
Eine weitere Maskierung ist erst beim nächsten Ausgabemedium notwendig, beispielsweise über htmlspecialchars() für den HTML-Kontext.
echo "$verabschiedung $name";