compteur pr site

compteur pr site - PHP - Programmation

Marsh Posté le 01-06-2006 à 18:06:32    

bonjour,
 
j'aimerais savoir comment intégrer un compteur de visites pour mon site web s'il vous plait?

Reply

Marsh Posté le 01-06-2006 à 18:06:32   

Reply

Marsh Posté le 01-06-2006 à 18:49:19    

voila c tt simple c écrit la ;)
http://www.compteur.com/aide.php3
Bonne chance et bonne lecture.

Reply

Marsh Posté le 02-06-2006 à 09:40:22    

merci mais moi je voudrais le code pour qu'il se génére lui-meme et pas en lien avec un site externe.
????

Reply

Marsh Posté le 02-06-2006 à 09:42:21    

Voilà une solution proposée par M@téo pour compter le nombre de visiteurs connectés :  
http://www.siteduzero.com/tuto-3-1 [...] ectes.html
 
Et voila une solution pour compter le nombre de visiteurs :
http://www.siteduzero.com/tuto-3-5 [...] mysql.html
 
@+++

Message cité 1 fois
Message édité par Glock21 le 02-06-2006 à 09:47:27

---------------
Je donne souvent l'air d'être ailleurs, mais en faite, je ne suis nulle part...
Reply

Marsh Posté le 02-06-2006 à 10:17:19    

tu utilises une détection d'IP et tu as donc une incrémentation d'un visiteur/jour/Ip

Reply

Marsh Posté le 02-06-2006 à 10:32:48    

Citation :

Le cookie sert à vérifier si le visiteur a déjà été compté il y a moins de x minutes. On va profiter d'une propriété du cookie : sa date d'expiration. Autrement dit, au bout d'un certain temps (que vous fixez) le cookie est effacé automatiquement et la visite de la page est considérée comme nouvelle. C'est l'astuce de ce compteur

Sur les second lien. ;)


---------------
Je donne souvent l'air d'être ailleurs, mais en faite, je ne suis nulle part...
Reply

Marsh Posté le 02-06-2006 à 10:38:43    

pffff mdr l'utilisation des cookies, ya plus simple qd meme avec du php

Reply

Marsh Posté le 02-06-2006 à 10:41:29    

Sans doute, mais je me souvenais avoir vu ça quelque part, j'ai donc donné le lien qui me semblais bon. Si il y a plus simple, n'hésite pas a l'aider ! ;)


---------------
Je donne souvent l'air d'être ailleurs, mais en faite, je ne suis nulle part...
Reply

Marsh Posté le 02-06-2006 à 10:53:05    

J'ai pas trop le temps pour me perdre en explications alors voici mes sources ;) à lui de les interpréter.
Bien sur il s'agit là d'un délais d'un jour, nan d'une durée entre deux incrémentations réglable mais c'est tout à fait possible en faisant une table avec un DATETIME et comparer l'heure actuelle... à méditer
 

