Calculer le temps de visite d'un visiteur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Calculer le temps de visite d'un visiteur

Re: Calculer le temps de visite d'un visiteur

par AB » 22 août 2011, 21:01

Pour faire un code perso de cette statistique, j'essaierais plutôt de mesurer la présence du visiteur sur chaque page, puis d'incrémenter un champ en bdd correspondant au visiteur à chaque fois qu'il quitte une page, ce qui au final donnera le total de sa présence sur le site.
En effet on peut savoir assez facilement quand un visiteur quitte une page mais pas quand il quitte le site (sauf si par la même occasion il ferme son navigateur, ce qui clôt les variables de session).

Notes bien que si tu veux pouvoir faire des requêtes vers le serveur (pour alimenter un fichier ou une table de bdd) au moment où le visiteur quitte la page - sur les évènements onunload/onbeforeunload - il faudra utiliser AJAX avec des requêtes Synchrones et non pas Asynchrone comme c'est le cas par défaut.

Si tu es débutant, le mieux à faire est de passer à autre chose pour l'instant, de t'améliorer sur des choses essentielles et de revenir la dessus plus tard car c'est assez coton et tu va te heurter à des effets de bord : notamment l'adresse IP ($_SERVER['REMOTE_ADDR']) qui sera identique pour deux visiteurs distincts situés derrière un proxy, $_SERVER['HTTP_REFERER'] qui n'est pas une valeur de confiance et n'est renseignées qu'une fois sur deux, etc.

Bref, c'est pas si simple que cela peut paraître... alors pour l'instant je te conseillerais plutôt comme Mazarini d'utiliser si possible les statistiques du serveur qui sont par ailleurs disponibles par défaut sur de nombreux serveurs mutualisés ou encore d'autres solutions externes fournies par google etc.

Re: Calculer le temps de visite d'un visiteur

par Mazarini » 22 août 2011, 14:54

Awstat est un logiciel qui traite les log d'Apache pour faire diverses statistiques. Il peut très bien tourner sur une autre machine si on transfert les log. Online.fr permettait d'ailleurs à ses clients de récupérer les logs tout les jours pour en faire des stats.

Dans mon cas, je n'ai pas fait l'installation du serveur moi même. J'en suis capable, mais je ne pense pas être suffisamment compétent, ni avoir assez de temps disponible pour éviter des problèmes de sécurité. Je ne pourrai pas trop aider. Par contre, vu la fréquentation faible de mon site, je verrai si les moteurs de recherches étaient compté avec les autres visiteurs. Les robots des moteurs de recherche sont comptés à part.

Awstat permet aussi d'avoir tout un tas d'informations sur les visites de ton site. L'avantage, c'est que le programme est mis à jour pour prendre en compte les nouveaux navigateurs, les nouveaux moteur de recherche. J'aime particulièrement l'analyse des mots clés de recherche qui permettent d'accéder à mon site et la durée par visiteur (à défaut d'avoir un grand nombre de visiteur^^). Je ne fais pas de publicité particulière pour Awstat, les autres sont certainement bien.

A priori, il doit être facile d'installer ce genre de produit, je te conseillerai d'en essayer quelqu'un pour te rendre compte. Ce qui ne t'empêche pas de faire des stats personnelles.

Re: Calculer le temps de visite d'un visiteur

par sonn » 22 août 2011, 12:41

Merci de ta réponse, elle est fort pertinente, mais peut-tu m'en parler plus sur sa mise en place?
comme: ou le poser? -avant doctype ? -dans le head? -peu importe?
il faut le mettre sur toute les pages?
memes les visiteurs le voit???

enfin je vais cherche de mon côté, tu m'as donner une superbe voie à explorer, je te remercie encore, je te demanderais si quelque chose n'est pas clair :)

Merci encore!

EDIT : Je suis completement à coté :D c'est pas une fonction :D mes questions sont stupides désormais :) après avoir lu des comparatifs, il semble que AWStats soit moins perfermant (exemple: les moteurs de recherche compte comme des visites!) que Google Analytics qui pour l'avoir déjà essayer fonctionne très bien, puissant et est très conviale (les gouts et les couleurs...) je vais donc le réutiliser mais ce n'est pas ce que je cherchai au départ

je reste donc sur mon idée et je vais codé un peu, histoire de voir si c'est possible :) je vous tient naturellement informé de l'avancé de ce script!

Re: Calculer le temps de visite d'un visiteur

par Mazarini » 22 août 2011, 12:13

Bonjour,

Il est difficile de parler de temps de présence d'un internaute.
Je me contente d'utiliser awstats même si je ne connais pas son algo de calcul. Il se base sur les log Apache.

Exemple de stat (sans la mise en page) :
Visites: 45 - Moyenne: 144 s
Durée Visites Pourcentage
0s-30s 35 77.7 %
30s-2mn 5 11.1 %
2mn-5mn 3 6.6 %
5mn-15mn
15mn-30mn 1 2.2 %
30mn-1h
1h+ 1 2.2 %

