session_unset(); = falsch?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfragen
anmerkung
annehmen
auslese
code
dank
datum
deutsch http
englisch http
entfernen
eventuell session
haufe
http
manual
session
sitzung
tip
url
verfallsdatum
vergangenheit
-
Moin,
ich arbeite bei meinen scripts gerne mit sessions.
Wenn sich ein user ausloggen will verwende ich meist session_unset(); um die sessiondaten zu löschen.
Jetzt habe ich aber in der php manu folgendes gefunden: "Verwenden Sie session_unset() nur bei veraltetem Code, bei dem nicht $_SESSION benutzt wird."
Ich benutzte aber session variablen, warum soll man dafür kein session_unset verwenden? Hab leider nirgendwo eine richtige erklärung gefunden. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
1. ;) Wo steht das?
Weder Deutsch: http://de2.php.net/manual/de/function.session-unset.php
Noch Englisch: http://de2.php.net/manual/en/function.session-unset.php
2. Um die Session vollständig zu zerstören (d.h. auch die Daten aus dem Dateisystem von PHP zu entfernen) musst du noch session_destroy() einsetzen. ;)
3. Solltest du eventuell Session IDs über Cookies abfragen, musst du den Session Cookie noch über setcookie löschen (Verfallsdatum in der Vergangenheit) ;) -
fabo schrieb:
@rob
http://php.net/manual/de/function.session-destroy.php
Siehe "Anmerkungen"
Oh, dann nehme ich das zurück. ;) Trotzdem, die Verwendung von session_destroy() hatte er nicht erwähnt.
Und die Cookie Sache. Das ist mir auch schon passiert. Ich lasse SessionIDs generell nur über Cookies abfragen.;) Und wenn dieses Cookie noch gesetzt ist, bringt dir das einen Haufen Timeout Meldungen. ;) -
session_unset(); if (isset ($_COOKIE['PHPSESSID'])) { setcookie ("PHPSESSID", "", time() - 86400); } session_destroy();
so würd ich ne session beenden.
session_unset -> erstmal varis löschen
PHPSESSID-> guggen ob cookie von der sitzung existiert, wenn ja löschen (manchmal legt PHP die gern von allein an, der standartname dieser sessioncookies lautet eben PHPSESSID)
session_destroy -> vernichtet alle daten die auf dem server in bezug zur session existieren
ob session_unsetz in dem fall überhaupt nötig is weiß ich nicht, ich habs mal so gelernt -
ggamee schrieb:
session_unset(); if (isset ($_COOKIE['PHPSESSID'])) { setcookie ("PHPSESSID", "", time() - 86400); } session_destroy();
[..]
..derstandartname dieser sessioncookies lautet eben PHPSESSID)
[..]
Und eben deshalb, weil es nur der Standartname ist, jedoch nicht verpflichtend der Sessionsname, solltest du das ganze lieber mit session_name() machen. Die Funktion gibt immer den Namen der Session (der, der eben in der php.ini unter dem Feld, ich glaub, session.name, angegeben ist. ;) Standartmäßig halt PHPSESSID, aber wer weißt ;))
session_unset(); if (isset ($_COOKIE[session_name()])) { setcookie (session_name(), '', time() - 86400); } session_destroy();
-
das ist voll korrekt und super robbmaster! danke für den tipp =)
für den threadersteller:
der standartname einer session ist in der PHP.ini festgelegt. normalerweise lautet dieser PHPSESSID, allerdings kann er auch jeden anderen namen annehmen (je nach einstellung). wie der robbmaster richtig gesagt hat, kann man den auslesen und dann immer den richtigen cookie löschen. da hätt ich auch dran denken können^^
danke =) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage