Session 31 Tage aufrecht erhalten

js-mueller

Erfahrenes Mitglied
HI,

ich hab ein Problem bei mit mit Sessions. Und zwar hab ich gestern den ganzen Tag gearbeitet usw ich war auch auf der Seite imme reingeloggt obwohl ich den Browser auch mal zu gemacht habe.
So heute morgen war ich nun nicht mehr eingeloggt, also kann ja was mit der 31Tage Lebensdauer die ich eingestellt habe nicht stimmen.
So nun zum Code damit ihr mir auch helfen könnt ;-)

PHP:
function rSession($lebenszeit="")
{
    $this->cookieLebenszeit = time() + 60*60*24*31; # 31 Tage Lebenszeit
    if ($lebenszeit == "")
        $lebenszeit = $this->cookieLebenszeit;

    if ($lebenszeit < time())
        $lebenszeit = 0;

    session_set_cookie_params($lebenszeit);
    $this->rSession_startSession();
}

function rSession_startSession()
{
    session_start();
    $this->sessionIDN = session_id();
}
So und aufrufen tu ich die Session mit $session = new rSession().
Klappt ja auch alle ssoweit, aber wieso hält der cookie oder die session nicht 31 Tage? Versteh ich net
 
Ich mag mich irren.. aber Rechnet time() nicht auf MILLIsekunden und nicht auf Sekunden?

Edit: *mal guckt WO die sache mit den Millisekunden dann war, wenn nmicht in PHP*
 
Zuletzt bearbeitet:
@Randar:

das ist ja eine Klasse, was du da hast. Und wenn du nur scheribst $bla= new rSession, dann muss deine Klasse auch rSession heißen. Danach kannst du die FUnktion über $bla->funktion() aufrufen, wenn deine Klasse denselben Namen hat wie die Funktion, wird die FUnktion beim aufruf der Klasse mit aufgerufen.

Im Klartext:
Hat deine Klasse denselben Namen wie die Funktion
 
Hmm vielleicht wegen der session.gc_maxlifetime in der .ini?
denn wenn diese Kleiner wäre als 31 tage, würde zwar dei nCookie die sessionID halten, der GarbageCollector die Sessiondatei auf der Platte aber löschen...

Gleiches könnte aber auch bei session.cookie_lifetime sein. Wenn dies auf 0 steht, ist der cookie nach schliessen des Browser ungültig
 
Zuletzt bearbeitet:
firstlord18 hat gesagt.:
@Randar:

das ist ja eine Klasse, was du da hast. Und wenn du nur scheribst $bla= new rSession, dann muss deine Klasse auch rSession heißen. Danach kannst du die FUnktion über $bla->funktion() aufrufen, wenn deine Klasse denselben Namen hat wie die Funktion, wird die FUnktion beim aufruf der Klasse mit aufgerufen.

Im Klartext:
Hat deine Klasse denselben Namen wie die Funktion


Der Konstrutor hat immer den gleichen Namen wie die Klasse.
Durch das Erzeugen einer Instanz der Klasse also new rSession() wird automatisch der Konstruktor aufgerufen, den er hier abgebildet hat.
 
So ich hab mal in die .ini geguckt

also da steht folgendes:

session.cookie_lifetime 0 0
session.gc_maxlifetime 1440 1440

So ich denke mal das es dann auch wirklich an diesen beiden werten liegt. Hier kann ich die ja ganz gut ändern, da es nen lokaler Server ist, aber der produktiv Einsatz soll natürlich auf nem Webspace sein, was mache ich wenn dort die ini "falsch" ist und ich sie nicht ändern kann?

PS: Also theoretisch müsste nur die gc_maxlifetime geändert werden oder, da cookie_lifetime ändern ich ja mit session_set_cookie_params

PS2: Wenn es daran liegt müsste ich definitiv was ändern, da mein Hoster die gleichen session einstellungen hat wie mein lokaler Server.
 
Zuletzt bearbeitet:
Naja mit ini_get() kannst du sie abfragen und mit ini_set setzen.
In der Doku von ini_set() steht, welche Werte der php.ini veränderbar sind...
Ich würde es eher via ini_set() ändern, kannst es ja in deinen Konstruktor einbauen, da das permanente Ändern zur Folge hätte, dass es eben alle PHP-Seiten betrifft...
 
Zurück