Mailinglisten-Archive |
Hi Christoph, Zitat von Christoph Schönian: > Eben fand ich beunruhigendes auf sonst lauffähigem System. > (Debian/Php-4.3.4) Du meinst ein von Dir unerwartetes Systemverhalten... ;-) > Usereingaben jage ich durch eine Funktion für nl2br addslashes und > strip_tags. > Das klappt(e) auch sonst....... > Jetzt aber habe ich in einem Textfeld <'> statt funtionierenden <"> und > bekomme > einen Insert-Error. > > Php.ini - Magic_quotes_gpc stehen auf on. > Die dafür notwendige Zeile aus der Funktion: > $_POST[$key] = ini_get('magic_quotes_gpc') ? nl2br(strip_tags($val)) : > nl2br(addslashes(strip_tags($val))); > > Scheinbar wird das Hochkomma nicht geslashed. Warum? War das etwa schon > immer so? > In den bugs für 4.3.4 ist nix zu finden. Kennt das jemand? das meiste, was man nicht einordnen kann, ist trotzallem kein Bug. :-) Hast Du Dir den mit addslashes() behandelten String denn mal ausgeben lassen? addslashes() stellt sowohl den einfachen als auch den doppelten Anfuehrungsstrichen einen Backslash voraus. Das sollte es auch bei Dir tun. :-) Dein Problem scheint vielmehr zu sein, dass ein Datenbank-Insert fehlschlaegt. D.h. Du must einmal gucken, wie Deine Datenbank denn syntaktische Zeichen maskiert haben will, wenn sie innerhalb eines Strings vorkommen. Wenn die Datenbank ein ' als '' maskiert haben will, bringt die Maskierung \' natuerlich nichts. :-) Wenn Du eine MySQL-Datenbank hast, solltest Du mit folgender Funktion maskieren: http://de3.php.net/manual/de/function.mysql-escape-string.php Viele Gruesse Lutz
php::bar PHP Wiki - Listenarchive