Ik ben opzoek naar een script wat kijkt of een user al 10 mintuten niets heeft getypt of een pagina heeft vernieuwd.
Na 9:30 moet er een alert komen dat als er niets gedaan wordt de user uitgelogd wordt.
Ik heb wel voor elkaar gekregen om de functie te maken, en na een paar seconde de alert te laten komen.
Maar nog niet dat als er na 30 sec. geen actie is ondernomen het automatisch uitgelogd wordt.
<script type="text/javascript">
function timedMsg()
{
var t=setTimeout("LogOut()",3000);
}
function LogOut()
{
doIt = confirm('U wordt over 30 seconde uitgelogd, wilt u doorgaan?');
if(doIt)
{
location.href='<?=$url?>uitloggen'
}
else
{
window.location.reload()
}
}
</script>
Dat komt doordat de confirm het proces dan "kaapt" en wacht op interactie van de gebruiker. Je kunt dan niet zeggen dat er, wanneer er na 30 seconden nog geen actie is geweest, de gebruiker automatisch wordt uitgelogd.
Je kunt dan beter gebruik maken van een Modal box, zoals die van jQueryUI. Op die manier heb je een vergelijkbare confirm, maar kaapt die niet het scherm en kun je een teller neerzetten die aftelt van 30 naar 0 seconden.
Lijkt me geen goed plan om dit alleen client side met js op te lossen. Wat als een gebruiker twee tabs open heeft staan en maar in 1 van de 2 bezig is? De tab waar hij niet in bezig is zal dan na 10 minuten de gebruiker uitloggen wat dus niet correct is.
Ik zou het oplossen door bij elke actie van de gebruiker een last_action timestamp bij te houden in sessie of database. Een pagina die open is kan vervolgens na 10 minuten van geen actie de server via een ajax call vragen om te controleren of de gebruiker nog wel actief is. Omdat de server alle acties van alle tabs ziet, kan de server vervolgens bepalen of de gebruiker moet worden uitgelogd.
Trouwens ... een alert is sowieso altijd een slecht idee. Zeker in zo'n geval.
Als je toch zoiets duidelijk wil maken, zorg dan dat een "logged in" image van kleur verandert of zoiets. Iets subtiel.
Inderdaad wat Chris zegt, iets met jQueryUI te doen lijkt me beter. Aangezien deze een popup kan openend zonder dat de user er last van heeft dat z'n scherm verspringt.
Nu nog even gaan uitzoeken hoe ik dat moet doen :)
@Mebus, dan sluit hij altijd na 60 minuten de sessie, en dat moet niet :(
De alert moet wel komen, aangezien het om gegevens gaat die gevoelig zijn.
Inderdaad wat Chris zegt, iets met jQueryUI te doen lijkt me beter. Aangezien deze een popup kan openend zonder dat de user er last van heeft dat z'n scherm verspringt.
Nu nog even gaan uitzoeken hoe ik dat moet doen :)
@Mebus, dan sluit hij altijd na 60 minuten de sessie, en dat moet niet :(
De alert moet wel komen, aangezien het om gegevens gaat die gevoelig zijn.
600 seconden is 10 minuten toch? 60 minuten is 3600 seconden. 10*60 is 600 seconden. Als de gebruiker nu 10 minuten niet actief is word daarna automatisch zijn sessie niet verder gezet en moet de persoon opnieuw inloggen.