Compteur simple mais efficace

Soyez le premier à donner votre avis sur cette source.

Vue 9 687 fois - Téléchargée 825 fois

Description

Ce script est très simple,il s'agit d'un compteur en php.
Le script utilise 2 tables (1 pour le compteur et 1 pour les visiteurs).
Il est aussi "intelligent", il vérifie si le visiteur est déjà passé il y a 1h ou moins.
Si ça fait plus d'1 heure qu'il n'a pas changé d epage ou n'est pas revenu, ça incrémente le compteur, sinon il ne bouge pas .
A la fin, il y a l'affichage du compteur.

L'archive comprend le fichier compteur.php; install_compteur.php (à uploader, lancer dans votre explorateur puis à déléter) ainsi que 10 images pour démarrer (libre à vous de les chnager, il suffit de mettre els memes types (ici jpg)

Source / Exemple :


le code du compteur :

<?
include('param.php'); // paramètres de connection à la BDD
  $db = mysql_connect("$host", "$nom", "$password") or die("connection impossible");
  mysql_select_db($bd, $db) or die("erreur bdd");
  
$current_date = strftime("%Y-%m-%d %H:%M:%S");  // date actuelle
$date_limit = time()-3600;   // date max de la validation de l'ip (1h)

/* définition de l'affichage du compteur */
$nb = mysql_fetch_array(mysql_query("SELECT * FROM compteur"), MYSQL_BOTH);
$cent_mil = $nb[6];
$dix_mil = $nb[5];
$mil = $nb[4];
$cent = $nb[3];
$dix = $nb[2];
$u = $nb[1];
/* fin de l'affichage */

/* définition du visiteur */

$ip = $REMOTE_ADDR;
$visiteur = mysql_query("SELECT * FROM compt_visiteurs WHERE ip='$ip'");
$exist = mysql_numrows($visiteur);
if($exist != 0) // le visiteur est déjà venu
  {
   $visit = mysql_fetch_array(mysql_query("SELECT * FROM compt_visiteurs WHERE ip='$ip'"));
   $d = explode(" ", $visit['date']);
   $y = explode("-", $d[0]);
   $h = explode(":", $d[1]);

   $date = mktime($h[0], $h[1], $h[2], $y[1], $y[2], $y[0]);

   if($date < $date_limit)   //  si la date du passage du visiteur est plus vieille que la date limite de visite pour incrémenter le compteur
     {
      $u = $u + 1;
     }
   mysql_query("UPDATE compt_visiteurs SET date='$current_date' WHERE ip='$ip'");
  }
else
  {
   mysql_query("INSERT INTO compt_visiteurs VALUES('','$ip','$current_date')");
   $u = $u + 1;
  }
  
/* fin du visiteur */

if($u == '10')
  {
   $u = '0';
   $dix = $dix + 1;
   if($dix == '10')
     {
      $dix = '0';
      $cent = $cent + 1;
      if($cent == '10')
	{
	 $cent = '0';
	 $mil = $mil + 1;
	 if($mil == '10')
	   {
	    $mil = '0';
	    $dix_mil = $dix_mil + 1;
	    if($cent_mil == '10')
	      {
	       $cent_mil = '9';
	       $dix_mil = '9';
	       $mil = '9';
	       $cent = '9';
	       $dix = '9';
	       $u = '9';
	      }
	   }
	}
     }
  }
mysql_query("UPDATE compteur SET unite='$u', dizaine='$dix', centaine='$cent', millier='$mil', dix_millier='$dix_mil', cent_millier='$cent_mil' WHERE id='1'");
$img_u = "<img src='compt_images/".$u.".jpg'>";
$img_dix = "<img src='compt_images/".$dix.".jpg'>";
$img_cent = "<img src='compt_images/".$cent.".jpg'>";
$img_mil = "<img src='compt_images/".$mil.".jpg'>";
$img_dix_mil = "<img src='compt_images/".$dix_mil.".jpg'>";
$img_cent_mil = "<img src='compt_images/".$cent_mil.".jpg'>";
$compteur = array($img_cent_mil, $img_dix_mil, $img_mil, $img_cent, $img_dix, $img_u);
$cpt = implode("", $compteur);
echo "$cpt";

?>

Conclusion :


C'ets ma première source, et aussi mon premier compteur, mais je le toruve plutôt bien alors je vous le prete :p

