Dag PHP-ers!

Ik ben bezig met een loginsysteem. Ik wil in dat loginsysteem dat je als gebruiker ingelogd kan blijven (en na een 15 min inactiviteit automatisch weer uitlogt).

Nu lukt mij dit niet voor elkaar te krijgen. Als ik naar een andere pagina ga of ik refresh m'n browser wordt er gewoon weer gevraagd om in te loggen. Dus hoe los ik dit op? En kan dit met '$_SESSION'? Of moet ik dit oplossen met 'setcookie'? En hoe?

BTW in $_SESSION kun je gegevens opslaan, als ik het goed begrepen heb.. Maar het is niet slim om hier een wachtwoord of gebruikersnaam in op te slaan, toch?

Kan iemand mij het antwoord geven waar ik al een tijdje het internet voor afstruin, maar het nog nooit voor elkaar heb gekregen?

Alvast bedankt!

Ps. Graag een duidelijke uitleg..
Ok. Ik ga even kijken. Thx ;)

[size=xsmall]Toevoeging op 26/04/2011 17:01:29:[/size]

hmm kom er nog niet helemaal uit. Heeft iemand anders nog een idee? Of een voorbeeld?
In de database opslaan datum van laatste activiteit en elke keer updaten als je op een andere pagina komt
Datum laatste activiteit eerder als realtime - 15 is session vernietigen
Thijs van Vulpen op 26/04/2011 15:47:33

Ok. Ik ga even kijken. Thx ;)

[size=xsmall]Toevoeging op 26/04/2011 17:01:29:[/size]

hmm kom er nog niet helemaal uit. Heeft iemand anders nog een idee? Of een voorbeeld?


Waar kom je precies niet uit?

Onderstaande is uit het hoofd dus onder voorbehoud van typ fouten.
<?php

# Nieuwe session starten. // LET OP! Dit hoef je maar eenmalig te doen, zorg er tevens voor dat er nog geen output is geweest.

session_start();


# Settings | De tijd in SECONDEN die een gebruiker inactief mag zijn.

$max_inactivity = 60 * 15;


# Settings | De pagina waarnaar de gebruiker wordt verwezen als deze inactief is.

$location_inactive = 'logout.php';


# Als eerste gaan we controleren of $_SESSION['last_active'] al bestaat JA of NEE.

if(isset($_SESSION['last_active'])){

/*---- INFO: Ja, $_SESSION['last_active'] bestaat al. ----*/

# Dan gaan we nu kijken of we de gebruiker moeten markeren als inactief JA of NEE.

if($_SESSION['last_active'] + $max_inactivity <= time()){

/*---- INFO: Ja, de gebruiker is inactief. ----*/

# De gebruiker naar de logout pagina doorverwijzen.

header("Location: ".$location_inactive);


# Er voor zorgen dat de rest van de code niet wordt uitgevoerd.

exit();

}
else{

/*---- INFO: Nee, de gebruiker is nog steeds actief. ----*/

# $_SESSION['last_active'] overschrijven met de huidige tijd.

$_SESSION['last_active'] = time();

}
}
else{

/*---- INFO: Nee, $_SESSION['last_active'] bestaat nog niet. ----*/

# Dan gaan we deze nu voor de eerste keer aanmaken.

$_SESSION['last_active'] = time();

}

?>
Okee, thx. Ik ga er weer even mee aan de slag en ik hoop dat me dit zal helpen ;)

Reageren