Ankündigung

Einklappen
Keine Ankündigung bisher.

Sessionwerte übergeben

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

  • Sessionwerte übergeben

    Hi,

    ich versuche anhand dieses kleinen Skripts einen Session-Wert zu setzen und wieder auszugeben:

    news.php
    PHP-Code:
    <?php session_start();

            if(isset(
    $_GET["uid"])) 
             { 
                  echo 
    $_GET["uid"];
                  echo 
    $_SESSION["2"];
              }


    function 
    Display($url)
    {
          
    $_SESSION["2"]=$url;
          return 
    $page "<li><a href=\"./news.php?uid=1\">Test</a>";
    }    

    echo 
    Display("Test");
    ?>
    Leider kommt aber die echo $_SESSION["2"]; nie raus und auch trotz E_ALL kriege ich keinen Fehler. Ich sehe nur die uid. Kann mir dabei jemand weiterhelfen? Wieso verliert mein Apache Server immer diese Werte?

    Gruß kami


  • #2
    Rück doch bitte erst mal den Code vernünftig ein.

    Kommentar


    • #3
      Zitat von kami Beitrag anzeigen
      PHP-Code:
      echo Display("Test"); 
      Kann man so eine Funktion aufrufen??

      Kommentar


      • #4
        Schau mal hier:

        PHP: Geltungsbereich von Variablen - Manual

        dann weißt du auch, warum es nicht geht!

        Wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          Mich würde das jetzt aber auch mal interessieren. Wahrscheinlich habe ich Tomaten auf den Augen..

          Kommentar


          • #6
            Uppss...mein Fehler (ne, hast keine Tomaten auf den Augen) - ich hab gepennt und gerade irgendwie nicht realisiert, dass es um Sessions und nicht um "normale" Variablen geht! Sessions sind natürlich "superglobal" (Darauf wollte ich anspielen).

            Wenn Du übrigens die Abfrage nach dem Get-Parameter unter das echo Display("Test"); schreibst, wird Session korrekt ausgegeben!

            Wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Hi,

              okay aber irgendwie zerstört mir das so ein bißchen den Ablauf des Skripts. Warum geht das den nicht davor?

              Ich möchte das gerne oben haben?

              Gruß kami

              Kommentar


              • #8
                Zitat von kami Beitrag anzeigen
                PHP-Code:
                function Display($url)
                {
                      
                $_SESSION["2"]=$url;
                      return 
                $page "<li><a href=\"./news.php?uid=1\">Test</a>";
                }

                echo 
                Display("Test"); 
                Deine Funktion liefert keinen String zurück, sondern einen bool (und zwar das Ergebnis der Zuweisung $page = ...), folgerichtig wird das echo eine 1 ausgeben, da eine Zuweisung eigentlich immer erfolgreich ist.
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Hallo,

                  nein das tut das echo aber nicht. ich kriege an dieser Stelle den Link ausgegeben.

                  Gruß kami

                  Kommentar


                  • #10
                    Eine Zahl ist kein gültiger Name/Index für eine Session.
                    http://hallophp.de

                    Kommentar


                    • #11
                      Ist ja keine Zahl. Ist ja "2" und damit ein String. Was bekommst du für eine Ausgabe, wenn du direkt unter das session_start() ein var_dump($_SESSION) machst? Wird in deinem Browser überhaupt ein Session-Cookie gesetzt? Oder lehnst du Cookies evtl. immer ab? Was ist, wenn du die Session via $_GET weitergibst? (per session_name() . "=" . session_id()) Gruß

                      Kommentar


                      • #12
                        Deine Funktion liefert keinen String zurück, sondern einen bool
                        Nö.
                        (und zwar das Ergebnis der Zuweisung $page = ...),
                        Richtig. Und das Ergebnis einer Zuweisung ist immer der zugewiesene Wert.
                        Eine Zahl ist kein gültiger Name/Index für eine Session.
                        Wieso? Eine Session ist ein normales Array.

                        Ich tippe eigentlich eher auf eine nicht-funktionierende Session.

                        Bitte error_reporting (E_ALL!) und display_errors prüfen!
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Hi,

                          habe sein Script mal getestet und wenn ich
                          Code:
                          error_reporting(E_ALL);
                          setze, erhalte ich auch eine Fehlermeldung:
                          Code:
                          Notice: Unknown: Skipping numeric key 2 in Unknown on line 0
                          Mit einem Buchstaben im Index passiert mir das nicht.

                          Gruß
                          http://hallophp.de

                          Kommentar


                          • #14
                            Interessant. Ist mir unbekannt, dieses Verhalten.
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              Ich bin auch verwirrt, denn da es kein Fatal Error ist, wird das Script ja bis zum Ende ausgeführt, die Werte in der Session also gesetzt. Ein var_dump() am Scriptende gibt mir auch den Wert aus. Wenn ich allerdings auf den Link klicke, ist die Session leer.

                              Code:
                              # Array ( ) Testarray(1) { [2]=>  string(4) "Test" }
                              Notice: Unknown: Skipping numeric key 2 in Unknown on line 0
                              Ein Klick auf den Link führt zu:

                              Code:
                              Array ( ) 1
                              Notice: Undefined index: 2 in D:\Programmierung\xampp\htdocs\admin\Testprojekt\test2.php on line 12
                              # Testarray(1) { [2]=> string(4) "Test" }
                              Notice: Unknown: Skipping numeric key 2 in Unknown on line 0
                              PHP-Code:
                              <?php
                              error_reporting
                              (E_ALL);
                              session_start();


                              print_r($_SESSION);


                              if(isset(
                              $_GET["uid"])) {
                                echo 
                              $_GET["uid"];
                                echo 
                              $_SESSION["2"];
                              }


                              function 
                              Display($url) {
                                
                              $_SESSION["2"]=$url;
                                return 
                              $page "<li><a href=\"?uid=1\">Test</a>";
                              }

                              echo 
                              Display("Test");

                              var_dump($_SESSION);
                              http://hallophp.de

                              Kommentar

                              Lädt...
                              X