.. noch einmal: Array übergeben

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

  • .. noch einmal: Array übergeben

    Hallo zusammen,

    ich möchte den Inhalt eines array an ein sich selbst aufrufendes script übergeben.
    Leider hat mich die Recherche hier im Forum nicht weitergebracht, so dass ich mir ein kleines Testscript gebastelt habe um die Funktionen "serialize" und "unserialize" auszuprobieren.

    PHP-Code:
    <form action="<?php print$_SERVER['PHP_SELF'];?>" method="post">
      print_r ($_POST);

      $relationen = unserialize($_POST['relationen']);
      print "<br>relationen unser.:  ";
      print_r ($relationen);

      $relationen=array(aktstand, bearbnw, hvgruppe);
      print "<br>relationen: ";
      print_r ($relationen);

      $relationen=serialize($relationen);
      print "<br>relationen nach ser.: ";
      print_r ($relationen);
      print "<br>";
      print"<input name=\"ab\" size=\"50\">";
      print"<input type=\"submit\" size=\"15\" value=\"speichern\">";
      
      print "<input type='hidden' method=\"post\" name=\"relationen\" value=\"$relationen\">";
    Beim Start gibt (wie von mir erwartet) es folgende Ausgabe:
    Array ( )
    relationen unser.:
    relationen: Array ( [0] => aktstand [1] => bearbnw [2] => hvgruppe )
    relationen nach ser.: a:3:\{i:0;s:8:"aktstand";i:1;s:7:"bearbnw";i:2;s:8:"hvgruppe";}
    Nach einem submit gibt es Folgendes (so nicht erwartet):
    Array ( [ab] => qq [relationen] => a:3:\{i:0;s:8: )
    relationen unser.:
    relationen: Array ( [0] => aktstand [1] => bearbnw [2] => hvgruppe )
    relationen nach ser.: a:3:\{i:0;s:8:"aktstand";i:1;s:7:"bearbnw";i:2;s:8:"hvgruppe";}
    In der Ausgabe "relationen user.:" hätte ich jetzt den gleichen Inhalt wie im array "relationen" erwartet (aktstand ...).

    Der "\" nach "a:3:" ist in der Ausgabe nicht drin - aber ohne gibt's das (würde sogar irgendwie passen):
    a:3i:0;s:8:"aktstand";i:1;s:7:"bearbnw";i:2;s:8:"hvgruppe";}


    Was mache ich denn da falsch?

    Gruß
    Jürgen

  • #2
    Re: .. noch einmal: Array übergeben

    magic_quotes_gpc
    strip_slashes()
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Gibt es da noch konkretere Hinweise?

      get_magic_quotes_gpc() bringt bei mir "1"

      add- und stripslashes habe ich in diversen Varianten ohne Erfolg ausprobiert.

      Nach dem "unserialize" bleibt alles leer?

      Kommentar


      • #4
        Du sollst die Funktionen nicht nur ausführen, sondern auch die entsprechenden beschreibungen lesen.

        Hättest du das gemacht, würdest du wissen, was der Rückgabewert von get_magic_quotes_gpc bedeutet und wie du stripslashes einsetzen musst.

        Versuch selbst es zu verstehen, wenn's nicht klappt, dann psote eifnach, was du wie verstanden und was du daraufhin gemacht hast
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Re: .. noch einmal: Array übergeben

          OffTopic:
          Was ist denn das für'n Smilie? *probier

          Kommentar


          • #6
            Ich habe das so verstanden, das bei "1" bei der Variablenübergabe die " mit einem Backslash geschützt werden, den man dann beim Empfang der Variablen mit "stripslashes" wieder entfernen muss.

            Würde nach meinem Verständnis bedeuten:
            PHP-Code:
            <form action="<?php print$_SERVER['PHP_SELF'];?>" method="post">
              print_r ($_POST);

            [B]
              $relationen = stripslashes ($_POST['relationen']);
              $relationen = unserialize($relationen);
            [/B]
            //  $relationen = unserialize($_POST['relationen']);
              print "<br>relationen unser.:  ";
              print_r ($relationen);

              $relationen=array(aktstand, bearbnw, hvgruppe);
              print "<br>relationen: ";
              print_r ($relationen);

              $relationen=serialize($relationen);
              print "<br>relationen nach ser.: ";
              print_r ($relationen);
              print "<br>";
              print"<input name=\"ab\" size=\"50\">";
              print"<input type=\"submit\" size=\"15\" value=\"speichern\">";
              
              print "<input type='hidden' method=\"post\" name=\"relationen\" value=\"$relationen\">";

            Kommentar


            • #7
              Original geschrieben von bernina
              PHP-Code:
              $relationen=array(aktstandbearbnwhvgruppe); 
              wo hast du denn diese konstanten definiert?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Original geschrieben von bernina
                PHP-Code:
                print "<input type='hidden' method=\"post\" name=\"relationen\" value=\"$relationen\">"
                dir ist doch wohl aufgefallen, dass in deiner ersten testausgabe nach dem serialize der string auch doppelte anführungszeichen enthielt ...?

                dann sollte dir aber auch auffallen, dass dadurch dein value-attribut, dessen wert du ebenfalls in solche einfasst, zu früh wieder beendet wird.


                htmlspecialchars() vor dem einsetzen ins value hilft weiter.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  PHP-Code:
                  $relationen=array(aktstandbearbnwhvgruppe); 
                  wo hast du denn diese konstanten definiert?
                  Das war mir bei meinen Tests auch gerade aufgefallen... - aber die Lösung des Problems war:

                  htmlspecialchars() vor dem einsetzen ins value hilft weiter
                  Danke!!

                  Aber diese Variablenübergabe ist schon eine schaurige Sache mit PHP!
                  Zuletzt geändert von bernina; 06.07.2005, 16:41.

                  Kommentar


                  • #10
                    Original geschrieben von bernina

                    Aber diese Variablenübergabe ist schon eine schaurige Sache mit PHP!
                    stimm .... aber nur weil man es versäumt hat, Grundlagen zu lernen

                    Kommentar

                    Lädt...
                    X