Compteur simple mais efficace

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

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.