compteur live bloqué sur 1 visiteur

Invité
Invité n'ayant pas de compte PHPfrance

26 sept. 2005, 10:28

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);

Invité
Invité n'ayant pas de compte PHPfrance

26 sept. 2005, 10:30

j'ai oublié de dire que je suis chez free j'ai vue sur certain forum que sa avait une influence, peut etre.

HD
Mammouth du PHP | 1181 Messages

26 sept. 2005, 10:32

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
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Invité
Invité n'ayant pas de compte PHPfrance

26 sept. 2005, 11:13

je pense pas parce que le resultat des visite je les mis sur l'admin donc une page sans include,que le resultat.

HD
Mammouth du PHP | 1181 Messages

26 sept. 2005, 11:16

// 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...
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Invité
Invité n'ayant pas de compte PHPfrance

26 sept. 2005, 12:07

il compte mais il se remet pas a zero au bout de cinq minute

Mammouth du PHP | 19672 Messages

26 sept. 2005, 22:03

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1776 Messages

26 sept. 2005, 22:10

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