Compteurs simple/ip/cookies

Soyez le premier à donner votre avis sur cette source.

Vue 14 767 fois - Téléchargée 6 754 fois

Description

Voilà un exemple simple de 3 compteurs de visites ayant des fonctionnements differents, l'installation se fait très simplement, le fonctionnement étant basé sur les fichiers...Il doit surement y avoir des maladresses ou choses inutiles dans mon code...je vous laisse donner votre avis.
Le script crée un fichier pour les visites de la journée et stocke les autres journées dans un autre, il y a donc deux fichiers texte par compteurs.

Source / Exemple :


//compteur IP
<?php
function get_ip(){ 
	if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ 
		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	} else if(isset($_SERVER['HTTP_CLIENT_IP'])){ 
		$ip = $_SERVER['HTTP_CLIENT_IP'];
	} else{ 
		$ip = $_SERVER['REMOTE_ADDR'];
		} 
	return $ip;
}

$ip = get_ip();
$fileip="compteur.txt";
$filebi="compteurtot.txt";

function visittoday(){
	global $fileip, $filebi, $ip;
	$fe=0;
	if(file_exists($fileip)){
		$fe=1;
		}
	$i=0;
	if($fe==1){
	$fp=fopen($fileip,"r") or die("Impossible d'ouvrir ou creer le compteur");
	$datef=intval(fgets($fp));
	if(($datef<(time()))&&(date("d",$datef)!=date("d",time()))){
		$ipconnu=Array();
		while (!feof($fp)) {
	      $ipconnu[$i] = fgets($fp);
		  $i++;
	      }
		$fpb=fopen($filebi,"a+") or die("Impossible de créer/ouvrir le fichier global");
		fputs($fpb,"\n".$datef."|".sizeof($ipconnu));
		fclose($fpb);
		fclose($fp);
		$fp=fopen($fileip,"w");
		fputs($fp,time());
		fputs($fp,"\n".$ip);
		fclose($fp);
		return 1;
		}else{
		$ipconnu=Array();
		while (!feof($fp)) {
	      $ipconnu[$i] = trim(fgets($fp));
		  $i++;
	      }
		fclose($fp);
		$fp=fopen($fileip,"a");
		if(!in_array ($ip, $ipconnu)){
			fputs($fp,"\n".$ip) or die("Impossible d'écrire dans le fichier");
			$ipconnu[$i]=$ip;
			}
			return sizeof($ipconnu);
		}
	}else{
		$fp=fopen($fileip,"w");
		fputs($fp,time());
		fputs($fp,"\n".$ip);
		return 1;
		fclose($fp);
	}
}
function totvisit(){
	global $filebi;
	if(file_exists($filebi)){
	$fp=fopen($filebi,"r");
	}else{
	$fp=fopen($filebi,"w");
	}
	$tot=0;
	while (!feof($fp)) {
		$li=fgets($fp);
	    $lineip = explode("|",$li);
		if(sizeof($lineip)==2){
		$tot+=$lineip[1];
		}
      }
	 fclose($fp);
	 $tot+=visittoday();
	 return $tot;
	}
totvisit();
?>

//compteur Simple
<?php

$fileip="scompteur.txt";
$filebi="scompteurtot.txt";

function visittoday(){
	global $fileip, $filebi, $ip;
	$fe=0;
	if(file_exists($fileip)){
		$fe=1;
		}
	$i=0;
	if($fe==1){
	$fp=fopen($fileip,"r") or die("Impossible d'ouvrir ou creer le compteur");
	$datef=intval(fgets($fp));
	if(($datef<(time()))&&(date("d",$datef)!=date("d",time()))){
		$n = fgets($fp);
		$fpb=fopen($filebi,"a+") or die("Impossible de créer/ouvrir le fichier global");
		fputs($fpb,$datef."|".$n."\n");
		fclose($fpb);
		fclose($fp);
		$fp=fopen($fileip,"w");
		fputs($fp,time());
		fputs($fp,"\n1");
		fclose($fp);
		return 1;
		}else{
		$n=intval(fgets($fp));
		$n++;
		fclose($fp);
		$fp=fopen($fileip,"w");
		fputs($fp,$datef."\n") or die("Impossible d'écrire dans le fichier");
		fputs($fp,$n);
		return $n;
		}
	}else{
		$fp=fopen($fileip,"w");
		fputs($fp,time());
		fputs($fp,"\n1");
		return 1;
		fclose($fp);
	}
}
function totvisit(){
	global $filebi;
	if(file_exists($filebi)){
	$fp=fopen($filebi,"r");
	}else{
	$fp=fopen($filebi,"w");
	}
	$tot=0;
	while (!feof($fp)) {
		$li=fgets($fp);
	    $lineip = explode("|",$li);
		if(sizeof($lineip)==2){
		$tot+=$lineip[1];
		}
      }
	 fclose($fp);
	 $tot+=visittoday();
	 return $tot;
	}
