[PHP] problème de compteur [OK]

Bonjour,

je me suis créer grâce à un tuto sur le net un compteur graphique pour mon site …
il marche impécablement sur la page accueuil mais dés que je change de page il m’affiche un msg d’erreur:

d’aprés ce que j’ai compris il n’arrive pas à acceder à mon fichier compteur.txt où est stocké ma valeur du compteur

mon code est le suivant [cpp]<?
$fichier = ‹ compteur.txt ›;
$fp = file($fichier);
$compteur = $fp[0] + 1;

// Connexion à MySQL
mysql_connect(« ", " », « « );
mysql_select_db( »
 »);

// -------
// ETAPE 1 : on vérifie si l’IP se trouve déjà dans la table
// Pour faire ça, on n’a qu’à compter le nombre d’entrées dont le champ « ip » est l’adresse ip du visiteur

$retour = mysql_query(‹ SELECT COUNT(*) AS nbre_entrees FROM compteur WHERE ip=' › . $_SERVER[‹ REMOTE_ADDR ›] . ‹ ' ›);
$donnees = mysql_fetch_array($retour);

if ($donnees[‹ nbre_entrees ›] == 0) // L’ip ne se trouve pas dans la table, on va l’ajouter
{
mysql_query(‹ INSERT INTO compteur VALUES(' › . $_SERVER[‹ REMOTE_ADDR ›] . '', ’ . time() . ‹ ) ›);

// om mets à jour le fichier compteur.txt
$nouveau = fopen($fichier,‹ w+ ›);
fwrite($nouveau,« $compteur \n »);
fclose($nouveau);

}

// -------
// ETAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 24 heures

// On stocke dans une variable le timestamp qu’il était il y a 24 heures :
$timestamp_5min = time() - (3600 * 24); // 3600 * 24 = nombre de secondes écoulées en 24 heures
mysql_query('DELETE FROM compteur WHERE timestamp < ’ . $timestamp_5min);

// Ouf ! On n’a plus qu’à afficher le nombre de connectés !

if ($fp[0] < 100000)
echo (‹  ›);
if ($fp[0] < 10000)
echo (‹  ›);
if ($fp[0] < 100000)
echo (‹  ›);
if ($fp[0] < 1000)
echo (‹  ›);
if ($fp[0] < 100)
echo (‹  ›);
if ($fp[0] < 10)
echo (‹  ›);

$compteur = preg_replace("#([0-9])#s", '<img src="/img/$1.gif" border="1" style="border-color: #FFFFFF;">',$compteur);
echo "$compteur";

mysql_close(); // Déconnexion de MySQL
?>[/cpp]

Merci de votre aide …

Ca depend ou tu as mis ton fichier compteur , il faut joué avec les …/ , chaque …/ fait un présédent
[fixed]Compteur.txt
Dossier 1
Scriptcompteur.php => Il faut utilise …/compteur.txt
Dossier 2
Scriptcompteur.php => Il faut utilise …/…/compteur.txt
[/fixed]

Je sais pas si tu vois .

oui je vois … mais en fait il faudré que je mette le script dans chacun de mes dossiers ?

en fait là il se trouve à la racine et il est présent sur chaque page grace au " include " pour mes menus…

donc ce n’est pas possible de modifier le script à chaque fois vu qu’il est unique …

$fichier = ‹ /home/web/users/aslck/www/compteur.txt ›;

ou plus simple : utiliser les variables de base, dont PHP_SELF , et comparer le dossier courant avec le dossier du fichier compteur.txt

Bonjour et merci pour vos reponses …

==> aspect : merci j’y avais pas penser !! ça marche nikel maintenant

==> Sans-Nom : ça a un interet d’utiliser cette fonction pour un truc aussi simple ??

en tout cas merci bien !

Hé, c’est simple : ça évite d’avoir du caca :slight_smile: et ça peut reservir. Le mieux reste $_SERVER[‹ DOCUMENT_ROOT ›]

cf. http://www.php.net/source.php?url=/include/prepend.inc