Stefan: POST übergabe erzeugt einen backslash

hallo

ich hab n problem mit den backslash.

wenn ich per POST die veriablen übergebe und sie in eine datei schreibe , so erzeugt jedes anführungszeichen eine backslash davor.

sprich
wenn ich folgendes übergeben will:

hansi sagte: "hallo du"
bekomme ich
hansi sagte: "hallo du" in die text datei geschrieben.

ich schreibe die variable mit fwrite(). es funzt so weit alles, bis auf den backslash halt

weiß jemand rat?

wäre sehr dankbar für jede hilfe, warum erzeugt er das? und wie unterdrücke ich das?
vielleicht hat jemand ein link? ich habe leider nichts konkretes gefunden

mfg
Stefan

  1. Hallo Stefan,

    du musst die PHP-Funktion stripslashes vor dem Speichern in die Datei durchführen lassen.

    Dazu bei www.PHP.net:

    http://www.php.net/manual/de/function.stripslashes.php

    Viel Spaß weiterhin,

    Marius

    1. hallo Marius

      du musst die PHP-Funktion stripslashes vor dem Speichern in die Datei durchführen lassen.

      super :)

      funzte auf anhieb.
      vielen dank, hab zwar vorher in php.net auch gesucht , habs aber nicht gefunden, tja, suchen muß auch gelernt sein;)

      so long
      Stefan

      1. Aloha!

        funzte auf anhieb.
        vielen dank, hab zwar vorher in php.net auch gesucht , habs aber nicht gefunden, tja, suchen muß auch gelernt sein;)

        Vielleicht noch ein wenig Hintergrundinfo:

        PHP hat eine Funktion "magic_quotes". Die bewirkt, daß alle einfachen und doppelten Anführungsstriche, die von Formularen gesendet werden (egal ob POST oder GET), mit einem Backslash escapet werden. Das hat den großen Vorteil, daß die Mehrheit der Leute sich mit ungeprüften Formulareingaben nicht die Datenbank zerschießen lassen kann, denn oftmals werden Eingaben ungeprüft in eine SQL-Abfrage gesteckt:

        $sqlquery="SELECT * FROM tabelle WHERE spalte='$formularwert'";

        Diese Anweisung erzeigt einen String, in dem $formularwert durch den Inhalt dieser Variable ersetzt wird. Würde man diese Variable aus einem Formular empfangen und den String "Tu's doch" (ohne die doppelten Anführungszeichen) übergeben, würde die SQL-Abfrage so aussehen:

        $sqlquery="SELECT * FROM tabelle WHERE spalte='Tu's doch'";

        Wie man sofort sieht: Da ist ein Anführungszeichenfehler. Das verhindert das Abspeichern in der Datenbank, da es zu einer Fehlermeldung kommt.

        Mit einem Backslash ist das Anführungszeichen des Strings escapet und alles läuft glatt:
        $sqlquery="SELECT * FROM tabelle WHERE spalte='Tu's doch'";

        Bedenke: Die Funktion "magic_quotes" kann ausgeschaltet sein (wenngleich mir kein wichtiger Grund einfällt, das zu tun). Dann müßtest du mit addslashes() die Escapezeichen manuell hinzufügen. Bei http://www.php.net sind in der Befehlsbeschreibung von addslashes() und stripslashes() Anmerkungen dazu, wie man sowas feststellt und programmiert.

        - Sven Rautenberg