4 votes

Suivre combien de temps un utilisateur reste sur une page ?

Comment puis-je savoir combien de temps un utilisateur reste sur une page avant d'en demander une autre ou de quitter tout simplement le site ?

En gros, je veux faire une vérification, si un utilisateur reste sur la page pendant 20 minutes ou plus, alors faire quelque chose.

Je pense que cela nécessite l'utilisation de php et de javascript, mais je ne sais pas exactement comment y parvenir.

Peut-être en utilisant ceci $_SERVER en php pour obtenir l'heure d'exécution, puis obtenir un horodatage lorsque l'utilisateur clique ailleurs et simplement comparer les deux ?

1 votes

Ceci pourrait vous aider : stackoverflow.com/a/3893491/235710

0 votes

Vous pouvez simplement installer google analytics

2 votes

Pourriez-vous être un peu plus précis sur ce que signifie "faire quelque chose" ? Gardez à l'esprit que le temps écoulé depuis qu'ils ont chargé votre page n'est pas en corrélation avec le temps qu'ils ont passé en regardant votre page. J'ai des onglets ouverts dans mon navigateur que je n'ai pas regardés depuis des heures.

6voto

Dylan Grech Points 120

Vous pouvez faire tout cela avec un simple javascript.
Pour une seule page :

window.setTimeout(function(){
// Do stuff after 20 minutes of loading the page
// Then using jQuery you can call a PHP script to do stuff like so:
$.ajax({
     url: '/myScript.php',
     method: 'POST',
     success: function(result){
        //The request was successful and the output is stored in a variable: result
     },
     complete: function(){
        //Do stuff when the request is completed (Ignores if success or not)
     },
     beforeSend: function(){
        //Do something before the request is sent
     }
});
}, 20 * 60 * 1000); //This is in milliseconds that's why I use the equation 

Pour les pages multiples :
Je vous suggère de créer un cookie au moment où un utilisateur visite une page et de vérifier sur chaque page si le cookie existe. S'il existe, lancez une requête toutes les x secondes pour voir si les 20 minutes se sont écoulées depuis la création du cookie.

Pour une documentation complète sur Ajax, allez sur : http://api.jquery.com/jQuery.ajax/

1 votes

J'ai besoin d'utiliser php si 20 minutes passent. Je ne suis pas en php, alors comment pourrais-je le faire en utilisant votre code ?

2 votes

Vous utilisez des requêtes Ajax. Je vais mettre à jour la réponse pour vous afin que ce soit clair :)

0voto

jason.zissman Points 982

J'ai travaillé à la création d'une petite bibliothèque et d'un service JavaScript qui permet de mesurer le temps passé par un utilisateur sur une page Web. Il présente l'avantage supplémentaire de suivre avec plus de précision (mais pas parfaitement) la durée d'interaction réelle de l'utilisateur avec la page. Elle ne tient pas compte du temps pendant lequel un utilisateur change d'onglet, se met en veille, réduit le navigateur, etc. La méthode de Google Analytics a le défaut (d'après ce que je comprends) de ne vérifier que lorsqu'une nouvelle requête est traitée par votre domaine, ce qui n'est pas toujours précis. Elle ne tient pas compte du fait qu'une personne ne consulte plus votre page, qu'elle a réduit son navigateur, qu'elle a changé d'onglet pour 3 pages web différentes depuis le dernier chargement de votre page, etc.

Pour référence - aucune solution n'est parfaite. Mais j'espère que celle-ci apporte une valeur ajoutée. Vous pouvez mettre en œuvre l'API Javaacript et recueillir les statistiques vous-même ou vous pouvez utiliser le service qui fait tout cela pour vous.

http://timemejs.com

Un exemple de son utilisation :

Incluez dans votre page :

<script src="https://timemejs.com/timeme.min.js"></script>
<script type="text/javascript">
TimeMe.initialize({
    currentPageName: "home-page", // page name
    idleTimeoutInSeconds: 15 // time before user considered idle
});
</script>

Si vous voulez rapporter les temps vous-même à votre backend :

xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","ENTER_URL_HERE",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds();
xmlhttp.send(timeSpentOnPage);

TimeMe.js prend également en charge l'envoi de données de chronométrage via des websockets, de sorte que vous n'avez pas besoin d'essayer de forcer une requête http complète dans l'application document.onbeforeunload événement.

1 votes

L'url vers timemejs ne fonctionne pas (plus). C'est sans https.

0 votes

Merci. J'ai corrigé le lien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X