Code :
  1. <?PHP
  2. class compteur
  3. {
  4.   var $langue;
  5.   var $ip;
  6.   function compteur($langue)
  7.   {
  8.     $this->langue = $langue;
  9.     $this->setIp();
  10.     $this->present();
  11.   }
  12.  
  13.   function setIp()
  14.   {
  15.     if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
  16.     {
  17.       $this->ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  18.     }
  19.     elseif(isset($_SERVER['HTTP_CLIENT_IP']))
  20.     {
  21.       $this->ip = $_SERVER['HTTP_CLIENT_IP'];
  22.     }
  23.     else
  24.     {
  25.       $this->ip = $_SERVER['REMOTE_ADDR'];
  26.     }
  27.   }
  28.  
  29.   function present()
  30.   {
  31.     $requete = "SELECT * FROM SDL_Ip WHERE Ip='".$this->ip."' AND Jour='".date("Y-m-d" )."'";
  32.     $resultat = mysql_query($requete) or die('Erreur SQL !<br>Requete : '.$requete.'<br>'.mysql_error());
  33.     if ($ligne = mysql_fetch_assoc($resultat)) $this->update($ligne["Fois"]);
  34.     else $this->ajouter();
  35.   }
  36.   function update($intensite)
  37.   {
  38.     $intensite++;
  39.     $requete = "UPDATE SDL_Ip SET Fois=".$intensite." WHERE Ip='".$this->ip."' AND Jour='".date("Y-m-d" )."'";
  40.     $appliquer = mysql_query($requete) or die('Erreur SQL !<br>Requete : '.$requete.'<br>'.mysql_error());
  41.    
  42.     if (session_is_registered('SDL'))
  43.     {
  44.       $idsession = session_id();
  45.       echo "#".$idsession."#";
  46.       $requeteM = "SELECT * FROM SDL_Membres WHERE Session='$idsession'";
  47.       $resultatM = mysql_query($requeteM) or die('Erreur SQL !<br>Requete : '.$requeteM.'<br>'.mysql_error());
  48.       $ligneM = mysql_fetch_assoc($resultatM);
  49.       $idMembre = $ligneM['IdMembre'];
  50.       $requeteI = "UPDATE SDL_Ip SET IdMembre=".$idMembre." WHERE Ip='".$this->ip."' AND Jour='".date("Y-m-d" )."'";
  51.       $appliquerI = mysql_query($requeteI) or die('Erreur SQL !<br>Requete : '.$requeteI.'<br>'.mysql_error());
  52.     }
  53.   }
  54.   function ajouter()
  55.   {
  56.     if (session_is_registered('SDL'))
  57.     {
  58.       $idsession = session_id();
  59.       $requeteM = "SELECT * FROM SDL_Membres WHERE Session='$idsession'";
  60.       $resultatM = mysql_query($requeteM) or die('Erreur SQL !<br>Requete : '.$requeteM.'<br>'.mysql_error());
  61.       $ligneM = mysql_fetch_assoc($resultatM);
  62.       $idMembre = $ligneM['IdMembre'];
  63.     }
  64.     else $idMembre = 0;
  65.     $requeteI = "INSERT INTO SDL_Ip (IdIp,Ip,IdMembre,Jour,Fois) VALUES ('','$this->ip','$idMembre','".date("Y-m-d" )."','0')";
  66.     $appliquerI = mysql_query ($requeteI) or die('Erreur SQL !<br>Requete : '.$requeteI.'<br>'.mysql_error());
  67.   }
  68.   function printCompteur()
  69.   {
  70.     $requete = mysql_query('SELECT IdIp FROM SDL_Ip');
  71.     $resultat = mysql_numrows($requete);
  72.     echo"
  73.                 <p style='font-size:13px;'>Nombre de visiteurs : ".$resultat."</p>";
  74.   }
  75. }
  76. ?>

Message cité 1 fois
Message édité par aipsy0783 le 02-06-2006 à 10:54:48
Reply

Marsh Posté le 02-06-2006 à 11:02:59    

aipsy0783 a écrit :

J'ai pas trop le temps pour me perdre en explications alors voici mes sources ;) à lui de les interpréter.
Bien sur il s'agit là d'un délais d'un jour, nan d'une durée entre deux incrémentations réglable mais c'est tout à fait possible en faisant une table avec un DATETIME et comparer l'heure actuelle... à méditer
 

