christianW: benutzerdaten auf mehreren seiten verfuegbar halten- session??

hello,
ich bin dabei eine webseite zu gestalten, auf der die benutzter
grammatikAufgaben bearbeiten koennen.. saemtliche Funktionalität
die aufgaben betreffend habe ich schon gemacht.
ich wende mich jetzt dem programmierteil zu, der die userverwaltung
betrifft.
habe mich in php eingearbeitet und anschliessend mit php sql habe ich
einen login/registration gebaut.
ich bin mir jetzt aber ueber eine grundlegende frage nicht im klaren:
wie bewerkstellige ich (eleganterweise), dass die daten des aktuellen benutzer ueber
saemtliche seiten des webangebots abrufbar sind.
stichwort sessions:
ist es empfehlenswert mit sessions zu arbeiten. (hilfe!kennt jemand ein gutes tutorial im web?)
oder sollte ich nach dem login die seiten mit href:aufgabe2.pgh?benutzername=hansw
aufrufen und mit sql die erforderlichen daten auf jeweiliger seite aus der datenbank lesen.

waere sehr dankbar fuer antworten bzw. hinweise auf seiten im net, die sich mit meiner fragestellung befassen..
danke
kiki

  1. Hallo Christian,

    ein "gutes" Tutorial habe ich bisher leider auch noch nicht gefunden. Und Sessions haben den Nachteil, dass sie einem gaaanz einfach erscheinen, wenn man sie erst kapiert hat.

    Der Session-Mechanismus besteht im wesentlichen aus vier Teilen:

    1. Einem Erkennungsmerkmal, das der Client dem Server mit jeder Anfrage automatisch wieder mitsendet
    2. Einem Exit-Handler, der beim Verlassen des Scriptes automatsich die Daten des Users in einer Datei auf dem Server sichert.
    3. eben dieser Datei. Für jede Session eine eigene. Kan aber auch durchaus in einer Datenbank gespecihert werden
    4. Einem Mechanismus, der beim Aufruf (meistens ganz am Anfang vom Script) erkennt, ob der Client ein Erkennungsmerkmal (1) mitgesendet hat. Wenn ja, holt er die Daten aus der Datei und stellt sie dem Script zur Verfügung. Hierfür wird ein Array mit namen $_SESSION benutzt. Wenn nein, erzeugt er ein Erkennungsmerkmal und sendet es mit der Antwort auf den Request an den Client.

    Erkennungsmerkmale können sein:

    1. Cookie
    2. Trans_SID = Transiente Session ID. Das sind "sichtbare" Parameter, die an die URL und die Links angehängt werden und/oder hidden-Variablen in Scripten
    3. Auth 401-Credentials (Username, Passwort) Hier muss man dann aber seine Session selber bauen. Ist aber auch nicht so schwer. Mein Chef hat mir das mal recht gut verklickert.

    Cookies arbeiten, wenn sie denn auf dem Client eingeschaltet sind, sehr sicher.

    Seit es $_SESSION[] gibt (superglobales Array) kann man Sessions auch ohne Probleme aus Funktionen heraus starten.

    Der Sessionmechanismus wird mit dem Befehl session_start() begonnen.  Anschließend gibt es dann die Konstante SID. Enthält sie einen Wert, wurde die Session eben neu begründet, enthält sie keinen Wert (Leerstring), hatte der Client eine Sessionnummer mitgesendet. Es bestand schon eine Session und die Sessiondatei müsste gültige Daten enthalten. Das ist manchmal wichtig für Initialisierungen von $_SESSION[].

    Noch ein Tipp:

    Sessions habe NICHTS mit Benutzeranmeldung zu tun. Sie könnnen nur dazu verwendet werden, eine durchgeführte Anmeldung "mitzuschleppen". Also i.d.R. erst die Session starten, dann den Benutzer nach seinen Daten fragen und z.B. bei Erfolg in der Session eintragen, dass der Benutzer nun angemeldet ist.

    <?php

    session_start();

    if (strlen(SID)>32)
    {
      $_SESSION["logged"] = time();
      $_SESSION["sid"] = substr(SID,-32);
      $_SESSION["user"] = $_POST["user"];
    }

    ....

    ?>
    als Beispiel.

    Und wenn $_COOKIE["PHPSESSID"] != $_SESSION["sid"] ist, dann hat der Nutzer seine Anmeldung verloren.

    PHPSESSID ist der voreingestellte Name für die Session. Den würde ich ändern (php.ini) oder VOR jeden Session_start() mittels session_name(<neuer_name>); aud diesen neuen Namen setzen.

    Jetzt habe ich Dir soviel über Sessions erzählt, dass Du loslegen kannst.

    Liebe Grüße

    Chris (C)

    1. hi chris (c)

      mit einer so guten und ausfuehrlichen erklaerung haette ich
      wirklich nicht gerechnet ..
      vielen vielen dank
      cris

      1. ReHi chris

        mit einer so guten und ausfuehrlichen erklaerung haette ich
        wirklich nicht gerechnet ..

        Keine Ursache. Da wereen schon noch genug Fragen rund um die Sessions kommen. Ich habe mal intensive drei Wochen im Team gebraucht, um alle möglichen Spielarten herauszufinden und zu Dokumentieren. Irgendwo muss in der Firma auch noch eine Doku dazu rumliegen. Ich glaube, die hatte zum Schluss über 100 Seiten.

        Wenn Du Fragen spezielle hast, dann melde dich ruhig. Vielleicht kann ich ja gleich helfen.

        Grüße

        Chris©