Hoe krijg je het voor elkaar om een gebruiker er automatisch uit te knikkeren als deze bijvoorbeeld een uur geen enkele acties heeft gedaan.
Bij dit fantastische forum gaat dat ook zo.
Hoe ?
Excuus, wellicht niet helemaal duidelijk verwoord wat ik bedoelde. Ik bedoelde of er ook iets wordt gezegd over het ACTIEF automatisch loggen, waardoor je beeldscherm verandert. Dus zonder dat je zelf iets doet, wordt je na 15 minuten uitgelogd en verschijnt er een melding in beeld dat je bent uitgelogd. Wordt daar ook iets over gezegd, of zegt men enkel dat de sessie na 15 minuten niet meer geldig is?
In de ene situatie kom je er dus achter dat je bent uitgelogd omdat er een melding in beeld staat. In de andere situatie kom je er pas achter als je op een link klikt.
>> Jouw quote heeft betrekking op de tijdsduur, maar wordt er eveneens gesproken over automatisch uitloggen?
Dat is inderdaad hetzelfde, want er is een causaal verband: was er 15 minuten geen gebruikersactiviteit, dan is de sessie idle en moet je de gebruiker dus uitloggen (en de gebruiker bij volgende activiteit opnieuw laten inloggen).
Je doet er dus verstandig aan de laatste échte gebruikersactiviteit te registreren in de sessie zelf. Zo voorkom je bijvoorbeeld dat een AJAX-applicatie die om de minuut de server pollt een sessie urenlang in stand houdt in een geopend browservenster. Bovendien kun je niet vertrouwen op de garbage collector van PHP (tenzij je die een instelling geeft die niet goed schaalbaar is).
Overigens is één uur rijkelijk lang. Dan "ondersteun" je onbedoeld de situatie die je liever niet ziet: iemand loopt van zijn bureau weg om in de stad te gaan lunchen en laat zo zijn "terminal" open en onbeheerd achter. Voor kritieke applicaties is 15 minuten het maximum, voor niet-kritieke 30 minuten. Bij internetbankieren is het vaak zelfs geen 15 minuten, maar hooguit 5 minuten.
Verder zou ik altijd het actief uitloggen inbouwen én promoten: "Alstublieft beste mensen, log uit, hier heb je daarvoor een knop."
>> (en de gebruiker bij volgende activiteit opnieuw laten inloggen)
Dit is eigenlijk wat ik bedoelde ...
Is er wel of niet een verplichting om de gebruiker actief "eruit te knikkeren"? Hoe leg ik dit uit ... je kunt dus zeggen dat de sessie na 15 min. is verlopen, maar ... je kunt er ook voor zorgen dat hij dan ACTIEF wordt uitgelogd, dus via een script. Als hij dan na 15 min. terugkomt dan staat er daadwerkelijk op z'n beeldscherm "u bent uitgelogd." Volgens mij is dat wat de topicstarter graag wil.
Je kunt dezelfde sessie natuurlijk gewoon hergebruiken, zolang daarbij maar aan twee voorwaarden wordt voldaan: de gebruiker moet opnieuw inloggen en de sessie mag tot een geldige nieuwe login niet te veel rechten hebben. De sessie zelf signaleert immers dat deze te lang inactief was. Met andere woorden: dat "actief uitloggen" kan ook in de sessie zelf worden ingebouwd en dan is PHP op de server per definitie beter dan JavaScript op de client.
Vaak is het gewoon makkelijker om dan de hele sessie maar te vernietigen en een nieuwe te starten met een verse login. Dan weet je zeker dat er niet ergens nog iets draait met te veel rechten.
Uiteraard kun je met een setTimeout() in JavaScript een logout.php aanroepen die vervolgens een "u bent uitgelogd" toont. Alle beetjes helpen en dat is ook een vorm van een actieve logout. Doe het dan echter wel goed (probeer het maar eens): na die JavaScript-logout moet je niet met de knop Vorige/Back van de browser bij een webpagina met vertrouwelijke gegevens kunnen komen. En aangezien je altijd in de browsergeschiedenis kunt graven, is uitloggen, geschiedenis (automatisch) wissen én browservenster sluiten uiteindelijk altijd veiliger.
Bij phpMyAdmin (XAMPP) wordt ik rücksichtslos eruit geknikkerd en sta ik weer in het inlogscherm.
Melding: 'Geen activiteit voor 1440 seconden of meer, meld a.u.b. opnieuw aan.'
Toevoeging op 17/06/2015 15:15:33:
Momenteel maak ik gebruik van de javascript setTimeout() om gebruikers eruit te knikkeren (wel 3 min. van te voren een melding gegeven dat ze worden uitgelogd). In mijn PHP-script kan ik dit Javascript aan of uit zetten. Dit is handig in geval van noodgevallen of in geval van onderhoud (Backup/Opschonen van bestanden/o.i.d.). Iedereen moet dan even uit het systeem.
>> Dit is handig in geval van noodgevallen of in geval van onderhoud ...
In dit soort situaties zou ik niet met javascriptmeldingen gaan werken, maar gewoon vantevoren een melding tonen ("Om 00.00 uur gaan we tijdelijk offline..."). Doe dit soort werkzaamheden ook vooral 's nachts zodat zo min mogelijk mensen er last van hebben.