Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMPTEUR DE VISITES (AVEC FCHIER), TRÈS SIMPLE D'UTILISATION


Information sur la source

Catégorie :Application Classé sous : compteur, unique, ip, visite Niveau : Débutant Date de création : 28/02/2006 Date de mise à jour : 02/03/2006 17:47:00 Vu / téléchargé: 17 313 / 3 146

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

Description

Utilisation : il vous suffit simplement d'inclure ce script dans la page voulue, puis
d'invoquer la fonction avec au moins 1 argument (l'emplacement + le nom du fichier "compteur")
-> ex: echo compteur_visites("compteur.txt")."visite(s)";
        -> ou encore : echo "<div class=\"compteur\">Nombre de visite(s) : .compteur_visites("log/compteur.txt", 0)."</div>";
Vous n'avez même pas à créer le fichier compteur.txt, le script s'en charge pour vous!

--> Vous devez forcément avoir les droits en écriture sur le dossier où le fichier texte va être créé, et ce dossier
doit bien évidement exister.

--> Il est donc aisé de faire un compteur de visite pour un site entier, mais aussi pour chaque page, ...
 

Conclusion

Je pense améliorer le script d'ici peu, pour qu'il prenne en compte le nombre de connecter actuel sur le site.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

02 mars 2006 17:47:00 :
Changement selon les remarques de GRenard, à savoir : - la fonction ne retourne que le nombre de visites ou -1 (si une erreur survient), et plus d'éventuels messages d'errers. - Supression des arguments $message_before et $message_after, car c'est autant pratique d'entourrer la fonction, par ses propres messages. - Changement des séparateurs \n par # et : par @ - Supression du fwrite et du return en haut de la fonction, car on pouvait s'en passer (nécéssitant un petit changement ds le code tout de même) - Changement des commentaires # par // - Correction des fautes d'orthographes que j'ai trouvé

Commentaires et avis

signaler à un administrateur
Commentaire de Evangun le 28/02/2006 17:55:45

Salut,
chez moi ton fichier php n'est pas indenté, c'est illisible.
Et est-ce que tu pourrais détailler ce que ton compteur... compte?
Sessions, visites, IP uniques, clicks...?

signaler à un administrateur
Commentaire de GRenard le 28/02/2006 20:45:32

Evangun, ouvre la avec wordpad

