Help ! Compteur de visiteurs

Le
Kiriasse
Bonjour,

J'aimerais placer sur la page d'accueil (index.html) de mon site un compteur
de visiteurs mais qui ne comptablise que les visites de cette seule page
principale (pas les autres pages) et qui ne me comptabilise pas moi-même
(quand je me connecte à mon site depuis mon ordinateur). Et sans base de
données.
Est-ce possible ?
Si oui, quelqu'un aurait-il la gentillesse de me donner à télécharger un
script PHP (ou JavaScript) qui ferait cela ?
Merci d'avance.
Kiriasse
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
John GALLET
Le #19144031
Bonjour,

J'aimerais placer sur la page d'accueil (index.html) de mon site un compteur
de visiteurs mais qui ne comptablise que les visites de cette seule page
principale (pas les autres pages) et qui ne me comptabilise pas moi-même
(quand je me connecte à mon site depuis mon ordinateur). Et sans base de
données.



Avant tout chose, je dois rappeler qu'il faut préférer l'analyse des
logs du serveur à l'ajout de tout autre truc quel qu'il soit car on va
nécessairement consommer des ressources totalement inutilement. Et
l'analyse des logs est toujours fiable. Donc commence par vérifier si
ton hébergeur ne le donne pas en standard, ou s'il ne donne pas un accès
aux logs http, cas dans lequel il y a par exemple le très bon outil
awstats: http://awstats.sourceforge.net


Si oui, quelqu'un aurait-il la gentillesse de me donner à télécharger un
script PHP (ou JavaScript) qui ferait cela ?



Si tu ne veux pas de SGBDR, le plus simple est de tout externaliser et
laisser les autres se prendre la charge à ta place. Ca tombe bien,
google analytics fait pile poil ce qu'il te faut.

http://www.google.com/analytics/fr-FR/

a++;
JG

PS: petit rappel de sécurité au passage pour ceux qui seraient tentés
d'écrire leur propre compteur: les variables de $_ENV et $_SERVER comme
au hasard user-agent ou referer sont d'excellents vecteurs d'attaque et
absolument pas fiables (injection SQL par exemple).
Kiriasse
Le #19144791
Bon, s'il me faut passer des heures à tout cela et essayer de comprendre ce
qui est écrit sur ce site en anglais, je ne suis pas sortii de l'auberge.
Merci quand même de m'avoir répondu.
Kiriasse
Répondant à

== "John GALLET"
Avant tout chose, je dois rappeler qu'il faut préférer l'analyse des
logs du serveur à l'ajout de tout autre truc quel qu'il soit car on va
nécessairement consommer des ressources totalement inutilement. Et
l'analyse des logs est toujours fiable. Donc commence par vérifier si
ton hébergeur ne le donne pas en standard, ou s'il ne donne pas un accès
aux logs http, cas dans lequel il y a par exemple le très bon outil
awstats: http://awstats.sourceforge.net
(...)
John GALLET
Le #19145001
> Bon, s'il me faut passer des heures à tout cela et essayer de comprendre ce
qui est écrit sur ce site en anglais, je ne suis pas sortii de l'auberge.



You know what they say : no pain, no gain.

Blague à part, ça se limite à modifier le fichier standard de
configuration fourni dans la distrib (awstat.conf de mémoire) pour
indiquer où sont les logs à lire et où écrire les résultats et le cache
des données. Un login/pass dans un .htaccess pour empêcher l'accès des
fois qu'il y ait une faille de sécurité dans le machin et on en parle
plus. Tu remarqueras au passage que l'auteur d'awstats, qui est
français, a fait l'effort de fournir une doc pour la terre entière.

Maintenant il n'y a pas que lui, mais il est plus complet que webalyzer
par exemple.

JG
--
Il y a des salopards de cybercable qui essaient de rentrer dans mon
ordi!!!!!!
Et où pourrai je trouver un bon firewall en français???
-+- SS in NPC : Cherche VF pour bien bouter l'intrus -+-
Kiriasse
Le #19146471
Blague à part, pour un programmeur qui connaît bien le PHP (ce qui n'est pas
mon cas), ça ne doit tout de même pas être bien malin à réaliser un
algorithme en PHP qui serait en gros, me semble-t-il, le suivant.
Incrémenter le compteur d'une unité sauf :
- si la page consultée n'est pas index.html ;
- si l'adresse IP de l'ordinateur qui se connecte est celle de l'ordinateur
du « webmaster ».

