Hur fixar jag automatisk utloggning efter 30 mins inaktivitet?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Sep 2008

Hur fixar jag automatisk utloggning efter 30 mins inaktivitet?

Jag tänkte göra en automatiskt utloggning på min sida, där man loggas ut efter 30 minuters inaktivitet.

På varje sida kontrolleras användarens behörighet med $_Sessions['loggedInUser'] som innehåller användarens ID från databasen.

Jag vill alltså att sessionen ska försvinna om användaren varit inaktiv i 30 minuter. Varje gång man gör något, t.ex. byter sida, så ska användaren få 30 nya minuter till sitt förfogande, hur kan jag uppnå detta?

Tack på förhand, uppskattar alla tips!

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jan 2007
Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Sep 2008

Får det INTE att funka. Sessions förstörs som dom ska efter en viss tid men jag lyckas inte göra så att tiden förlängs vid aktivitet

I min index login finns överst:

ini_set('session.gc_maxlifetime', '43200'); ini_set('session.gc_divisor', '1'); ini_set('session.gc_probability', '1'); ini_set('session.cookie_lifetime', '10'); //Inte riktigt säker på skillnaden mellan lifetime och maxlifetime. Har satt 10 sec här för att testa session_name('DaTaPi'); //Inte riktigt säker på vilket namn jag ska skriva här session_start();

Sedan i toppen på varje sida finns:

session_start(); if(isset($_SESSION["loggedInUser"])) { $ID = $_SESSION["loggedInUser"]; ini_set('session.cookie_lifetime', '10'); //Om session är satt så sätts tiden till 10 sec, och användaren får därmed 10 nya sekunder session_name('DaTaPi'); } else { $ID = 0; }

Tanken är här att om $_SESSION["loggedInUser"] är satt så har tiden inte runnit ut ännu och tiden för sessionen förlängs med tio sekunder. Annars kommer man loggas ut.

Har detta som skolprojekt så vill verkligen att det funkar. Tack på förhand för tips.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jan 2007

Hm, sätt en sessionsvariabel med senast aktiv tid och uppdatera den varje gång en sida laddas; om den är fölr gammal kör du session_destroy() och skickar användaren till ett felmeddelande.
(Lagra då värdet från time(), inte date()...)

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Sep 2008

Intressant! Ska försöka...

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Sep 2008

Tack, det fungerade utmärkt!