Code :
  1. <?PHP
  2. class compteur
  3. {
  4.   var $langue;
  5.   var $ip;
  6.   function compteur($langue)
  7.   {
  8.     $this->langue = $langue;
  9.     $this->setIp();
  10.     $this->present();
  11.   }
  12.  
  13.   function setIp()
  14.   {
  15.     if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
  16.     {
  17.       $this->ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  18.     }
  19.     elseif(isset($_SERVER['HTTP_CLIENT_IP']))
  20.     {
  21.       $this->ip = $_SERVER['HTTP_CLIENT_IP'];
  22.     }
  23.     else
  24.     {
  25.       $this->ip = $_SERVER['REMOTE_ADDR'];
  26.     }
  27.   }
  28.  
  29.   function present()
  30.   {
  31.     $requete = "SELECT * FROM SDL_Ip WHERE Ip='".$this->ip."' AND Jour='".date("Y-m-d" )."'";
  32.     $resultat = mysql_query($requete) or die('Erreur SQL !<br>Requete : '.$requete.'<br>'.mysql_error());
  33.     if ($ligne = mysql_fetch_assoc($resultat)) $this->update($ligne["Fois"]);
  34.     else $this->ajouter();
  35.   }
  36.   function update($intensite)
  37.   {
  38.     $intensite++;
  39.     $requete = "UPDATE SDL_Ip SET Fois=".$intensite." WHERE Ip='".$this->ip."' AND Jour='".date("Y-m-d" )."'";
  40.     $appliquer = mysql_query($requete) or die('Erreur SQL !<br>Requete : '.$requete.'<br>'.mysql_error());
  41.    
  42.     if (session_is_registered('SDL'))
  43.     {
  44.       $idsession = session_id();
  45.       echo "#".$idsession."#";
  46.       $requeteM = "SELECT * FROM SDL_Membres WHERE Session='$idsession'";
  47.       $resultatM = mysql_query($requeteM) or die('Erreur SQL !<br>Requete : '.$requeteM.'<br>'.mysql_error());
  48.       $ligneM = mysql_fetch_assoc($resultatM);
  49.       $idMembre = $ligneM['IdMembre'];
  50.       $requeteI = "UPDATE SDL_Ip SET IdMembre=".$idMembre." WHERE Ip='".$this->ip."' AND Jour='".date("Y-m-d" )."'";
  51.       $appliquerI = mysql_query($requeteI) or die('Erreur SQL !<br>Requete : '.$requeteI.'<br>'.mysql_error());
  52.     }
  53.   }
  54.   function ajouter()
  55.   {
  56.     if (session_is_registered('SDL'))
  57.     {
  58.       $idsession = session_id();
  59.       $requeteM = "SELECT * FROM SDL_Membres WHERE Session='$idsession'";
  60.       $resultatM = mysql_query($requeteM) or die('Erreur SQL !<br>Requete : '.$requeteM.'<br>'.mysql_error());
  61.       $ligneM = mysql_fetch_assoc($resultatM);
  62.       $idMembre = $ligneM['IdMembre'];
  63.     }
  64.     else $idMembre = 0;
  65.     $requeteI = "INSERT INTO SDL_Ip (IdIp,Ip,IdMembre,Jour,Fois) VALUES ('','$this->ip','$idMembre','".date("Y-m-d" )."','0')";
  66.     $appliquerI = mysql_query ($requeteI) or die('Erreur SQL !<br>Requete : '.$requeteI.'<br>'.mysql_error());
  67.   }
  68.   function printCompteur()
  69.   {
  70.     $requete = mysql_query('SELECT IdIp FROM SDL_Ip');
  71.     $resultat = mysql_numrows($requete);
  72.     echo"
  73.                 <p style='font-size:13px;'>Nombre de visiteurs : ".$resultat."</p>";
  74.   }
  75. }
  76. ?>



 
Utiliser une BDD pour un vulgaire compteur ?  :o  
 
Un simple fichier texte suffit amplement genre :
 
[visite][ip]127.0.0.1[/ip][referer]http://www.google.fr[/referer][timestamp]1226456456645[/timestamp][/visite]

Reply

Marsh Posté le 02-06-2006 à 11:02:59   

Reply

Marsh Posté le 02-06-2006 à 11:12:55    

Hermes le Messager a écrit :

Utiliser une BDD pour un vulgaire compteur ?  :o  
 
Un simple fichier texte suffit amplement genre :
 
[visite][ip]127.0.0.1[/ip][referer]http://www.google.fr[/referer][timestamp]1226456456645[/timestamp][/visite]


Surtout que le code plus haut sans la structure des tables, c'est a peu près aussi utile qu'une palourde séchée [:spamafote]

Reply

Marsh Posté le 02-06-2006 à 11:17:18    

ton fichier texte lool ma base prende en compte le nombre de rechargement des pages pour voir si les visiteurs font que passer ou s'intéressent au site
 
un fichier texte lool arrete de faire ton caké

Reply

Marsh Posté le 02-06-2006 à 11:17:36    

Citation :

Surtout que le code plus haut sans la structure des tables, c'est a peu près aussi utile qu'une palourde séchée [:spamafote]


lol ! J'ajouterai que l'utilisation d'un cookie n'est pas hyper complexe, et qu'elle permet une meilleur gestion...


Message édité par Glock21 le 02-06-2006 à 11:18:35

---------------
Je donne souvent l'air d'être ailleurs, mais en faite, je ne suis nulle part...
Reply

Marsh Posté le 02-06-2006 à 11:18:53    

ouais fo just que tu les balance dans le header

Reply

Marsh Posté le 02-06-2006 à 11:21:37    


 
En suivant ce ptit tuto, c'est vraiment hyper simple. :)  
 


---------------
Je donne souvent l'air d'être ailleurs, mais en faite, je ne suis nulle part...
Reply

Marsh Posté le 02-06-2006 à 12:26:34    

aipsy0783 a écrit :

ton fichier texte lool ma base prende en compte le nombre de rechargement des pages pour voir si les visiteurs font que passer ou s'intéressent au site
un fichier texte lool arrete de faire ton caké