C'est cela que je voudrais avoir.
Je renouvelle donc ma demande.
À votre bon coeur...
Kiriasse
Répondant à

== "John GALLET"
Blague à part, ça se limite à modifier...
John GALLET
Le #19147751
> Blague à part, pour un programmeur qui connaît bien le PHP (ce qui n'est pas
mon cas), ça ne doit tout de même pas être bien malin à réaliser un
algorithme en PHP qui serait en gros, me semble-t-il, le suivant.


Sachant que l'algo est complètement pris à l'envers, ça commence pas
super bien.

Incrémenter le compteur d'une unité sauf :
- si la page consultée n'est pas index.html ;


Non seulement c'est à l'envers, car c'est par requête http que le script
est exécuté ou pas, mais sauf à tricher sur l'extension par un .htaccess
par exemple, ça va être :
- uniquement sur la page index.php
Fort heureusement, c'est assez facile à implémenter...

- si l'adresse IP de l'ordinateur qui se connecte est celle de l'ordinateur
du « webmaster ».



Donc tu as une adresse IP fixe et tu ne te connectes jamais en dehors de
cet ordinateur ? Je ne suis pas fana des cookies, mais là ça me semble
s'imposer, ou alors selon la *raison* pour laquelle tu vas regarder
cette page, trouver un autre moyen: passer un argument, tripoter le
user-agent, avoir une page dédiée pour faire cette tâche là, bref
n'importe quoi qui soit un peu plus souple que de l'IP. Ou alors il faut
jouer avec DynDNS par exemple.

C'est cela que je voudrais avoir.


J'avais compris.

Mais l'implémentation n'est pas si simple pour le faire proprement. Oh
bien sûr on peut faire 20 à 30 lignes de code qui marchoteront et qui
régulièrement se prendront les pieds dans le tapis parce que Murphy
notre ami aura fait un accès concurrentiel lors de l'ouverture du
fichier (vu que tu indiques "sans base de données"). Et puis demain tu
voudras avoir les résultats pour chaque mois, ou depuis ta dernière
demande. Ou autre chose. Donc au lieu de passer du temps à faire
salement ce que d'autres méthodes font proprement, mieux vaudrait
utiliser les mécanismes adéquats mais bon, apparemment "ça va pas", donc
je n'insiste pas plus.

Je renouvelle donc ma demande.


De mon côté j'en profite pour saluer amicalement Nike, le sponsor
perpétuel de ce forum. Je précise que c'est à prendre au second degré,
j'ai également bien lu que tu déclares ne pas maîtriser PHP donc ne pas
pouvoir le faire toi-même.
a++; JG
--
SJ> Just do it.
TM> Traduction ?
Bouge toi le cul.
-+- RMD in GNU : Move your ass -+-
Patrick Mevzek
Le #19147761
Le Sun, 19 Apr 2009 17:08:14 +0000, Kiriasse a écrit:
ça ne doit tout de même pas être bien malin à réaliser un
algorithme en PHP



Et si, ca l'est, et ca n'a rien de spécifique à PHP (si ce n'est qu'en
baissant le niveau il y a le risque d'avoir davantage de mauvaises mises
en oeuvre).

Le problème du compteur est un problème classique d'algorithmique, à
savoir gérer correctement des accès concurrents (plusieurs fois la même
page visitée à un instant t) à une ressource commune (la valeur actuelle
du compteur).

Incrémenter le compteur d'une unité sauf :



Ce qui va nécessiter bien plus qu'une seule instruction.

- si la page consultée n'est pas index.html ;



Si c'est index.html a priori ce n'est plus du PHP (oui on peut mettre du
PHP dans un fichier .html suffit de configurer son serveur correctement,
mais notamment pour des questions de performance, ce n'est pas forcément
bon, donc fait souvent).

Mais sinon il suffit de tester $_SERVER['SCRIPT_NAME']
(ou $_SERVER['PHP_SELF'] cf autre fil récent)

- si l'adresse IP de l'ordinateur qui se connecte est
celle de l'ordinateur du « webmaster ».



Tester $_SERVER['REMOTE_ADDR']


