Obtenir une adresse relative

WRInaute discret
Bonjour à tous

(je rappel que je suis débutant en PHP)

Pour un script de compteur de visites j'utilise la fonction fopen().
J'aurais besoin de l'utiliser sur des pages à plusieurs niveaux donc j'ai pensé à mettre simplement l'adresse absolue du fichier à ouvrir ( http://www.monsite.com/visite/max.txt ) mais ça ne marche pas il faut que j'ai l'adresse relative.

Comment récupérer une adresse relative (qui remonte à la racine) lorsque je me situe sur une page dans un dossier de mon site ?

Merci d'avance (j'espère que c'est compréhensible :? )
 
WRInaute discret
La racine de ton site est / .
Prenons un exemple simple: j'ai un dossier exemple à la racine de monsite.
Pour y accéder en adresse relative depuis toute l'arborescence de ton site tu tapes "/exemple".

Pour info "../" remonte l'arborescence d'un cran.

Voilà, c'est tout.
 
WRInaute accro
CrazyCow007 a dit:
Pour un script de compteur de visites j'utilise la fonction fopen().
J'aurais besoin de l'utiliser sur des pages à plusieurs niveaux donc j'ai pensé à mettre simplement l'adresse absolue du fichier à ouvrir ( http://www.monsite.com/visite/max.txt ) mais ça ne marche pas il faut que j'ai l'adresse relative.

C'est plus vraisemblablement un nom de fichier qu'une adresse, et ce nom de fichier peut probablement être absolu ou relatif.

Il faut donc connaître la racine de ton site (dans le système de fichiers du serveur), que tu peux effectivement obtenir via DOCUMENT_ROOT ou connaître par ailleurs, et mettre ton chemin relatif à la suite...
 
WRInaute discret
Merci KaZhaR de m'aider,

maiso oui j'avais déjà essayé mais ça me donne :

Warning: fopen(/homevisite/max.txt): failed to open stream: No such file or directory in /home/j/jamesbond/www/bas.php on line 49

Dc avec une fonction str_replace j'avais pu enlever le home/ mais ça ne m'avance à rien.
Ce que je voudrais c'est que quand je suis sur une page à la racine du site ça me donne : visite/max.txt
et quand je suis dans mon dossier biographie par exemple ça me donne :
../visite/max.txt

peut-être que je l'utilise mal, je ne sais pas :?
(je n'ai que 2 niveaux sur mon site).
 
WRInaute discret
@doeurf : il faut que l'adresse se modifie en fonction du dossier que je parcours (je ne suis pas tjrs à la racine de mon site, voir post du dessus).
@jcaron : l'adresse absolue vers ce fichier ne marche pas. j'ai vérifié. Tu pourrais me donner un bout de code qui utilise DOCUMENT_ROOT et qui me permetrai d'obtenir le fichier visite/max.txt à partir de n'importe quel dossier en adresse relative (si c'est pas trop demandé) ?

j'ai essayé :
Code:
$fp = fopen($_SERVER['DOCUMENT_ROOT']."visite/max.txt","r+");
mais ça me donne
/homevisite/max.txt

Merci d'avance ;)
 
WRInaute passionné
CrazyCow007 a dit:
@doeurf : il faut que l'adresse se modifie en fonction du dossier que je parcours (je ne suis pas tjrs à la racine de mon site, voir post du dessus).
/tonfichier.txt pointe toujours sur la racine du site, quelle que soit la position dans l'arborescence. Quel est le pb ??
 
WRInaute discret
pour vous aider je met directement tout le code qui est présent sur toutes les pages du site, qui permet de connaitre les stats actuelles et (sans que le visiteur le sache) d'enregistrer le nb maximum de connectés.

Code:
<h3>Statistiques</h3> 
<font size="1" color="#888888">
<?
$fp = fopen($_SERVER['DOCUMENT_ROOT']."/visite/max.txt","r+");
$max = fgets($fp,11);
include('visite/visite.php');
print"Nombre total de visiteurs (depuis le 12 Juin 2005) : <b>$compteur</b><br>";
print"Nombre de visiteurs aujourdhui : <b>$compteur_j</b><br>";
print"Nombre visiteurs connectés : <b>$compteur_c</b><br>";
if($compteur_c>$max)
{
fseek($fp,0);
fputs($fp,$compteur_c);
fclose($fp);
}
else
{
fclose($fp);
}
?></font>

Ce code ne fonctionne donc pas correctement puisqu'il me génère les erreurs suivantes :

Code:
Warning: fopen(/home/visite/max.txt): failed to open stream: No such file or directory in /home/j/jamesbond/www/bas.php on line 49

Warning: fgets(): supplied argument is not a valid stream resource in /home/j/jamesbond/www/bas.php on line 50
Nombre total de visiteurs (depuis le 12 Juin 2005) : 1316
Nombre de visiteurs aujourdhui : 2
Nombre visiteurs connectés : 1

Warning: fseek(): supplied argument is not a valid stream resource in /home/j/jamesbond/www/bas.php on line 57

Warning: fputs(): supplied argument is not a valid stream resource in /home/j/jamesbond/www/bas.php on line 58

Warning: fclose(): supplied argument is not a valid stream resource in /home/j/jamesbond/www/bas.php on line 59
 
WRInaute discret
essayes:
Code:
$fp = fopen("/visite/max.txt","r+");

Et il faut biensûr que ton fichier soit accessible en écriture, au moins pour le groupe (droits unix ou CHMOD, si tu connais)
 
WRInaute discret
le code que je donnais précédement provient du fichier bas.php qui est insérer avec un include() sur ttes les pages du site (quelque soit leur dossier).
Le code :
Code:
$fp = fopen("/visite/max.txt","r+");
ne marchera donc que pour les pages situées à la racine du site.

C'est vrai que c'est peut-être pas le plus intelligent des systèmes que j'ai utilisé pour mon site :?
 
WRInaute discret
oh oui !! ça marche !!!

il suffisait de mettre :

Code:
$fp = fopen("/home/j/jamesbond/www/visite/max.txt","r+");

merci qd même à tous ceux qui ont cherchés :D
 
WRInaute accro
CrazyCow007 a dit:
Code:
Warning: fopen(/home/visite/max.txt): failed to open stream: No such file or directory in /home/j/jamesbond/www/bas.php on line 49

Essaie fopen("/home/j/jamesbond/www/visite/max.txt")
 
Discussions similaires
Haut