C'est pas parce que je fais 25 fois "reload" que je suis interessé par ta collection de gallets-peints [:spamafote]
Les logs d'apache sont dans un fichier texte, pas dans une base de donnée. Penses-tu que ton système soit meilleur que celui d'apache(puisqu'il utilise un fichier texte)?
 

aipsy0783 a écrit :

ouais fo just que tu les balance dans le header


avec des 'fo juste' on peut faire n'importe quoi :o
 
Par ailleurs merci d'essayer d'écrire un français semi-correct ( j'en demande pas plus), parce que là c'est limite.
J'en profite pour te rappeler les règles du forum avant que tu me sorts un "STFU, kikoo asv lol, tsépa parlais":

Citation :


[11] Les sujets et contenus des messages doivent être francisés dans la mesure du possible.
 
    * L'anglais est la langue commune de l'informatique, mais on peut tout exprimer en français, et aussi bien. N'hésitez pas à demander des traductions sur des termes si vous en éprouvez le besoin.  
 
 
[12] Rédigez vos messages de manière lisible.
 
    * Dans l'intérêt de tous, il est fortement conseillé de rédiger son post de manière claire, et d'éviter le style SMS suivant : « jé un pb : jariv po a lansé mon log il me sort une ereur ke je pige pas. un coupe de main pliz thx ».
    * C'est pas pour faire plaisir à Maitre Capello, mais uniquement pour obtenir un maximum de réponses. Voyant un message rédigé comme ça, pas mal de gens n'ont pas du tout envie de le lire et encore moins d'y répondre. Donc si vous voulez obtenir des réponses, faites un minimum d'efforts pour rédiger votre demande.
    * De plus, faire une recherche sur ce genre de topic est quasiment impossible : comment deviner qu'il faut entrer de l'esperanto dans la zone de recherche pour trouver ce topic qu'on cherche depuis tant de temps ?
    * Tout topic rédigé dans ce style sera dans un premier temps fermé, et s'il souhaite le reposter, le posteur devra réécrire correctement son topic. Le topic précédent sera alors supprimé pour éviter le double emploi. Si la deuxième formulation est aussi incompréhensible que la première, un séjour chez les télétubbies permettra au dit posteur de bucher son précis d'orthographe.
    * Il ne s'agit pas d'écrire un prix Pullitzer, mais uniquement d'adopter un style de rédaction clair afin que tout le monde ait envie de lire le topic et éventuellement d'y répondre.


Reply

Marsh Posté le 02-06-2006 à 12:30:20    

Bonjour monsieur, dans un langage non franchisé je vais simplement te dire que des lamas comme toi il en existe des tas sur ce genre de forums. Si tu as besoin de reconnaissance trouve un autre moyen.

Reply

Marsh Posté le 02-06-2006 à 12:31:56    

Le gars qui refait le monde avec des fichiers .txt sans prendre en compte les accès multiples, ce que les databases font avec des rollbacks et commit, qui se la pète, on en a pas besoin ici.

Reply

Marsh Posté le 02-06-2006 à 12:47:19    

Citation :

Remeber the message, brother : Peace & Love...
 
Max Romeo

:ange:


---------------
Je donne souvent l'air d'être ailleurs, mais en faite, je ne suis nulle part...
Reply

Marsh Posté le 02-06-2006 à 12:48:50    

lool I'm a sister, this message is not for me  :sol:


Message édité par aipsy0783 le 02-06-2006 à 12:49:07
Reply

Marsh Posté le 02-06-2006 à 12:53:23    

:D


---------------
Je donne souvent l'air d'être ailleurs, mais en faite, je ne suis nulle part...
Reply

Marsh Posté le 02-06-2006 à 13:03:08    

aipsy0783 a écrit :

Le gars qui refait le monde avec des fichiers .txt sans prendre en compte les accès multiples, ce que les databases font avec des rollbacks et commit, qui se la pète, on en a pas besoin ici.


 
Non mais t'as pas un peu l'impression que c'est de la branlette l'accès concurrent pour le site d'une personne qui visiblement sait à peine coder ? Sans compter le fait que si t'as de réels et significatifs problèmes de concurrences sur un compteur de visite, je doute que la lourdeur de ton tas de requète fasse beaucoup de bien au serveur.
Enfin j'aimerais bien voir ou ils sont tes rollbacks/commits dans ton code ... Il se passe quoi s'il y a 2 appels à present() venant de la même IP suffisement proche pour que la requète du second soit exécutée avant que le 1er appel ajouter() ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 02-06-2006 à 13:21:32    

aipsy0783 a écrit :

ton fichier texte lool ma base prende en compte le nombre de rechargement des pages pour voir si les visiteurs font que passer ou s'intéressent au site
 
un fichier texte lool arrete de faire ton caké


 
Ben oui, un fichier texte et une regexp POSIX. c'est nettement moins lourd que d'utiliser une base SQL.  
 
Ensuite, sur le principe, sache que j'ai quand même pondu un CMS qui repose entièrement sur des fichiers textes.
 
Les avantages :
 
- plus secure (ben oui, les mecs qui s'amusent avec des injections SQL peuvent s'amuser longtemps).
- Plus portable (ben oui, RAB de la présence d'une BDD sur un hébergement, ni de son num de version).
- Plus facilement importable/exportable (moi quand je sauve un de mes sites, je sauve tout en même temps).
 
Les BDD c'est bien pour :  
 
- Des forums.
- Des applications avec par exemple liste de produits, prix etc...
 
Les 9/10° du temps, l'emploi d'une BDD usine à gaz comme mySQL est complêtement injustifiée.

Reply

Marsh Posté le 02-06-2006 à 13:48:29    

aipsy0783 a écrit :

Bonjour monsieur, dans un langage non franchisé je vais simplement te dire que des lamas comme toi il en existe des tas sur ce genre de forums. Si tu as besoin de reconnaissance trouve un autre moyen.


 :love:  

aipsy0783 a écrit :

Le gars qui refait le monde avec des fichiers .txt sans prendre en compte les accès multiples, ce que les databases font avec des rollbacks et commit, qui se la pète, on en a pas besoin ici.


1- C'est toi qui sort un code "c'est moi qui la fait c'est trop bien" comme la meilleure solution ( code qui en l'état ne peut pas fonctionner vu que tu ne donnes pas la structure de la base utilisée)
2- Tu n'expliques en rien pourquoi TA solution via une base de donnée et mieux qu'un fichier texte ( au contraire d'Hermes par exemple)
Et puis c'est vrai que les "gars" qui posent des questions comme les tiennes c'est des w3bl33t 0veRl0rd:
http://forum.hardware.fr/hardwaref [...] 1514-1.htm
 

Reply

Marsh Posté le 02-06-2006 à 14:12:23    

Reply

Marsh Posté le 02-06-2006 à 14:35:13    

déjà je suis pas un gars, de deux si tu sais pas y répondre t qu'un gland

Reply

Marsh Posté le 02-06-2006 à 14:36:26    

Reply

Marsh Posté le 02-06-2006 à 14:39:09    

aipsy0783 a écrit :

déjà je suis pas un gars, de deux si tu sais pas y répondre t qu'un gland


 
Que tu sois ou non un gars, va falloir un peu calmer ta joie si tu veux rester parmi nous.  :heink:  
 

Reply

Marsh Posté le 02-06-2006 à 14:42:37    

c'est vrai que ça a l'air très intéressant comm forum, je connais plus performant comme communauté

Reply

Marsh Posté le 02-06-2006 à 14:44:13    

Réponds à la question sur ta gestion des rollback :)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 02-06-2006 à 14:46:18    

0x90 a écrit :

Réponds à la question sur ta gestion des rollback :)


 
Ah oui tiens moi aussi ça m'intéresse.  :D  
 
Comme cela le pauvre débutant que je suis pourra enfin arrêter d'utiliser bêtement de ridicules fichiers textes dans ses applications.  :jap:  

Reply

Marsh Posté le 02-06-2006 à 14:55:07    

tiboc59 a écrit :

bonjour,  
   
j'aimerais savoir comment intégrer un compteur de visites pour mon site web s'il vous plait?


Je ne suis pas la depuis longtemps, même pas du tout, mais il me semble interessant de préciser que le pauvre tiboc59 doit avoir un peu les boules d'avoir créé ce topic... Il voulait juste un peu d'aide...[:albator] Et là, ça fini par faire un peu pollué... Mais bon, je suis pas modo, donc si ma remarque vous semble déplacée, j'en suis désolé. :sweat:


---------------
Je donne souvent l'air d'être ailleurs, mais en faite, je ne suis nulle part...
Reply

Marsh Posté le 02-06-2006 à 14:57:47    

aipsy0783 a écrit :

déjà je suis pas un gars, de deux si tu sais pas y répondre t qu'un gland


 :love:  

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed