Discussion:
Help ! Compteur de visiteurs
(trop ancien pour répondre)
Kiriasse
2009-04-19 09:11:23 UTC
Permalink
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
John GALLET
2009-04-19 09:34:52 UTC
Permalink
Bonjour,
Post by Kiriasse
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
Post by Kiriasse
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
2009-04-19 11:19:02 UTC
Permalink
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
2009-04-19 11:59:32 UTC
Permalink
Post by Kiriasse
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
2009-04-19 17:08:14 UTC
Permalink
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
2009-04-19 20:23:31 UTC
Permalink
Post by Kiriasse
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.
Post by Kiriasse
- 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...
Post by Kiriasse
- 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.
Post by Kiriasse
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.
Post by Kiriasse
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
2009-04-19 20:23:31 UTC
Permalink
Post by Kiriasse
ç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).
Ce qui va nécessiter bien plus qu'une seule instruction.
Post by Kiriasse
- 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)
Post by Kiriasse
- 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
<http://www.dotandco.net/> <http://www.dotandco.com/>
<http://www.dotandco.net/ressources/icann_registrars/prices>
<http://icann-registrars-life.dotandco.net/>
Kiriasse
2009-04-20 08:22:13 UTC
Permalink
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).
(...)
f***@gmail.com
2009-04-22 18:29:17 UTC
Permalink
On 20 avr, 10:22, "Kiriasse" <"http://
Post by Kiriasse
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
2009-04-22 20:04:08 UTC
Permalink
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 à

===
<***@gmail.com>
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
2009-04-22 22:50:06 UTC
Permalink
Post by Kiriasse
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.
Kiriasse
2009-04-23 13:25:30 UTC
Permalink
Vous êtes un con glorieux. Je ne vous demande pas de juger de la pertinence
de mon problème (dont je suis le seul juge) mais de me fournir (si vous en
êtes capable) la solution à ce problème.
Ou bien de passer votre chemin.
Kiriasse
Répondant à

===
"Sylvain SF"
(...)
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 SF
2009-04-24 11:09:18 UTC
Permalink
Post by Kiriasse
Vous êtes un con glorieux.
vous êtes un con ignorant pour suggérer qu'un script serveur puisse
utiliser un fichier local comme discriminant de son action.
Post by Kiriasse
Je ne vous demande pas de juger de la pertinence de mon problème
je me fous de sa pertinence que je n'ai pas jugé.
Post by Kiriasse
mais de me fournir (si vous en êtes capable) la solution à ce problème.
n'importe qui capable de 2 sous d'imagination en est capable, mais
vous serez-vous capable de la comprendre ? rien n'est moins sur à la
vue des compétences montrées ici.

tiens, juste pour illustrer votre peu d'imagination:

puisque seul la page d'index dispose d'un compteur - la page index.php
hein pas index.html comme votre haute nullité l'indiquait - accédez
donc à cette page via une URL transmettant un "code secret", par
exemple:

hxxp://monSite/index.php?whois=UPTPAIMSAI

et coder dans index.php:

<?
if (!isset($_GET['whois']) || $_GET['whois'] != 'UPTPAIMSAI'){
// incrementer le compteur
}
?>

le code secret "UPTPAIMSAI" est ici "Un Pauvre Type Prompt A Insulter
Mais Sans Aucune Imagination" mais vous pouvez naturellement utiliser
un autre identifiant secret.

concernant la gestion du compteur, amen.fr inclut une base de donnée
MySQL même pour son forfait à 7,80 Euro, si vous êtes incapable de
l'utiliser, contentez-vous de la mauvaise méthode actuelle.

SF.

Loading...