Page 1 sur 1

compteur live bloqué sur 1 visiteur

Posté : 26 sept. 2005, 10:28
par Invité
bonjours a tous je comprend pas mon compteur reste bloqué sur 1 visiteur le code n'est pas a moi,ensuite je fais un include sur toute mes pages.merci d'avance
$compteur_live = file("../../compteur-live/compteur-live.txt");
// -----------------------------------------------------------------------------------
// On détermine quels sont les visiteurs à éliminer
// (ceux dont la dernière connexion date de plus de 5 minutes).
$premiere_ligne_a_garder=-1; // valeur virtuelle. Sera 0 au 1er passage dans la boucle...
do { // On boucle jusqu'à trouver le premier visiteur à ne pas eliminer, ou la fin de fichier.

$premiere_ligne_a_garder=$premiere_ligne_a_garder+2; // visiteur suivant

} while((date('U', strtotime('-300 seconds')) > $compteur_live[$premiere_ligne_a_garder]) && ($premiere_ligne_a_garder < count($compteur_live)));
// 300 secondes = 5 minutes. Cette durée est modifiable.
// -----------------------------------------------------------------------------------
// On lit l'adresse IP du visiteur qui est en train de charger une page
if(isset($_SERVER["REMOTE_ADDR"])) { // Si on peut déterminer l'adresse IP

$ip_en_cours = $_SERVER["REMOTE_ADDR"];

}
else { // sinon

$ip_en_cours = "Non identifiable";

}
// -----------------------------------------------------------------------------------
// on reconstitue le futur contenu du fichier dans la variable $compteur
$compteur = "";
if($premiere_ligne_a_garder < count($compteur_live)) { // des visiteurs à ne pas éliminer?

// Pour tous les visiteurs inscrits dans le fichier à ne pas éliminer...
for($i=$premiere_ligne_a_garder; $i<count($compteur_live); $i=$i+2) {

// Garder ce visiteur, sauf si c'est celui qui est en train de recharger
// une page (ceci afin déviter les doublons).
if(trim($compteur_live[$i+1]) != $ip_en_cours) {

$compteur .= trim($compteur_live[$i])."\n".trim($compteur_live[$i+1])."\n";

}

}

}
// -----------------------------------------------------------------------------------
// Enfin on ajoute le visiteur qui est en train de se connecter
$compteur .= date('U')."\n".$ip_en_cours;
// -----------------------------------------------------------------------------------
// Et on écrit le tout dans le fichier
$pointeur=fopen("../../compteur-live/compteur-live.txt","w");
fputs($pointeur,$compteur);
fclose($pointeur);

Posté : 26 sept. 2005, 10:30
par Invité
j'ai oublié de dire que je suis chez free j'ai vue sur certain forum que sa avait une influence, peut etre.

Posté : 26 sept. 2005, 10:32
par HD
si c'est toi qui teste c'est normal car ton ip compte pour une seule et unique visite quelque soit le nombre de fois où tu ouvre cette page

Posté : 26 sept. 2005, 11:13
par Invité
je pense pas parce que le resultat des visite je les mis sur l'admin donc une page sans include,que le resultat.

Posté : 26 sept. 2005, 11:16
par HD
// Garder ce visiteur, sauf si c'est celui qui est en train de recharger
// une page (ceci afin déviter les doublons).
mais bon, attend que qq1 aie testé ton code pour voir...

Posté : 26 sept. 2005, 12:07
par Invité
il compte mais il se remet pas a zero au bout de cinq minute

Posté : 26 sept. 2005, 22:03
par Cyrano
Un script PHP n'est pas autonome : pour être exécuté, il faut que la page qui le contient soit appelée par un internaute.

Posté : 26 sept. 2005, 22:10
par DocType
petit script à moi:

table en bdd (requete sql)

Code : Tout sélectionner

CREATE TABLE `connections_on` ( `ip` text collate latin1_general_ci NOT NULL, `temps` bigint(20) unsigned NOT NULL default '0' )
nbre_visiteur.php
<?
if (defined("MON_SITE"))	{
	/* Nbre connectés */
	$date_connect = date("U");
	$delai_time = $date_connect - 600;
	mysql_query("DELETE FROM connections_on WHERE temps<".$delai_time);
	$result_connect = mysql_query("SELECT ip FROM connections_on WHERE ip='".$_SERVER['REMOTE_ADDR']."'");
	if ($result_connect != FALSE)	{
		if (mysql_num_rows($result_connect) != 0)	{
			mysql_query("UPDATE connections_on SET temps=".$date_connect." WHERE ip='".$_SERVER['REMOTE_ADDR']."'");
		}	else	{
			mysql_query("INSERT INTO connections_on (ip,temps) VALUES ('".$_SERVER['REMOTE_ADDR']."','".$date_connect."')");
		}
		$result_connect = mysql_query("SELECT ip FROM connections_on");
		if ($result_connect != FALSE)	{
			if (mysql_num_rows($result_connect) == 1)	{
				$connect_live = "1 connecté";
			}	else	{
				$connect_live = mysql_num_rows($result_connect)." connectés";
			}
		}	else	{
			$connect_live = "<font color='#FF0000'>erreur</font>";
		}
	}	else	{
		$connect_live = "<font color='#FF0000'>erreur</font>";
	}
	/* Fin nbre connectés */
}	else	{
	header('Location: index.php');
}
?>
Ajouter à la page index et à toutes les pages où l'on doit compter le nbre de visiteurs
define("MON_SITE",TRUE);
include('nbre_visiteurs.php');
Le nombre de visiteurs sera la variable $connect_live