Bonjour,

Je vous explique tout ...

Pour mon projet j'ai bessoin de savoir si le visteur (Qui est connecter) est réellement sur la page afficher.

En gros L'utilisateur se connecte a 12:10 le 11/07/2022 et se deconnecter a 15:35 le 11/07/2022. Je dois savoir si l'utilisateur est toujours sur l'onglet/fenetre de mon site et non sur un(e) autre onglet/fenetre.

Et par exemple d'une heure si pendant se temps l'utilisateur change d'onglet je dois envoyer un mail.

J'ai deja fais quelque recherche avec mon ami (Google, ok je sort),et je suis tomber sur une solution en JS qui cette fois définit l'onglet du site comme actif au chergement d'une page.
http://www.w3schools.com/jsref/met_win_focus.asp

Je cherche une solutions en PHP de preference ou tout autre solution en JS par exemple qui me permeterait d'envooyer un mail en php.

/!\ -------------------- ATTENTION --------------------- /!\

JE NE RECHERCHE PAS DE CODE DEJA TOUT FAIS MAIS UN TUTO OU UNE FONCTION OU MEME UN PEU DE DOCUMENTATION...

CA FAIT DEJA 2 SEMAINES QUE JE CHERCHE SUR GOOGLE 5 (Peut-etre mal...) MAIS SVP NE DITE PAS QUE JE N'AI PAS CHERCHER

/!\ -------------------- ATTENTION --------------------- /!\

Voila, Merci d'avance

TJ_

PS: dsl pour les fautes d'orthographes !!!

2 réponses


connected
Réponse acceptée

Bonjour,

plus globalement :

var isActive;

  window.onfocus = function () {
    isActive = true;
  };

  window.onblur = function () {
    isActive = false;
  };

  setInterval(function () {
    // pour le test on ecrit dans la console JS actif ou innactif 
    console.log(window.isActive ? 'onglet actif' : 'onglet innactif'); // ici tu mets la condition que tu veux, le cas échéchant un appel ajax
  }, 1000); // (en milliseconds) ici 1000ms correspond à 1 seconde

Il te suffit de faire une condition sur window.isActive forcement inclut dans setInterval si tu veux faire le test dans toutes les x secondes.
La solution PHP n'est pas possible vu que c'est côté client que tu tout se joue, le fait de savoir si l'utilisateur est toujours connecté, mais il te suffit de rajouter une requête ajax après avoir identifié le statut de l'utilisateur.

Bon courage.

Donc, je penses qu'il faudrait avoir un peu plus d'imagination, et de faire un code, a toi (fait maison), en gros prendre un systeme de déconnexion automatique, par exemple, si il y a aucune activité sur le site pendant X de temps, a ce momment la tu redigere le membre automatiquement vers 1 autre page, et cette page contiendra le script pour envoyer les emails !
Enfin c'est je pense !

Mon code :

<script language="javascript" type='text/javascript'>
    function session(){
        window.location="send_email.php"; //page du script d'envoi de l'email
    }
    setTimeout("session()",300000); // = 5 minutes (T en millisecondes)
</script>