Forum: PC-Programmierung [PHP] Session nach Zeit löschen


von Rene K. (xdraconix)


Lesenswert?

Ich erstelle, für ein User System, in PHP eine Session:
1
$_SESSION['userid'] = $user['id'];

Um das Session Cookie zu löschen muss ich ja manuell dann mit...
1
session_start();
2
session_destroy();

...diese Session wieder löschen, das funktioniert auch wunderbar.

Ich würde aber gerne das diese Session nach einer definierten Zeit (z.b. 
15min) von selbst wieder gelöscht wird. Wie kann ich dies erreichen?

Danke für eure Hinweise :-D

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

session_start();
if (!isset($_SESSION['created'])) {$_SESSION['created']=time();}
if ($_SESSION['created']<(time()-15*60)) {
   session_destroy();
   session_start();
   $_SESSION['created']=time();
}

Damit lebt keine Session länger als 15 Minuten, außer wenn Du vor Ablauf 
dieser Zeit die created-Variable änderst.

Alternativ:
https://www.php.net/manual/de/function.session-set-cookie-params.php

von DomeG (Gast)


Lesenswert?

Das solltest du von Hand lösen, der garbage collector 
(session.gc-maxlifetime [1] ) ist dazu in deinem Fall nicht fähig.

Siehe unter anderem: 
https://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes#answer-1270960



[1] 
https://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

von maler und landstreicher (Gast)


Lesenswert?

1
session_start ([ array $options = array() ] ) : bool

die options sind hier beschrieben
https://www.php.net/manual/de/session.configuration.php

da gibt es z.b.
1
session.cookie_lifetime

von Philipp K. (philipp_k59)


Lesenswert?

Ein eigeens Temp-Verzeichnis für die Sessions setzen und per Cronjob 
alles in dem Verzeichnis älter 15 Minuten löschen.

von Rene K. (xdraconix)


Lesenswert?

Ben B. schrieb:
> session_start();
> if (!isset($_SESSION['created'])) {$_SESSION['created']=time();}
> if ($_SESSION['created']<(time()-15*60)) {
>    session_destroy();
>    session_start();
>    $_SESSION['created']=time();
> }
>
> Damit lebt keine Session länger als 15 Minuten, außer wenn Du vor Ablauf
> dieser Zeit die created-Variable änderst.
>
> Alternativ:
> https://www.php.net/manual/de/function.session-set-cookie-params.php

Hat so wunderbar funktioniert ☺️ danke für den Tipp!

Auch danke an die anderen für die Tipps!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.