L'idée est de pouvoir informer les utilisateurs de la fin d'une session web authentifiée.
Parant du principe qu’à chaque appel au serveur on recharge/ré-active la session en cours il faut reprendre le calcule à chaque chargement de page.
Pour ce faire, il faut construire un sous masque, que l'on intègrera à toutes les pages, contenant une fonction définissant un timer au onLoad des pages. Le timer permettra à expiration d'envoyer un pop-up ou un encart en DHTML au centre de la page utilisateur pour l'informer que sans action de sa part sa session expirera dans N min.
Donc pour l'entête JavaScript du sous-masque le code est le suivant:
- Code : Tout sélectionner
var timid;
function TempsEcoule()
{
//location.href='page.php';
alert('Attention fin session dans une minute!');
}
function PageAction()
{
window.clearTimeout(timid);
var dj=new Date();
frm = window.document.forms[0];
//durée session moins 5 min
duree_session = frm.duree_session.value-1 //
minute=dj.getMinutes()+duree_session+1;
heure=dj.getHours();
if (minute>59)
{
minute=minute-60;
minute='0'+minute;
heure=dj.getHours()+1;
}
frm.heure.value="Déconnexion à :"+heure+":"+minute;
timid=window.setTimeout("TempsEcoule();",duree_session*60000);
}
Sur le Onload ses pages - Je n'ai pas réussi à utiliser le onLoad du sous-masque si quelqu'un à une idée...
- Code : Tout sélectionner
PageAction();
Le sous-masque est constitué de deux champs
duree_session : qui récupère la durée de session du serveur
- Code : Tout sélectionner
Server := "MonServer";
vue := "($ServersLookup)";
@DbLookup("":"NoCache" ; Server:"names.nsf"; vue; Server;"HTTP_IdleSessionTimeout" ; [FailSilent])
heure : champs dans lequel on met la fin de session