Commentaire :
Mixer les commentaire /* et # n'est pas une bonne pratique
Une belle fonction retourne toujours un seul type ou FALSE... Tu vas me dire que c'est le cas... Mais une fonction aussi ne fait que ce qu'elle doit faire...
Donc à ta place, je ne retournerais pas une erreur mais plutôt un code (FALSE ou -1)
Ensuite, il est inutile de mettre $message_before et $message_after.
if $zero?"00000" ... mmm tu veux padder avec des zéros ? ok cette fonction peut le faire mais utilise str_pad ou sprintf('%0'.$zero.'d', $compteur); (même chose pour plus bas dans ton fichier)
Drôle de séparateur, premièrement un \n et deuxièmement un :... ok tu as le droits... mais si IPv6 on sait pas ce qui pourrait se passer avec un :... change de marqueur...

Le best dans une fonction est d'être générique... si tu ne mettais pas ton fwrite et ton return tout en haut là pour la création de ton fichier, je suis certain que ça marcherait quand même... bon ok, peut être que ça ferait quelques choses en plus mais bon...

Quelques fautes de français mais ce n'est pas grave... ce n'est pas ça l'exercice...

J'espère que mon commentaire t'aidera et aidera les autres.

signaler à un administrateur
Commentaire de Gulius le 01/03/2006 16:32:20

Evangun -> il compte les Ip unique (les visites uniques quoi).
GRenard -> j'avais jamais eu de commentaire aussi constructif. Merci bien. Je vais voir tous ce que tu m'as dit et surement changer ça (menfin si j'ai le temps ... :) Menfin merci bcp, faudrai plus de commentaire comme ça.

signaler à un administrateur
Commentaire de coucou747 le 01/03/2006 20:18:08

avec  IPv6... On ne pourrait plus stoquer une ip sur un octet, imagine : tout les drivers de cartes réseau seraient à reprogrammer, tout les os aussi, tout les outils C de paramétrage réseau, si tu stoque ton ip dans une base SQL, tu ne pourras plus mettre de type INT, tu devras mettre un INT LONG UNSIGNED, et un INT MEDIUM UNSIGNED...

Bref, personellement, je pense qu'ipv6 n'arrivera pas tout de suite, et qu'on a le temps de le voir vennir, je penses aussi que comme en C, on va voir apparaitre dans mysql et php et les autres outils, un type d'entier extra long... en C, on peut en mettre un sur 96 bits, je crois... c'est pas suffisant pour de la crypto, mais c'est déja pas mal, et largement pour une ip...

signaler à un administrateur
Commentaire de GRenard le 01/03/2006 23:10:39

IPv6 est déjà disponible... mais pas en grande quantité ou on en a pas besoin puisqu'on en a assez d'IP en IPv4.
Des places comme en Asie, il y a un bon paquet IPv6

De plus, pour les personnes en Europe et en Amérique, ils voient que le IPv4 fonctionne bien alors ca ne sert à rien pour eux de faire des routeurs IPv6...

signaler à un administrateur
Commentaire de coucou747 le 02/03/2006 11:25:44

en ipv4, on ne peut mettre que 255 ^4 ordinateurs sur une même plage, ça ne suffira pas dans les 10 ans à suivre, je suis d'accord avec toi...

tu stoques sur quoi une ip toi ? personellement, pour optimiser, je les mets sur des int, et un int ne peut pas contennir une ipv6...

signaler à un administrateur
Commentaire de GRenard le 02/03/2006 14:41:22

Que retourne exactement $_SERVER['REMOTE_ADDR'] en cas de IPv6 ?

(En passant, vous avez vu que maintenant c'est le moteur de Yahoo qui fait rechercher sur tout le site web de PHP :P)

signaler à un administrateur
Commentaire de coucou747 le 02/03/2006 17:01:35

http://fr.php.net/manual/fr/reserved.variables.php
=>"'REMOTE_ADDR'
L'adresse IP du client qui demande la page courante."
je ne vois aucun détails sur ipv6... je n'ai pas lu tout les exemples, mais j'ai effectué une recherche sur ipv6 dans cette page, et aucune réponse...

Conslusion, en france, avoir un réseau ipv6, c'est pas quelquechose de facile, et la doc de php ne nous aide pas à la migration... bien qu'elle fasse parti des documentations en lignes les plus complètes et les mieux faites et illustrés... (avec la doc de perl...) Bref, mieux vaut attendre avant de penser vraiment à ipv6 (attendre que les langages qu'on utilise ai pensé aux solutions à notre place, l'esprit de php, c'est aussi ça...)

signaler à un administrateur
Commentaire de Gulius le 02/03/2006 17:48:48

C'est bon, j'ai effectué les changements en rapport avce tes remarques GRenard.

signaler à un administrateur
Commentaire de GRenard le 03/03/2006 02:34:41

Cool pour les corrections..
Par contre, quand tu fais des blocs de commentaire /* */, essaie de ne pas les mettre sur plusieurs colonnes différentes... comme par exemple
$nbr_elem_file = count($file); /* On enregistre le nombre d'éléments de $file, car ce nombre va certainement changer au cours
du script, et si ou utilisait directement count($file), les résultats seraient tout simplement éronnés */
C'est vraiment dur à suivre le code dans ce temps la...

sérieusement, pour le nombre de zéro je persiste à dire que mes 2 méthodes montrées plus haut sont mieux.

Le commentaire
/* Attention: Si vous créer votre fichier texte vous même, et que vous y écrivez n'importe quoi, la valeur retournée
par la fonction serait probablement érronée !!! */
est à mon avis inutile... Si j'écris un fichier .dat avec des données complètement bizarres dedans... si l'utilisateur s'en va le modifier à la main, c'est sur à 100% que ca va donner n'importe quoi... PAR CONTRE, ton script devrait être prévu normalement pour ne pas que ca plante. (De plus, tite erreur de français : Si vous créez)
évidement prend 2 m

Pour ipv6, j'ai contacté la doc pour voir ce qu'on peut faire.

signaler à un administrateur
Commentaire de Gulius le 03/03/2006 14:15:44

:) Effectivement j'ai conscience que mes ajouts de commentaires sont peut-être trop nombreux, et un peu foutus n'importe comment .... menfin, j'vais voir ça ...

Et pour les zéros, tes deux méthodes marchent niquel, mais elles affichent toutes deux :
    0000023 au lieu de 0 000 023. C'est pôôô pareil. A moins que je me trompe ...

signaler à un administrateur
Commentaire de GRenard le 08/03/2006 23:05:56

Ouin, je pense que c'est un peu inutile mais bon... en2k

Pour ce qui est de $_SERVER['REMOTE_ADDR']. Cette variable est rempli automatiquement par le l'API du serveur (apache, IIS...) donc, il faut se documenter sur ces serveurs pour savoir la valeur retournée.
Mais elle devrait être sous la notation standard "ffff:ffff:ffff:ffff:ffff:ffff"

signaler à un administrateur
Commentaire de coucou747 le 09/03/2006 21:06:12

oui, mais existe t'il un type d'int capable de transporter une adresse ip de ce type ? Il en existera surement un quand ipv6 sera plus utilisé.... ce qui me pousse à attendre les solutions à vennir...

signaler à un administrateur
Commentaire de GRenard le 10/03/2006 00:55:49

J'ai oublié de mettre quelques ff pour que ca soit vailde :)
Mais l'idée est la.. c'est 128 bits...

