COMPTEUR DE VISITE - FICHIER TXT - CODE MINIMAL

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 22 juil. 2011 à 22:03
pierreSabatier Messages postés 27 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 15 octobre 2011 - 11 sept. 2011 à 18:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53389-compteur-de-visite-fichier-txt-code-minimal

pierreSabatier Messages postés 27 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 15 octobre 2011 1
11 sept. 2011 à 18:26
J'ai oublié de donner le lien : http://www.phpcs.com/codes/COMPTEUR-VISITES-SUR-FICHIER_53574.aspx L'étourderie est réparée.
pierreSabatier Messages postés 27 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 15 octobre 2011 1
11 sept. 2011 à 18:24
Bonjour tout le monde, au lieu de maugréer comme vous le faites, j'ai écrit un petit script qui, à la lecture de vos commentaires peu élogieux, vous ravira ou le cas échéant, relancera la discussion sur cette fonctionnalité.
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
29 juil. 2011 à 16:28
phpAnonyme: Desole, je pensais que tu parlais du code.

Pour ce qui est de "faire un controle", ca depend de ce que tu veux mesurer. C'est vrai que "Compteur de visites" est un peu trompeur ici, puisqu'il s'agit plus d'un Compteur de pages vues".
Un cookie permettrait d'obtenir le nombre de visiteurs uniques / une periode de temps (heure/jour/mois/session) en fonction de la duree de vie de celui-ci.

J'avoue que je ne vois pas vraiment ce qu'on peut ajouter de plus mais si tu as un exemple precis en tete je suis curieux de le connaitre :o)
Utilisateur anonyme
29 juil. 2011 à 14:49
Selon un admin, mes remarques ne sont pas constructives. J'attend que le webmaster veuille bien supprimer mon compte (pas trouver l'option adequate dans le menu..). Ce que je disais sur une autre source la semaine dernière, à force de sur-noter des codes "bidons", de "plussoyer" les erreurs de programmation et d'aimer les "gros code moche", on ce retrouve avec des gars qui détectent des pixels mort de façon logiciels..

Mais ce n'est pas très étonnant, étant donné le peux de personne ayant les pieds sur terre ici.
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
29 juil. 2011 à 14:19
LeFauve42 : Rien n'est jamais TROP minimaliste : Si tu peux obtenir le meme resultat de 2 manieres, la plus courte est toujours la meilleure (par meme resultat, j'entend "qui fonctionne dans tous les cas").

Par minimaliste j'entends le problème qu'à soulevé Romano58 :
"Et si j'appuie 5 fois sur f5, il ce passe quoi? C'est sans intêret."
Ca manque de contrôle(vrai contrôle pas un simple cookie).
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
29 juil. 2011 à 14:11
bonjour
@LeFauve42++
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
29 juil. 2011 à 13:32
cod57: Ta version n'est pas tres lisible, et si le fichier n'existe pas elle le cree vide.
Si tu veux vraiment sauver quelques caracteres pour rendre le code illisible, essaie plutot comme ca:

file_put_contents('compteur.txt',$compteur=(file_exists('compteur.txt')?file_get_contents('compteur.txt')+1:1),LOCK_EX);
echo $compteur;

PS: C'est marrant d'ecrire du code comme ca mais je ne peux que vous encourager a ne PAS le faire si vous comptez l'utiliser "en conditions reelles" :o)
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
29 juil. 2011 à 13:24
phpAnonyme: Rien n'est jamais TROP minimaliste : Si tu peux obtenir le meme resultat de 2 manieres, la plus courte est toujours la meilleure (par meme resultat, j'entend "qui fonctionne dans tous les cas").

De plus, il y a beaucoup d'exemples de 2 ou 3 lignes qui sont des horreurs (offrant au choix des trous de securite ou une utilisation de ressources sans communes mesures avec la fonction remplie) et ce n'est pas evident pour un debuttant de faire le tri.

En mettant une bonne note a ces 3 lignes-ci plutot qu'a d'autres, ca permet de aussi d'indiquer qu'il s'agit d'un bout de code qui fait correctement ce qu'on attend de lui sans mauvaise surprise.

