Christoph: addslashes "Problem"

Hallo,

bei meinem SQL-INSERT-Statement benutze ich ua. addslashes. Wenn man z.B. jetzt Gänsefüßchen eingibt etwa so: "dummdidumm" dann speichert er das ganze in der Datenbank so ab: \"dummdidumm\"

Mit stripslashes gebe ich jetzt die DB-Einträge wieder aus, aber ein Backslash () bleibt immer stehen, also er entfernt nur 2 von 3...

Mein Code:
Code:

$q = sprintf("INSERT INTO gast (name, email, hp, inhalt, datum) VALUES ('%s','%s','%s','%s','".time()."')",
utf8_decode(mysql_real_escape_string(addslashes(strip_tags($_POST["name"])))),
utf8_decode(mysql_real_escape_string(addslashes(strip_tags($_POST["email"])))),
utf8_decode(mysql_real_escape_string(addslashes(strip_tags($_POST["hp"])))),
utf8_decode(mysql_real_escape_string(addslashes(strip_tags($_POST["meinung"])))));
$query_result = mysql_query($q);

Wo liegt mein Denkfehler? Vielen Dank für eure Hilfe!

Grüße Christoph

  1. Moin!

    bei meinem SQL-INSERT-Statement benutze ich ua. addslashes.

    Warum? Du benutzt doch schon mysql_real_escape_string().

    Das einzige Problem sind dann noch die magic_quotes_gpc(), die zusätzlich in übermittelte Formulardaten Slashes einfügen, und die man, sofern diese Option gesetzt ist, mit stripslashes wieder entfernen muß. Alternativ kann man auch versuchen, mit einer .htaccess-Datei oder durch Direktkonfiguration in der php.ini diese Einstellung abzuschalten.

    Bei der Ausgabe aus der Datenbank hat man dann slash-freien Text.

    - Sven Rautenberg