Session löschen
-
Folgendes Szenarion.
Client bekommt eine SessionID. Jetzt benutzt er die Seite mit dieser Session.
Jetzt soll von einem Programm eine URL mit Parameter dieser SessionID per GET aufgerufen werden und diese Seite soll die Session löschen sodaß der CLient rausfliegt weil die Session nicht mehr gültig ist. Dieses löschen der Session soll unbahängig vom derzeit activen Client sein.
Gibt es da was dafür in PHP.
-
Meines wissens nicht direkt.
Allerdings kannst du ja mal probieren die 'killer' Seite mit der richtigen SID aufzurufen und dann session_destroy() zu machen. Dann sind alle registrierten Variablen weg, was vermutlich mit ausloggen gleichkommt, oder? Ansonsten halt eine logged_out Variable oder ähnliches erstellen...
Allerdings weiss ich nicht, ob PHP die IP des Aufrufers ebenfalls heranzieht umd die SID zu verifizieren - wenn das so ist, dann muss das Programm vom selben PC aus gestartet werden.
-
Lt php-manual ist das Sessionfile für andere Clients gesperrt. Deshalb kann man da nicht reinschreiben. Muss ich versuchen.
Ich frage mich was passiert wenn ich eifach das Sessionfile mit den File-Funktionen lösche.
-
Allerdings weiss ich nicht, ob PHP die IP des Aufrufers ebenfalls heranzieht umd die SID zu verifizieren
Nö tut es nicht. Das ist ja das gefährliche an trans_sid. Dann kann man durch kopieren des Links die Session an wen anders "geben" und der ist dann plötzlich eingeloggt.
Noch ein Beispiel wäre wenn man die Cookie-Lifetime hochsetzt ist man doch auch nach nem reconnect (meistens neue IP) noch in der selben Session.@Unix-Tom: Was spricht dagegen einfach eine Seite mit nem session_destroy mit der Session-ID aufzurufen. Dann ist der Client draussen.
Lt php-manual ist das Sessionfile für andere Clients gesperrt. Deshalb kann man da nicht reinschreiben. Muss ich versuchen.
Ja für Clients die nicht die Session-ID haben, also sollte das kein Problem sein.
-
Also ich würde auch denken, dass das so funktioniert.
Also erst session_id mit der ID der zu killenden Session aufrufen, dann session_start (evtl. auch gar nicht erforderlich?!) und dann session_destroy
-
Das geht. Habs gerade festgestellt.
mit
session_id(hierdieid);
session_destroy()kann ich die Session löschen.
Problem: Das File wird durch den Client gesperrt und keiner hat schreibzugriff von PHP-Aus bist die Seite ganz abgearbeitet wurde oder dezitiert session_write_close aufgerufen wird.
Ich habe es aber jetzt anders gelöst da löschen der Session zu unsicher ist
-
Diese Sperre könntest du umgehen, indem du einen eigenen session-Handler schreibst (evtl. dann auch gleich per DB).
Aber wenn sich der zu kickende User gerade in einer Script-Ausführung befindet hat er ja die ganzen Vars und schreibt sie am Ende des Scripts ja wieder zurück - aber wenn du eh schon eine Lösung hast (dürfen wir die mal sehen)
-
einen eigenen Sessionhandler habe ich für CGI-Cpp geschrieben. Wurde in der Klasse VBMcgi eingebunden. Für PHP möchte ich das eigentlich nicht da die Seiten bei Kunden laufen. Ich mache jetzt ein Hauptframe und ein iframe. Im iframe läuft die Kundenseite und das Hauptframe checkt die Datenbank auf Änderunegn alle Sekunden. Dadurch kann das Hauptframe das iframe schließen.