Et même si IPv6 devient plus populaire, il y a encore le cas ou c'est du IPv4 en IPv6
::xxx.xxx.xxx.xxx
Donc personnellement, pour mes applications je vais stoquer en string...
Il se pourrait très bien qu'un type de 128 bits sortent mais bon... je ne sais pas, on est pas rendu là... donc string power

signaler à un administrateur
Commentaire de jean84 le 10/03/2006 12:52:53

Salut a tous !
Je lisais vos commentaire sur le stockage d'une ip v4 dans une bdd et je me pose une petite question... Pourquoi mettre une ip dans un int ?? Moi perso j'ai toujours stocke dans un varchar{15) et je n'ai jamais eu de probleme... est-ce que c'est mal ??
En vous remerciant,
@++ et bon coding !

signaler à un administrateur
Commentaire de jean84 le 10/03/2006 13:32:29

Au fait je continue dans ma lance apres avoir lu le code... Je veux pas en rajouter mais c'est vrai que la mise en page des commentaires fait peur... (heureusement que dreamweaver met tout en orange, sinon sa doit etre cosmique pour lire...). Bon c'etait tout pour la partie critique (il en faut bien une ;-)) Sinon au niveau du code, le moins que l'on puisse dire, c'est que tu as des bonnes idees. C'est relativement bien fait (a part de trois trucs mais rien d'important) par contre il y a une  fonction que je ne comprend pas, si tu pouvais m'eclairer...
- define("REFRESH_S", 4*60*60);
REFRESH_S => est-ce une constante deja defini ou tu l'a cree ?? cela represente quoi ??
Ensuite, j'ai decouvert en lisant ton source la fonction exlpode() que tu as utilise et je trouve son utilisation dans ta fonction tres bien vu.
Par contre au niveau de ton fichier, si j'ai ien compris, tu stoques un timestanp et une ip dedans a chaque ligne commencant par un #. Il serait judicieux de prevoir une fonction de "nettoyage" car a la longue, le fichier peut devenir consequent (c'est sur que tu as de la marge mais c'est bien d'y penser quand meme)
Je te met un 7/10 car c'est bien fait mais pas parfait (surtout les commentaires) et te souhaite de continuer sur cette voie !!
@++ tout le monde !

signaler à un administrateur
Commentaire de coucou747 le 10/03/2006 20:27:09

varchar{15) = 15 octets
ipV4 = 4 octets
ipV6 = 6 octets
int = 4 octets
je crois qu'on peut aussi trouver un type d'int sur deux octets, donc, personellement, j'aurais un int long et un short pour ipv6...

signaler à un administrateur
Commentaire de Gulius le 10/03/2006 20:51:52

Bas euh REFRESH_S représente le nombre de seconde avant le quel une IP est comptée comme valide (pas defaut je l'ai réglée à 4h).
Et si une IP a dépassé ce délai, elle est néttoyée ... heureusement .... ;-)

Pour ce qui est des commentaires, j'ai décidé d'en mettre beaucoup, pour éclairer le maximum l'utilisateur ... donc forcément, ça peut géner pour la lecture.

Menfin, merci pour ton commentaire

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

compteur de visite unique [ par spaa05 ] bonjourcomment je peux faire un compteur de visite unique sans base de donnes Compteur de visite [ par cyberastuces ] Bonjour a tousj'ai un petit probleme avec l'un de mes compteur de visiteur, en effet lorsqu'il y a moin de 100 IP dans la base de donnée celui ci comp livecounter (compteur de visite) [ par gege1024 ] voila, je ne connais pas trop le php (je fais plutot du c++) mais j'ai fais&nbsp;un programme c++ o&#249; j'ai incorpor&#233; du code javascript pour un code plusieur compteur sur une table [ par MADESIGNER ] Bonjour je suis entrain de créer un site) des inscrits.  Je voudrai qu ils aient un compt faire un bon compteur [ par blinix123 ] Bonjour à tous,J'aimerais placer un compteur de visite sur mon site, et j'aimerais connaitre votre avis sur LE COMPTEUR -qu'est-ce qu'un bon compteur, Compteur de visite [ par caramelle974 ] Salut,J'aurai besoin d'un coup de pouce.. Je dois réaliser une page en PHP qui affiche le nombre de visites.Mais lors de la réécriture ca ne fonctionn compteur de visite [ par Joanie22 ] Bonjour, J'essaie de créer un compteur de visites mais j'ai quelques difficultés.Voici le code que j'ai mis :&lt;?php $fp = fopen("compteur.txt","r+ compteur rock...config ? [ par pointup ] Bonjour les pros,J'essaie d'installer sur mon site hébergé chez free le script php du compteur de visite + connecté de rock . Vous le connaissez...il Compteur "qui est en ligne" [ par sebmayer ] Bonjour ! Voila j'ai un probl&#232;me avec mon "Qui est en ligne" Celui ci compte les adresses ip diff&#233;rentes, mais le probl&#232;me c'est que


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,109 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.