.. noch einmal: Array übergeben

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • .. 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.

    Comment


    • #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?

      Comment


      • #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...

        Comment


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

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

          Comment


          • #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\">";

            Comment


            • #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.

              Comment


              • #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.

                Comment


                • #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!
                  Last edited by bernina; 06-07-2005, 16:41.

                  Comment


                  • #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

                    Comment

                    Working...
                    X