guelcki: Session beenden

Hallo allerseits!

Habe mir gerade ein bißchen das Archiv durchgelesen, und habe eine kleine Frage.

In einem Thread ging es um das beenden von Sessions, und da wurde gesagt, man müsste zusätzlich zu

session_destroy();

auch noch den Befehl

setcookie("PHPSESSID");

benutzen. Wie ich das rausgelesen habe, ändert dieser den Cookie auf dem Clientrechner. Ich finde diesesn Befehl aber nicht in SelfPHP.

Und was bewirkt das PFPSESSID?

Muss man wirklich noch diesen zweiten Befehl nutzen, oder langt session_destroy(), wie ich es bisher immer praktiziert habe?

Vielen Dank
guelcki

  1. Hallo guelcki,

    session_destroy();

    auch noch den Befehl

    setcookie("PHPSESSID");

    benutzen. Wie ich das rausgelesen habe, ändert dieser den Cookie auf dem Clientrechner. Ich finde diesesn Befehl aber nicht in SelfPHP.

    <zitat src="Programming PHP" author="Rasmus Lerdorf & Kevin Tatroe" translation="frei">

    Um eine Session zu beenden, rufe
        session_destroy()
    auf. Dies entfernt den 'data store' (ist mir keine angemessene Übersetzung eingefallen) der laufenden Session, aber es entfernt nicht das Cookie aus dem Browser-Cache. Das bedeutet, dass bei weiteren Besuchen auf den Seiten mit Sessions der Benutzer die gleiche Session ID haben wird, die sie vor session_destroy() besaß, aber keine der vorherigen Daten.

    </zitat>

    PS: Rasmus Lerdorf ist der Schöpfer von PHP.

    Gruss,

    Vinzenz

  2. Hallo,

    setcookie() ist der Befehl, um auf dem Client einen Cookie zu setzen. Das macht die Funktion session_start() automatisch. Als Namen für den Cookie nimmt sie den in der php.ini vorgegebenen (=PHP SESS ID  natürlich ohne die Leerzeichen, habe ich nur zum besser Lesen können eingefügt) oder denjeneigen, den Du vorher mit session_name("ANDERER_NAME") für das laufende Script festgelegt hast.

    Wenn man den Cookie auf dem Client nicht löscht, dann wird beim nächsten session_start() eine Session mit der alten Nummer neu gestartet. Durch session_destroy() hast Du dann zwar die alten Sessiondaten gelöscht, aber wenn es noch Einträge in Datenbanken usw. unter der alten Sessionnummer geben sollte, könnte das zu "Verwicklungen" führen.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
  3. Hallo!

    In einem Thread ging es um das beenden von Sessions, und da wurde gesagt, man müsste zusätzlich zu

    session_destroy();

    auch noch den Befehl

    setcookie("PHPSESSID");

    benutzen. Wie ich das rausgelesen habe, ändert dieser den Cookie auf dem Clientrechner. Ich finde diesesn Befehl aber nicht in SelfPHP.

    Dann bneutze am besten(zumindest zusätzlich) das offizielle PHP-Manual:http://www.php3.de/manual/de/

    Da findest Du unter den "HTTP-Funktionen" (oder über die Suchfunktion):
    http://www.php3.de/manual/de/function.setcookie.php

    Und was bewirkt das PFPSESSID?

    Lies Dir mal im Manual das Kapitel zu Sessions(http://www.php3.de/manual/de/ref.session.php) durch, da findest Du unter anderem: http://www.php3.de/manual/de/ref.session.php#ini.session.name

    Muss man wirklich noch diesen zweiten Befehl nutzen, oder langt session_destroy(), wie ich es bisher immer praktiziert habe?

    IMHO reicht das normalerweise. Wenn Du mit sensiblen Daten arbeitest solltest Du Dir aber Gedanken über Deine Implementierung des Session-Mechanismus machen, mehr dazu findest Du im Archiv.

    Grüße
    Andreas