totvisit();
?>

//Compteur cookies
<?php

$fileip="ccompteur.txt";
$filebi="ccompteurtot.txt";

function visittoday(){
	global $fileip, $filebi, $ip;
	$fe=0;
	if(file_exists($fileip)){
		$fe=1;
		}
	$i=0;
	if($fe==1){
	$fp=fopen($fileip,"r") or die("Impossible d'ouvrir ou creer le compteur");
	$datef=intval(fgets($fp));
	if(($datef<(time()))&&(date("d",$datef)!=date("d",time()))){
		$n = fgets($fp);
		$fpb=fopen($filebi,"a+") or die("Impossible de créer/ouvrir le fichier global");
		fputs($fpb,$datef."|".$n."\n");
		fclose($fpb);
		fclose($fp);
		$fp=fopen($fileip,"w");
		fputs($fp,time());
		fputs($fp,"\n1");
		setcookie("visit", "1",mktime(0,0,0,intval(date("d")),intval(date("m")),intval(date("Y")))+24*3600);
		fclose($fp);
		return 1;
		}else{
		$n=intval(fgets($fp));
		if(!isset($_COOKIE['visit'])){
			$n++;
			setcookie("visit", "1",mktime(0,0,0,intval(date("d")),intval(date("m")),intval(date("Y")))+24*3600);
		}	
		fclose($fp);
		$fp=fopen($fileip,"w");
		fputs($fp,$datef."\n") or die("Impossible d'écrire dans le fichier");
		fputs($fp,$n);
		return $n;
		}
	}else{
		$fp=fopen($fileip,"w");
		fputs($fp,time());
		fputs($fp,"\n1");
		setcookie("visit", "1",mktime(0,0,0,intval(date("d")),intval(date("m")),intval(date("Y")))+24*3600);
		return 1;
		fclose($fp);
	}
}
function totvisit(){
	global $filebi;
	if(file_exists($filebi)){
	$fp=fopen($filebi,"r");
	}else{
	$fp=fopen($filebi,"w");
	}
	$tot=0;
	while (!feof($fp)) {
		$li=fgets($fp);
	    $lineip = explode("|",$li);
		if(sizeof($lineip)==2){
		$tot+=$lineip[1];
		}
      }
	 fclose($fp);
	 $tot+=visittoday();
	 return $tot;
	}
totvisit();
?>

//Affichage des stats
<?php
$fip="../compteur.txt";
$ftotip="../compteurtot.txt";
$fs="../scompteur.txt";
$ftots="../scompteurtot.txt";
$fc="../ccompteur.txt";
$ftotc="../ccompteurtot.txt";