Pour l'installation, il vous faut, soit un fichier param.php comprenant ce code :
<?
$host = 'nom_de_l_hote';
$nom = 'login_de_connexion_a_la_base';
$password = 'pass_de_connexion_a_la_base';
$bd = 'nom_de_la_base';
?>
ou alors vous ouvrez le fichier install_compteur.php et changez les paramètres de connexion à la base de données avec vos propres paramètres.
$host vous mettez le nom de l'hôte de la base
$nom vous mettez le login de connexion à la base
$password vous mettez le mot de passe de connexion
$bd vous mettez le nom de la base de données

Dernière solution, recopiez ce code dans phpmyadmin :

CREATE TABLE compteur ( id tinyint(1) NOT NULL default '1', unite tinyint(1) NOT NULL default '0', dizaine tinyint(1) NOT NULL default '0', centaine tinyint(1) NOT NULL default '0', millier tinyint(1) NOT NULL default '0', dix_millier tinyint(1) NOT NULL default '0', cent_millier tinyint(1) NOT NULL default '0' ) TYPE=MyISAM
INSERT INTO `compteur` (`id`,`unite`, `dizaine`, `centaine`, `millier`, `dix_millier`, `cent_millier`) VALUES ('1','0', '0', '0', '0', '0', '0')

enjoy ;)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
133
Date d'inscription
vendredi 17 novembre 2000
Statut
Membre
Dernière intervention
29 avril 2008

Salut Spiritraid,
je trouve ton code intéressant et je voudrais le mettre sur mon site.
J'ai donc fait :



Creation du site : Pierre Capdessus | Directeur de la section Montagne : Serge Capdessus

<script language="javascript" src="compteur.php?affich=1">
<?


if(!file_exists("compteur.txt")){
$fp=fopen("compteur.txt","w");
fputs($fp,"1");
fclose($fp);
}
if(!is_dir("compteur")){
mkdir("compteur",0777);
$fp=fopen("compteur/.htaccess","w");
fputs($fp,"deny from all");
fclose($fp);
}

if(!$HTTP_X_FORWARDED_FOR) $ip = $REMOTE_ADDR;
else $ip = $HTTP_X_FORWARDED_FOR;

$dir=opendir("compteur");
while($file=readdir($dir)){
if($file!="index.php" && $file!="." && $file!=".." && $file!=".htaccess"){
$temps=file("compteur/$file");
$temps=trim($temps[0]);
if(time()>($temps+(60*60*24))){
@unlink("compteur/$file");
}
}
}


$n=file("compteur.txt");
$n=trim($n[0]);

if(!file_exists("compteur/$ip")){
$n++;
$fp=fopen("compteur.txt","w");
fputs($fp,$n);
fclose($fp);
$fp=fopen("compteur/$ip","w");
fputs($fp,time());
fclose($fp);
}

if($affich) echo "document.write("$n");";

?>

</script>








Le code css de "pied de page" est :
#pied_de_page
{
color:white;
/*text-size:20px;*/
background-color:black;
}

Or quand sur la page rien ne s'affiche. Mais il y a bien un fichier compteur.txt crée et le nombre écrit dedans semble être incrémenté.

D'où viens le problème si quelqu'un sait ?
Messages postés
20
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
11 mai 2004

si tu relisais aussi tu verrais qu'il veut pas apprendre :D
Messages postés
32
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
29 juillet 2004

Déja pour commencer c pa Igrenon mais lgrenon après quand on veut apprendre quelque chose on peut très bien se débrouiller soit même, il y a des moteurs de recherche sur le net dont google fait parti.
Après si je suis dur c'est peut-être le cas mais c'est parce que sur le chat on retrouve toujours ces mêmes questions alors qu'en prenant la peine de chercher soit même tout simplement on trouve la réponse, je sais que c'est plus facile de demander aux autres mais bon ce n'est pas comme cela que l'on progresse ...
Messages postés
2
Date d'inscription
lundi 24 novembre 2003
Statut
Membre
Dernière intervention
30 août 2004

Là, je trouve Igrenon dur.Il y 10 ans il aimerait apprendre, c'est le but du site non? et tu le traites comme le dernier des idiots. Moi je trouve ça bien(d'essayer de comprendre) Si tu sais tout, tu serais capable d'expliquer de façon qu'il comprenne.
Messages postés
32
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
29 juillet 2004

Si sa ne t'intéresse pas et que tu ne veut pas que l'on te fasse chier nous fait pas chier avec tes questions à 2 balles.
Après pour la petite anecdote sache que l'on ne passe pas tous nos journées sur PC en ce qui me concerne j'ai le bac dans une semaine alors...
Pour le troisième points ta 10 ans et tu n'as pas que sa à faire? mdr on dirais que t'es débordé à ton âge malheureux.
Afficher les 19 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.