Vous n'êtes pas identifié(e).
Pages : 1
Merci de tes conseils, la déconnexion auto avec la gestion des onglets fonctionne, même si je n'est pas utilisé tes techniques
timerDeco.php:
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml2.dtd">
<script type="text/javascript">
setInterval("deco()", 3000);
function connexion()
{
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
return xhr_object;
}
function deco()
{
var timeNow = new Date().getTime();
timeNow = timeNow * 0.001;
timeNow = Math.floor(timeNow);
var xhr_object=connexion();
xhr_object.open('POST',"../RetourTimer.php",false);
xhr_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr_object.onreadystatechange=function(){
if(xhr_object.readyState == 4)
{
if (xhr_object.responseText=="DECONNECTER")
{
window.location='../index.php';
}
else if (timeNow >= xhr_object.responseText)
{
window.location='../index.php';
}
}
}
xhr_object.send("" ,true);
}
</script>
RetourTimer.php
Merci
Merci de ta réponse.
Je me suis renseigné sur le localstorage et cela fonctionne avec le HTML5. Tous les navigateurs ne sont pas compatible actuellement, ce qui rend cette méthode peu pratique.
Pourrait-tu m'en dire plus sur le "ping" de la session. Je ne comprend pas vraiment.
ps: J'ai encore modifié mon include, je suis déçu je pensais vraiment que ça allait marcher en changeant ma variable avec une autre de session.
<script type="text/javascript">
setInterval("deco()", 10000);
function deco()
{
// convertie timestamp js (milliseconde) en seconde
var timeNow = new Date().getTime();
timeNow = timeNow * 0.001;
timeNow = Math.floor(timeNow);
//récupère le timestamp php
var timeExpire = '<?php echo $_SESSION['timer']; ?>' ;
if (timeNow >= timeExpire)
{
window.location='../index.php';
}
}
</script>
Bonjour,
J'ai actuellement besoin de déconnecter un utilisateur lorsqu'il est inactif durant un certain temps.
Pour cela j'ai pensé include une page dans toutes mes autres pages php.
Voici la page que j'include:
<script type="text/javascript">
boucleTime();
function boucleTime()
{
settimeout(deco(),10000);
cleartimeout(settimeout);
}
function deco()
{
// convertie timestamp js (milliseconde) en seconde
var timeNow = new Date().getTime();
timeNow = timeNow * 0.001;
timeNow = Math.floor(timeNow);
//récupère le timestamp php
var timeExpire = '<?php echo $timeExpire; ?>' ;
if (timeNow >= timeExpire)
{
window.location='../index.php';
alert("Vous avez été inactif durant un certain temps, veuillez vous reconnecter svp.");
}
}
</script>
Normalement, je récupère le timestamp en php, auquel j'ajoute un certain temps avant que la session expire.
Je récupère ce timestamp dans mon code javascript et avec un settimeout, toutes les 10 secondes je compare le timestamp javascript avec celui du php.
Me renvoyer sur index.php me déconnecte automatiquement.
Si quelqu'un a la solution à mon problème, je suis preneur
Merci.
EDIT: J'ai réussi! Le problème c'est que maintenant si j'ouvre deux onglets et que sur une je suis inactif, cela va me détruire ma session. Comment faire pour contourner cela ? (Utiliser autre chose que session_destroy sur ma page index.php ?)
ps: Le code de mon include:
<script type="text/javascript">
setInterval("deco()", 10000);
function deco()
{
// convertie timestamp js (milliseconde) en seconde
var timeNow = new Date().getTime();
timeNow = timeNow * 0.001;
timeNow = Math.floor(timeNow);
//récupère le timestamp php
var timeExpire = '<?php echo $timeExpire; ?>' ;
if (timeNow >= timeExpire)
{
alert("Vous avez été inactif durant un certain temps, veuillez vous reconnecter svp.");
window.location='../index.php';
}
}
</script>
Pages : 1