Session-Daten auslesen

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

  • Session-Daten auslesen

    Hallo,

    ich hätte eine Frage zu folgendem Tutorial (Login-Script):

    http://www.php-resource.de/tutorials/read/38/1/

    Das einloggen klappt wunderbar, jetzt möchte ich nur noch userspezifische Daten auslesen können, wofür ich Abfragen der Art:

    "Select .... FROM ... WHERE $user = XX";

    ausführen muss. Wie kann ich aber in diesem Script auf die Variable mit meiner UserID zugreifen? Hab einige Sachen ausprobiert, es hat aber nicht geklappt...

    Oder muss ich es erst über

    $_SESSION['user'] als Session-Variable anlegen und dann über den Link von Seite zu Seite übergeben?

    Danke, Andi

  • #2
    na, mach mal ne testausgabe (print_r()) von $_SESSION.

    - Wenn da was brauchbares drin steht, kannst du es natürlich auch verwenden.
    -Wenn nicht, dann musst du wohl oder übel beim einloggen erstmal was in die Session reinschreiben um es dann später wieder rauszuholen.

    Kommentar


    • #3
      @TobiaZ

      Danke für die schnelle Antwort, leider komm ich noch nicht ganz klar damit. Ich hab mich jetzt durch das oben angegebene Tutorial und auch durch ein Session Tutorial (http://www.usegroup.de/software/phpt.../sessions.html) gearbeitet, aber mir ist z.B. nicht klar, warum in dem Tutorial hier auf php-resource die Session-ID in der DB gespeichert wird und nicht einfach an den Link zu weiteren Seiten über die Konstante SID angehängt wird?

      Und worauf Du mit

      (print_r()) von $_SESSION
      hinaus wolltest, weiß ich auch leider nicht. Ich hab es mit:

      PHP-Code:
      print_r($_SESSION); 
      versucht, was mir aber nur

      Array()
      ausgegeben hat.

      Kommentar


      • #4
        warum in dem Tutorial hier auf php-resource die Session-ID in der DB gespeichert wird und nicht einfach an den Link zu weiteren Seiten über die Konstante SID angehängt wird?
        das eine hat mit dem anderen nichts zu tun.

        letzteres dient nur dazu die SID von einer seite zur nächsten mitzuschleifen. Dazu kann sie entweder in einem Cookie gespeichert werden oder aber auch an jeden (internen) link angehängt werden. dafür sorgt php aber standardmäßig selbst.

        der grund warum die SID in die DB gespeichert wird, liegt vermutlich darin, dass das Script so erkennt, ob du eingeloggt bist, oder nicht. (kenne das Tut selbst nicht wirklich.)

        --

        Dein Versuch mit print_r($_SESSION); war gold richtig! Genau das habe ich gewollt.

        An der Ausgabe von "Array()" kannst du nun erkennen, dass in der Session selbst keine Daten gespeichert werden. Wie gesagt, die überprüfung ob eingeloggt oder nicht, wird anhand der DB vorgenommen.

        In deinem konkreten Fall hast du nun zwei möglichkeiten:

        1) Beim einloggen die User-id in die Session speichern:
        PHP-Code:
        $_SESSION['user_id] = xxx; 
        oder
        2) im Script einfach eine zusätliche Query a la SELECT * FROM usertabelle WHERE sid = SESSIONID.

        Ich würde zu 1) tendieren.

        Kommentar


        • #5
          @TobiaZ

          Ah, vielen Dank, jetzt wird mir das schon klarer! Dann wird die Session wahrscheinlich wirklich wegen Deiner Alternativa 2) in der DB gespeichert werden...

          letzteres dient nur dazu die SID von einer seite zur nächsten mitzuschleifen. Dazu kann sie entweder in einem Cookie gespeichert werden oder aber auch an jeden (internen) link angehängt werden. dafür sorgt php aber standardmäßig selbst.
          Über Cookies möchte ich es lieber nicht machen, da sie ja nicht jeder aktiviert hat, aber der letzte Satz hat mich etwas verwirrt - ist denn dann die Methode a la:

          PHP-Code:
          <a href="test.php?<?=SID?>">next</a>
          veraltet? Kann ich es dann einfach z.B. so machen:

          PHP-Code:
          session_start();
          $_SESSION['user_id] = xxx 
          ...und dann auf die $_SESSION['user_id'] auf jeder Seite zugreifen (sofern ich natürlich oben session_start() schreibe) ohne die SessionID über den Link weiterzugeben??

          Kommentar


          • #6
            wie gesagt, es sind zwei paar Schuhe.

            zunächst einmal hast du die SESSION-id. Die muss wie gesagt übergeben werden. Ob via COOKIE oder im Link (also GET) oder zur not über ein POST-Formular. Hauptsache sie wird übergeben.

            Standardmäßig versucht PHP ein Cookie zu setzen. Wenn der User das aber nicht will, wird sie halt über GET (also den Link) übergeben. Wie gesagt, PHP macht das schon. (s. session)

            ist denn dann die Methode a la:
            <a href="test.php?<?=SID?>">next</a>
            veraltet?
            Nein, veraltet definitiv nicht, aber überflüssig, wenn die einstellung session.use_trans_sid aktiviert ist.

            Kann ich es dann einfach z.B. so machen:

            session_start();
            $_SESSION['user_id] = xxx

            ...und dann auf die $_SESSION['user_id'] auf jeder Seite zugreifen (sofern ich natürlich oben session_start() schreibe)
            Ja, probier es aus...
            ohne die SessionID über den Link weiterzugeben??
            Wie gesagt, hauptsache die ID wird übergeben, ob cookie oder link ist mir latte...

            Kommentar


            • #7
              @TobiaZ

              Vielen Dank für Deine Erklärung und sorry, dass ich erst jetzt antworte. Ich werde das mal ausprobieren und mich nochmal melden, falls ich noch Fragen habe. Vielen Dank aber schonmal!

              Andi

              Kommentar

              Lädt...
              X