function visittoday($type){
	global $fip, $fs, $fc;
	switch($type) {
		case 'ip':
			$fp=fopen($fip,"r") or die("Impossible d'ouvrir le compteur");
			$ipconnu=Array();
			while (!feof($fp)) {
				$ipconnu[$i] = trim(fgets($fp));
				$i++;
			}
			return sizeof($ipconnu)-1;
			fclose($fp);
		break;
		case 's':
			$fp=fopen($fs,"r") or die("Impossible d'ouvrir le compteur");
			$datef=intval(fgets($fp));
			return intval(trim(fgets($fp)));
			fclose($fp);
		break;
		case 'c':
			$fp=fopen($fc,"r") or die("Impossible d'ouvrir le compteur");
			$datef=intval(fgets($fp));
			return intval(trim(fgets($fp)));
			fclose($fp);
		break;
	}
}
function visitjour($type){
	global $ftotip, $ftots, $ftotc;
	switch($type) {
		case 'ip':
			$fp=fopen($ftotip,"r") or die("Impossible d'ouvrir le compteur");
			$tot=0;
			$i=0;
			$lineip=Array();
			while (!feof($fp)) {
				$li=fgets($fp);
				
			    $lineip[$i] = explode("|",$li);
				if(sizeof($lineip[$i])==2){
					$tot+=$lineip[$i][1];
				}
				$i++;
		      }
			for($j=0;$j<$i;$j++){
				if(sizeof($lineip[$j])==2){
				echo date("d-m-Y :",intval($lineip[$j][0]))." ".$lineip[$j][1]." visites <br>";
				}
			}
			$today=visittoday("ip");
			$tot+=$today;
			echo "<b>Aujourd'hui :</b> ".$today." visites ";
			echo "<b>Total :</b> ".$tot;
			fclose($fp);
		break;
		case 's':
			$fp=fopen($ftots,"r") or die("Impossible d'ouvrir le compteur");
			$tot=0;
			$i=0;
			$lineip=Array();
			while (!feof($fp)) {
				$li=fgets($fp);
				
			    $lineip[$i] = explode("|",$li);
				if(sizeof($lineip[$i])==2){
					$tot+=$lineip[$i][1];
				}
				$i++;
		      }
			for($j=0;$j<$i;$j++){
				if(sizeof($lineip[$j])==2){
				echo date("d-m-Y :",intval($lineip[$j][0]))." ".$lineip[$j][1]." visites <br>";
				}
			}
			$today=visittoday("s");
			$tot+=$today;
			echo "<b>Aujourd'hui :</b> ".$today." visites ";
			echo "<b>Total :</b> ".$tot;
			fclose($fp);
		break;
		case 'c':
			$fp=fopen($ftotc,"r") or die("Impossible d'ouvrir le compteur");
			$tot=0;
			$i=0;
			$lineip=Array();
			while (!feof($fp)) {
				$li=fgets($fp);
				
			    $lineip[$i] = explode("|",$li);
				if(sizeof($lineip[$i])==2){
					$tot+=$lineip[$i][1];
				}
				$i++;
		      }
			for($j=0;$j<$i;$j++){
				if(sizeof($lineip[$j])==2){
				echo date("d-m-Y :",intval($lineip[$j][0]))." ".$lineip[$j][1]." visites <br>";
				}
			}
			$today=visittoday("c");
			$tot+=$today;
			echo "<b>Aujourd'hui :</b> ".$today." visites ";
			echo "<b>Total :</b> ".$tot;
			fclose($fp);
		break;
	}
}
echo "<h2>IP :</h2><br>";
visitjour('ip');
echo "<br>";
echo "<h2>Simple :</h2><br>";
visitjour('s');
echo "<br>";
echo "<h2>Cook :</h2><br>";
visitjour('c');
echo "<br>";
?>

Conclusion :


Pour faire fonctionner les compteurs faites simplement un include des fichiers compteur.php (ip) scompteur.php (compteur simple) ccompteur.php (compteur cookie) dans votre code, pour afficher le nombre de gens total passés dessus remplacez le dernier appel totvisit() par echo totvisit();.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
28 mars 2009

Merci à edotheking.
j'ai cherché depuis 2 jours un tel script pour afficher les chiffres sur une page externe. J'ai utilisé uniquement la partie simple est enfin je peux compter...
je ne mets pas 10/10 car une meilleure esthétique pour l'affichagem'aurait aussi fait gagner du temps mais cela ne lui incombe pas trop. Il a fait un bon travaille déjà.
à bientôt. Philippe
Messages postés
12
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
20 avril 2008

Bonjour,

Bon travaille en ensemble, mais il faut dire qu'il ne faut pas utilisé les 3 en meme temps, et mettre le bon chemin des fichier texte dans acompt.php si les script son dans le mem repertoire

$fip="compteur.txt";
$ftotip="compteurtot.txt";
$fs="scompteur.txt";
$ftots="scompteurtot.txt";
$fc="ccompteur.txt";
$ftotc="ccompteurtot.txt";

et merci comme meme.
Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
1
salut !

juste une remarque

$fp=fopen($fileip,"r") or die("Impossible d'ouvrir ou creer le compteur");
...

donc si pour une raison ou une autre tu n'arrive pas à ouvrir ton fichier bah tu arrete l'axecution de ta page ...

$fp=fopen($fileip,"r");
if ( $fp )
{
//...
}

comme ca ta page n'est pas stopper en cas de probleme

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.