--
Patrick Mevzek . . . . . . . . . . . . . . Dot and Co
Kiriasse
Le #19149851
Je n'ai pas envie de mettre les mains dans le cambouis (j'ai autre chose à
faire).
Ce que je cherche c'est un fichier PHP tout fait qui serait appelé depuis ma
page index.html.
Je constate que mon compteur actuel (qui est en JavaScript) est incrémenté
même quand c'est moi qui me connecte (et en plus pas toujours). Le nombre de
visites indiqué par le compteur est donc peu significatif.
Je pensais que, sur ce forum où discutent des passionnés du PHP, on aurait
pu m'indiquer où trouver un tel script.
Comme mon site personnel n'est pas lu énormément (la qualité n'est pas la
quantité), si le hasard fait que deux lecteurs se connectent au même instant
t et que le compteur n'est incrémenté que d'une unité (ou même non
incrémenté), ce n'est pas bien grave car le cas est très rare. L'erreur
serait donc acceptable (et j'en suis le seul juge).
Kiriasse
http://www.kiriasse.fr
Répondant à

== "Patrick Mevzek"
Le problème du compteur est un problème classique d'algorithmique, à
savoir gérer correctement des accès concurrents (plusieurs fois la même
page visitée à un instant t) à une ressource commune (la valeur actuelle
du compteur).
(...)
fvendo
Le #19169751
On 20 avr, 10:22, "Kiriasse" <"http://
www.kiriasse.fr"@news52rd.b1.woo> wrote:
Je n'ai pas envie de mettre les mains dans le cambouis (j'ai autre chose à
faire).
Ce que je cherche c'est un fichier PHP tout fait qui serait appelé depuis ma
page index.html.
Je constate que mon compteur actuel (qui est en JavaScript) est incrémenté
même quand c'est moi qui me connecte (et en plus pas toujours). Le nombre de
visites indiqué par le compteur est donc peu significatif.
Je pensais que, sur ce forum où discutent des passionnés du PHP, on aurait
pu m'indiquer où trouver un tel script.
Comme mon site personnel n'est pas lu énormément (la qualité n'est pas la
quantité), si le hasard fait que deux lecteurs se connectent au même instant
t et que le compteur n'est incrémenté que d'une unité (ou même non
incrémenté), ce n'est pas bien grave car le cas est très rare. L'erreur
serait donc acceptable (et j'en suis le seul juge).
Kiriassehttp://www.kiriasse.fr
Répondant à

=> "Patrick Mevzek"
Le problème du compteur est un problème classique d'algorithmique, à
savoir gérer correctement des accès concurrents (plusieurs fois la même
page visitée à un instant t) à une ressource commune (la valeur actuelle
du compteur).
(...)



Bonjour,

Avez-vous d'abord un IP fixe, car si script il y a pour ce que vous
demandez, il faut pouvoir dire à ce script de ne pas comptabiliser
votre visite mais pour que ce script puisse vous identifier, il va se
servir de l'adresse IP du visteur, mais si votre adresse IP change,
pas moyen de vous reconnaître.
Kiriasse
Le #19170521
Non, je n'ai pas une adresse IP fiwe. Mais il doit y avoir moyen de faire
vérifier au programme PHP si un fichier quelconque au nom choisi de façon
aléatoire par moi-même existe dans un certain répertoire du disque dur. Si
ce fichier existe, le compteur ne doit pas être incrémenté. Sinon, il doit
l'être.
Kiriasse
Répondant à

== Avez-vous d'abord un IP fixe, car si script il y a pour ce que vous
demandez, il faut pouvoir dire à ce script de ne pas comptabiliser
votre visite mais pour que ce script puisse vous identifier, il va se
servir de l'adresse IP du visteur, mais si votre adresse IP change,
pas moyen de vous reconnaître.
Sylvain SF
Le #19171561
Kiriasse a écrit :
Non, je n'ai pas une adresse IP fiwe. Mais il doit y avoir moyen de faire
vérifier au programme PHP si un fichier quelconque au nom choisi de façon
aléatoire par moi-même existe dans un certain répertoire du disque dur. Si
ce fichier existe, le compteur ne doit pas être incrémenté. Sinon, il doit
l'être.



un fichier local sur votre machine accédé par un script php tournant
sur un serveur distant au travers d'un navigateur-passoire !?!
le début était déjà remarquable, ça atteint des sommets !

la réponse est votre demande est en fait simple:
- soit votre page n'est visitée par personne, sauf vous de manière
frénétique (pour vérifier qu'elle existe encore) et le compteur
est simplement ZERO.
- soit votre page est régulièrement visitée et vos 3 clics perso
journaliers ou hebdo. ne changent rien aux stats globales.

en court, le traitement différencié n'a aucun intérêt pour prendre
en compte vos visites, vous savez déjà si tel jour vous avez chargé
2 fois ou 200 fois la page.

Sylvain.
Publicité
Poster une réponse
Anonyme