Alors d'accord ce n'est pas de la "rocket-science" mais il faut bien commencer un jour :o)
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
28 juil. 2011 à 16:40
en fait 2 lignes (-: (surcharge cpu)
perso j'aime bien ce petit snippet mais je met que 8 parce que c'est un snippet
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
28 juil. 2011 à 16:34
bonjour
d'accord avec toi phpAnonyme un simple javascript de g..... anali..
en fait tu peux gagner une ligne SuperChouquette

<?php
! file_exists('compteur.txt') ? fopen('compteur.txt','w+') : file_put_contents('compteur.txt', $compteur=file_get_contents('compteur.txt')+1, LOCK_EX);
if(isset($compteur)){echo $compteur;}
?>
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
28 juil. 2011 à 04:33
Je suis assez d'accord avec Romano58 sur le fond. C'est trop minimaliste, pour ne pas dire simpliste ! Du coup le niveau débutant est très justifié et encore !

[Mode - opinion perso]
Et puis, de nos jours à par ceux qui ne savent pas où chercher, il existe des tas de solutions gratuites ou payantes qui fournissent des informations de ce type et même beaucoup plus. Je ne dis pas que c'est sans intérêt, mais que c'est universellement accessible par tous(avec des solutions gratuites et éprouvés) pour avoir à s'emmerder à faire ce genre de script sauf si c'est pour le fun ou pour une solution plus poussée/personnalisée côté entreprise.
- opinion perso
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
27 juil. 2011 à 12:59
> Sinon, créer un cookie sur le Navigateur et n'incrémenter que si le cookie n'est pas présent.

C'est ce que je fais : Ca permet d'avoir un compteur genre "Cette page a ete vue xxx fois par yyy personnes differentes"...
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
26 juil. 2011 à 18:31
Bonsoir,

Sinon, créer un cookie sur le Navigateur et n'incrémenter que si le cookie n'est pas présent.
Certes, ce n'est pas parfait, mais ça reste simple.
Utilisateur anonyme
26 juil. 2011 à 16:47
J'en arrive à lire tellement de connerie sur ce site que je viens d'avoir une idée de génie pour un script de folie (et qui prend pas beaucoup de ligne).
Puisqu'on ce fiche de savoir si on en est à centaines de visites en plus ou en moins, vous devriez développer une fonction qui renvoie un nombre aléatoire, dans le genre "Aujourd'hui, vous êtes le 1 000 968 em visiteur sur le site, et XXXXX personnes sont mortes dans le monde depuis hier".

C'est vrai, après tout, puisque on ce fiche de la pertinence des informations à afficher dans la page.

Ou alors proposer un VRAI compteur, c'est pas beaucoup plus compliquer de rajouter les ip qui viennent sur la page dans un fichiers texte, et d'ajouter + 1 au compteur si l'ip n'est pas présente. Au moins, ça changera de l'exemple basique que tu viens mettre ici (et qu'on trouve partout sur le net soit dit en passant), et ça méritera une vrai note.
Utilisateur anonyme
26 juil. 2011 à 16:18
...
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
26 juil. 2011 à 15:52
C'est effectivement un bon exemple, et tres interessant (tout le monde n'a pas envie d'un framework de 2000 lignes de PHP pour faire des petits trucs simples).
"La perfection n'est pas atteinte quand on ne peut plus rien ajouter, mais quand on ne peut plus rien enlever" :o)

J'aurai mis la note max si tu avais mis ca dans une fonction et donne quelques explications sur le deploiement (comme choisir un repertoire dans lequel le serveur peut ecrire (et pas juste donner les droits sur le fichier comme je disais plus haut, car comme le fichier va etre cree par le premier appel du script, les droits seront forcement bons pour celui-ci)) mais FWIW je ne met pas souvent d'aussi bonnes notes ;o)
cs_SuperChouquette Messages postés 37 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 18 mai 2010
26 juil. 2011 à 15:40
http://www.siteduzero.com/tutoriel-3-14577-lire-et-ecrire-dans-un-fichier.html
tu trouves vraiment que ça ressemble ? ils parlent pas de ces deux fonctions file_get_contents() et file_put_contents() et encore moins du locker, ils se croient en C pour les fichiers..
cs_SuperChouquette Messages postés 37 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 18 mai 2010
26 juil. 2011 à 15:25
ce n'est pas tiré du sdz, montre moi la page ou tu as vu ça.. et on t'as dit la solution il suffit de mettre le locker si tu as un site extrêmement fréquenté..
Après ce n'est pas parce que c'est simple que c'est sans intérêt.. Il y'a pleins de codes de compteurs ultra compliqués sur ce site qui ont nettement moins d’intérêts à mes yeux.
Utilisateur anonyme
26 juil. 2011 à 15:19
C'est quasi un copier/coller d'un exo sur php du sdz...

Et si j'appuie 5 fois sur f5, il ce passe quoi? C'est sans intêret.
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
26 juil. 2011 à 13:14
Bien vu !
Je ne connaissais pas cette nouveaute.

Auquel cas, ca reste tres simple.

Par contre, tu devrais donner quelques details sur la mise en oeuvre (comme "penser a changer les droits du fichier .txt pour que le process du serveur HTTP puisse ecrire dedans) et mettre a jour le source avec le LOCK_EX.

Eric
cs_SuperChouquette Messages postés 37 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 18 mai 2010
26 juil. 2011 à 12:28
on est pas obligé de perdre le file_put_contents()
on peut mettre file_put_contents($filename, $compteur, LOCK_EX);
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
25 juil. 2011 à 13:32
Oui, c'est minimaliste, mais je pense que tu as des problemes de re-entrence lorsque plusieurs visiteurs sont sur ta page en meme temps (c'est a dire a quelques ms pres).
Il faudrait utiliser flock() sur ton fichier (et complexifier un peu puisque du coup tu perds file_put_contents()).
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
22 juil. 2011 à 22:03
Bonsoir,

Au vu de la complexité du code, je pense que sa place serait sur Codyx.org.
C'est comme j'ai fais pour mon site, c'est très rudimentaire, mais quand on a pas de BDD, c'est vrai que c'est très utile.
Rejoignez-nous