$_POST und Backslashes

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • $_POST und Backslashes

    Ich bin auf einen neuen Server umgezogen und beim Einrichten meiner Webprojekte auf ein Problem gestoßen, dass ich jetzt noch nicht so ganz begreifen kann:
    Wenn ich Daten mit POST in Formularen übergebe, werden alle Anführungszeichen, Hochkommas und Backslashes maskiert.
    Vor jedem Anführungszeichen stehen dann zwei Backslaches,
    vor jedem Hochkomma drei Backslashes und
    vor jedem Backslash wieder drei Backslashes.

    magic_quotes_runtime steht bereits auf 0, daher kann es das auch nicht verursacht haben. Aber woher kommt dieses "Phänomen" und wie kann ich es beseitigen?
    arrays sind klasse

  • #2
    Liest du die Daten aus einer Datenbank aus oder kommen diese Backslashes direkt nach dem Absenden des Formulars zustande?

    Kommentar


    • #3
      Was sagt magic_quotes_gpc?
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        zeig mal komplette ini-Einstellungen von magic_quotes

        dein code sieht so aus? print_r($_SERVER)?

        Kommentar


        • #5
          Jep, die Daten kommen direkt über ein Formular.

          magic_quotes_gpc sagt 1

          Also liegt's an magic_quotes_gpc?
          Aber weshalb gleich die drei- bzw. zweifache Maskierung?
          arrays sind klasse

          Kommentar


          • #6
            mich ignorierst du?

            Kommentar


            • #7
              Sorry, keine Absicht

              Wie kann ich die ini-Einstellungen von magic_quotes abrufen?
              Was willst du mit $_SERVER?
              arrays sind klasse

              Kommentar


              • #8
                1) meinte damit alle verfügbaren magic_quotes_...()-funktionen
                2) soll natürlich POST heißen.

                Kommentar


                • #9
                  Mit ini_get_all() bin ich auf das hier gestoßen:

                  'magic_quotes_gpc' =>
                  array (
                  'global_value' => '1',
                  'local_value' => '1',
                  'access' => 6,
                  ),
                  'magic_quotes_runtime' =>
                  array (
                  'global_value' => '0',
                  'local_value' => '0',
                  'access' => 7,
                  ),
                  'magic_quotes_sybase' =>
                  array (
                  'global_value' => '0',
                  'local_value' => '0',
                  'access' => 7,
                  ),


                  Und ja, habe zum Auslesen von $_POST dies hier verwendet: var_export($_POST);

                  Ich bleibe aber weiterhin verwirrt wegen der drei- bzw. zweifachen Maskierung...

                  arrays sind klasse

                  Kommentar


                  • #10
                    Original geschrieben von Maranello-550
                    Aber weshalb gleich die drei- bzw. zweifache Maskierung?
                    Das kann eigentlich nur (*) davon kommen, dass im formular im Browser per javascript (*) bereits eine Ergänzung mit \ stattfindet, und magic_quotes_gpc =1 nochmals eine Ergänzung macht (je vom " und vom \)

                    (*) beziehungsweise so könnte es ablaufen. Vielleicht laufen die Daten des Fragers auch durch 2 php-Stufen?

                    (****)
                    Noch der dümmeste aller Gedanken zum Thema: Oder es wird, wenn magic_quotes_gpc 1 ist, ein addslashes() vorgesehen (anstatt stripslashes()). Ich bin gespannt, was es dann am Schluss gewesen ist.
                    Zuletzt geändert von heiss; 21.07.2006, 16:09.

                    Kommentar


                    • #11
                      Wer es testen möchte:
                      http://87.106.20.185/temp.php

                      Das ist der code:
                      PHP-Code:
                      <?php

                      var_export
                      ($_POST);

                      ?>
                      <br><br>
                      <form action="temp.php" method="post">

                      <textarea name="txt">Hallo "da draußen"! Wie geht's?
                      Ein (1) Backslash --> \\</textarea>

                      <input type="submit">

                      </form>
                      arrays sind klasse

                      Kommentar


                      • #12
                        Es liegt am var_export. Mit print_r passiert es nicht.

                        (ich habe magic_quotes_gpc=off und bekomme weniger backslashes.) Will heissen, das $_POST enthält die richtige Anzahl backslashes.
                        Zuletzt geändert von heiss; 21.07.2006, 16:18.

                        Kommentar


                        • #13
                          Da var_export validen PHP-Code erzeugen soll, muss es diese Maskierung doch vornehmen.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Habe jetzt var_export($_POST) durch echo $_POST['txt'] ersetzt, und siehe da, jetzt sind nur noch einfache Backslashes vorhanden.
                            Schonmal ein Fortschritt, aber wie bekomme ich jetzt magic_quotes auf ordentliche Weise geregelt?
                            arrays sind klasse

                            Kommentar


                            • #15
                              Das ist Standard: wenn magic_quotes_gpc gesetzt ist, als Gegenmittel stripslashes vorsehen. Braucht es details?

                              Kommentar

                              Lädt...
                              X