Calculer le temps de visite d'un visiteur

par sonn » 22 août 2011, 08:28

Bonjour à tous,

[section inutile]
Je commence depuis une semaine (mais vraiment une semaine sans interruption! ) le HTML, le CSS, le MySQL, le PHP, et le JavaScript, (j'aime savoir toutes les possibilités que j'ai, ainsi je peux découvrir une méthode parfois plus simple et moins lourde à faire dans un language plutot qu'un autre) Je "maitrise" l'HTML et le CSS, j'ai pas encore appronfondi le MySQL que je trouve utile que quand le site est déjà important et le PHP et le JavaScript sont vaste donc je connait des trucs mais je suis loin de tous connaitre. Mais j'ai soif de connaisance et je suis patient, je peux passer beaucoup de temps sur un code pour qu'il soit "parfait".
[fin section inutile]

L'idée :
calculer le temps de visite du visiteur sur le SITE (j'insiste la dessus! je veut pas par page, mais sur la totalité du site) et l'enregistrer dans un simple fichier .txt (pour le moment)

mes recherches :
Elles ne m'ont rien donné de concluant juste des gens qui voulaient mais qui n'ont pas réussi.

peut-etre que vous avez des liens pour moi? (ATTENTION je vient pas ici pour choper des liens, mais bien, réfléchir, partager et coder, mais si des informations supplémentaires peuvent m'etre apportés je suis pas donc, de plus j'ai fait la constation que les membres des forums ont TOUJOURS des liens qu'on n'arrive jamais à trouver :) )

pseudo-résultat :
voilà un bout de code en JavaScript qui mesure le temps de visite de la page courante :

<SCRIPT LANGUAGE="Javascript">
<!-- Begin
pageOpen = new Date();
function bye() {
pageClose = new Date();
minutes = (pageClose.getMinutes() - pageOpen.getMinutes());
seconds = (pageClose.getSeconds() - pageOpen.getSeconds());
time = (seconds + (minutes * 60));
if (time == 1) {
time = (time + " seconde");
}
else {
time = (time + " secondes");
}
alert('Vous avez visité pendant ' + time + ' Rester plus longtemps la prochaine fois!');
}
// End -->
</SCRIPT>
</HEAD>
<BODY OnUnload="bye()">

c'est déjà une piste mais bon....

Mes réflexions :

(A savoir sur mon site, sur toutes mes pages au début je vérifie si j'ai l'acces à la page via une variable $autorisation_entrer mais cette variable est TOUJOURS nulle et donc une rédirection est faite à index.php et là autorisation d'enter est donnée, cela me permet de faire un point de passage obliger à mes visiteurs)
(et j'ai écrit ce code sur toutes mes pages :
<noscript>
<meta http-equiv="refresh" content="0; URL=http://www.http://www.scorpia.webuda.co ... ctiver.php" />
</noscript>
je penser pas que sa marcherais, mais pourtant c'est le cas, mais ca doit pas etre W3C, ainsi je sait que je peux toujours utiliser JavaScript, je sait c'est pas réglo mais comme ça je sait que tout le monde voient, c'est plus simple, et puis JS n'embete personne)

la méthode serais ainsi décomposée :
1. le visiteur "entre"
2. l'instant T1 est enregister dans une variable de session
3. le visiteur se ballade :)
4. le visiteur s'en vas :/
5. Immédiatement un script JS ouvre une page qui soustrait de l'instant T2 (au moment de l'action) l'instant T1, le résultat T2-T1 donne le temps de la visite
6. Le contenu de la variable $temps_visite est enregistrer dans un fichier .txt

via ce script qu'il faudras modifier :
<?php
$fichier = fopen("ip.txt", "a");
$date_str = 'D d M Y H:i:s T(0)';
$hostname = $_SERVER["REMOTE_ADDR"];
fputs($fichier, date($date_str), $_SERVER['REMOTE_ADDR']."\n");
fputs($fichier, $_SERVER['REMOTE_ADDR']."\n");
fputs($fichier, $HTTP_REFERER."\n");
fclose($fichier);
?>

Mes interrogations :
Cela peut-t-il marcher? Je croit que oui, ca semble simple, mais le fait que je trouve rien sur internet me met des doutes :/
Si oui, quelqu'un l'as déjà fait ?

Voilà, je m'excuse de la longueur de ce sujet pour un problème qui peut être simple mais bon on est dans "php débutant" et puis c'est vrai qu'en vérité c'est pas un problème mais si ca marche pas on peut cherche ensemble et si ca marche, je partage :D en espérant que vous préférez les sujet à rallonge explicites que les SMS incompréhensible, mais au moins ca rend le probleme clair et facile à imaginer et ca évite les problemes de mal-compréhension :D