Auto-Login: Sessioid übernehmen
RFZ
- php
Hi,
ich will einen Auto oder Dauerlogin machen, wie man es ja von jeder Art Forum kennt. Ich will aber nicht das verschlüsselte Passwort und den Nick in einem Cookie speichern, sondern ich will nur die SessionID ggf in einem Cookie speichern und nachher erneut übernehmen.
Das funktioniert auch, aber spätestens nach einem Tag (oder paar Stunden) ist die Session ungültig und ich muss mich neu einloggen.
ich hab auch schon folgende Einstellungen versucht die _immer_ vor session_start() aufgerufen werden:
ini_set("session.gc_maxlifetime",(3600*24*365));
session_cache_limiter('private');
session_cache_expire(60*24*365);
ohne Erfolg... Kann das eine Eigenart meines Servers sein, dass Sessionids nicht länger gespeichert werden, oder woran kann das liegen?
Übernehmen tue ich die Sessionid so:
if($_COOKIE[$_CONF['cookie_prefix'].'_login_sessionid'] AND !$_REQUEST['PHPSESSID']) session_id($_COOKIE[$_CONF['cookie_prefix'].'_login_sessionid']);
Ich hoffe ihr könnt helfen.
greetz RFZ
http://go4xml.com/kurs/php/faq/faq-version4_session.php#version4_session-1
Hilft dir das vllt weiter?
Hilft dir das vllt weiter?
nein...
ini_set("session.gc_maxlifetime",(3600*24*365));
Ich glaube jetzt selbst das Problem gelöst zu haben *g* Das Problem ist, diese Angabe gilt nur, wenn die Scripte meiner Seite ausgeführt werden. Wenn aber eine andere Seite von mir, oder eines anderen Benutzers auf dem Server, eine Session nutzt, löscht PHP ja trotzdem alle Sessions die alt sind und verwendet dazu die Standard-Angabe.
Ich hab jetzt also über
ini_set("session.save_path","/****/sessiondata");
einen eigenen Ordner für speziell diese Sessions angelegt. Und hier sollte dann auch immer nur meine selbst angegebene Verfallszeit gelten, da dieser Ordner ja bei 'normalen' Sessions nicht durchsucht wird.
Ich hoffe das geht so, vielleicht kann ja jemand meinen Gedankengang verifizieren :)
greetz RFZ
Hello,
Ich hab jetzt also über
ini_set("session.save_path","/****/sessiondata");
einen eigenen Ordner für speziell diese Sessions angelegt. Und hier sollte dann auch immer nur meine selbst angegebene Verfallszeit gelten, da dieser Ordner ja bei 'normalen' Sessions nicht durchsucht wird.
Der angegebene Order wird nach den vorgegebenen Settings bei jedem Session_start() vom GC (Garbage Controller) durchsucht. Bei älteren PHP-Versionen durfen die eigenen Pfade auch nicht zu tief werden, dann hat der GC auch nicht mehr gesucht.
Wenn Du das spezielle verzeichnis nun gegen Durchsuchen (r-Recht) sperren würdest, könnte der GC nicht mehr tätig werden, da er nicht mit einem Prozess arbeitet, sondern tatsächlich nur getriggert wird.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Wenn Du das spezielle verzeichnis nun gegen Durchsuchen (r-Recht) sperren würdest, könnte der GC nicht mehr tätig werden, da er nicht mit einem Prozess arbeitet, sondern tatsächlich nur getriggert wird.
Ich will ihn ja nicht völlig aussperren, ich wollte nur erreich dass das von mir gesetzte session.gc_maxlifetime auch beachtet wird. Und das geht demnach nur, wenn ich einen eigenen Ordner dafür nehme, denn im allgemeinen Ordner könnte ja auch eine 'normale' session den GC triggern und somit meine sessions löschen.
greetz RFZ
Hello,
Ich will ihn ja nicht völlig aussperren, ich wollte nur erreich dass das von mir gesetzte session.gc_maxlifetime auch beachtet wird. Und das geht demnach nur, wenn ich einen eigenen Ordner dafür nehme, denn im allgemeinen Ordner könnte ja auch eine 'normale' session den GC triggern und somit meine sessions löschen.
richtig verstanden
Besser wäre es natürlich, wenn der GC objektorientiert arbeiten würde, das bedeutet, dass jedes Objekt selber weiß, wann es gelöscht werden will. Der GC guckt aber nicht rein in die dateien, sondern nutzt nur das Datum des letzten Zugriffes. Darum funktioniert er auch auf manchen Windows-Systemen nicht, weil die das nicht hergeben.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Wenn der Cookie am Client lange genug "lebt", was kann dann noch "sterben"?
Jau, die Sessiondatei kann verloren gehen.
Wenn Du einen Linux-Host betreibst, dann schau doch mal, in welchem Verzeichnis die Sessions abgelegt werden. Wenn Du dieses Verzeichnis nun mal probehalber (!) für den Webserver-User gegen lesen (== scannen == Namen auflisten und verändern) schützt, also das Leserecht wegnimmst, dann würde es klappen.
Die eigentliche Arbeit beginnt natürlich erst dann.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom