begin process at 2012 02 15 18:57:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > RÉCUPÉRER LE CHEMIN RELATIF DU SCRIPT

RÉCUPÉRER LE CHEMIN RELATIF DU SCRIPT


 Information sur la source

 Description

Cette fonction permet de revenir à la racine du site pour y atteindre d'autres répertoires.

Source

  • function chemin()
  • {
  • $a=$_SERVER['PHP_SELF'];
  • $b=strrev($a);
  • $c=strpos($b,'/');
  • $d=substr($b,$c,strlen($b)-$c);
  • $e=strrev($d);
  • $f=substr_count($e,'/')-1;
  • $g='';
  • for ($i=0;$i<$f;$i++)
  • $g.='../';
  • return $g;
  • }
	function chemin()
	{
		$a=$_SERVER['PHP_SELF'];
		$b=strrev($a);
		$c=strpos($b,'/');
		$d=substr($b,$c,strlen($b)-$c);
		$e=strrev($d);
		$f=substr_count($e,'/')-1;
		$g='';
		for ($i=0;$i<$f;$i++)
			$g.='../';
		return $g;
	}

 Conclusion

exemple :

$pth=chemin();

include $pth.'include/monfichier.php';

A++


 Sources du même auteur

Source avec Zip Source avec une capture ANNUAIRE PRO
FONCTION PERMETTANT DE GÉRER LES POST ET GET DES FORMULAIRES...
"REDIRECTION" TRÈS SIMPLE EN PHP
Source avec Zip EPHÉMÉRIDE
CLIPART

 Sources de la même categorie

Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000
Source avec Zip Source avec une capture GENERATEUR DE BOUTONS DE PARTAGES POUR RESEAUX SOCIAUX par cod57

Commentaires et avis

Commentaire de malalam le 09/05/2005 17:45:34 administrateur CS

Hello,

heu...outre le fait que ce n'est pas tres tres bien code...je m'arrete d'ailleurs pour expliquer :
- prefere des noms de variables EXPLICITES, parce que $a, $b, $c..apres, pour debugger ca ou pour modifier le script, bonjour l'angoisse!
- c'est trop long. IL suffit de compter le nombre de / avant celui qui separe le dernier repertoire et le fichier...

Donc, outre ca, tu seras sans doute heureux d'apprendre qu'il existe une variable bien pratique  :

$_SERVER['DOCUMENT_ROOT'];

Je te laisse la tester :-)


Commentaire de glad le 10/05/2005 07:29:23

hello,

Oki, je vais revoir ma copie ;-)
A++

Commentaire de glad le 10/05/2005 07:42:09

re,

je ne savais plus pourquoi je fesais comme ça, et en essayant ton truc, ça m'est revenu !!


http://www.secuser.com/article.php?ID=8468

soit le code suivant :

<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>

IIS (5) me retourne le message suivant :

Notice: Undefined index: DOCUMENT_ROOT in E:\Inetpub\www\test.php on line 3

Alors que ton astuce fonctionne très bien sous Apache...

Le pb est que c'était pour un intranet qui est sous IIS pour l'instant, je revois tout pour Apache...

voili voilou

Commentaire de malalam le 10/05/2005 09:10:52 administrateur CS

A mon avis, c'est plutot une config du php.ini ca.

Commentaire de glad le 10/05/2005 11:50:24

ha bon ! Normalement sauf caga... de ma part, je fais un copié/collé du php.ini sur mes serveurs, en modifiant juste les chemins d'accès aux include...

je crois que c'est IIS qui est pas top

Commentaire de malalam le 10/05/2005 12:00:50 administrateur CS

Oui c'est possible, c'est en effet une config serveur.

Tien:
http://de2.php.net/manual/en/reserved.variables.php#reserved.variables.server

Il y a d'autres variables qui peuvent t'amener au meme resultat bcp plus simplement, de toutes facons :-)

Commentaire de GRenard le 10/05/2005 13:52:14

Attention, avec DOCUMENT_ROOT si ton fichier est dans un répertoire d'un alias, tu n'auras pas ce que tu veux
De plus, au lieu de faire strrev, utilise strrpos ?

DOCUMENT_ROOT n'est pas disponibles sur les serveurs Tweakés IIS, je trouve ca totalement débile, j'ai un hébergeur d'une compagnie qui a ça et j'avais complètement envi de les envoyer chier.

Commentaire de glad le 10/05/2005 14:36:00

donc si je suis bien, un truc ds le style :

<?php
// Pour IIS, sur Apache $_SERVER['DOCUMENT_ROOT'] suffit !
// Merci malalam pour cette info
$Chemin_Complet_script=$_SERVER['PHP_SELF']; // Récupération du chemin du script
    //$Nom_Serveur_inverse=strrev($a);
    echo 'Chemin_Complet_script : '.$Chemin_Complet_script.'<br />';
    $OuCa=strrpos($Chemin_Complet_script,'/'); // Position du dernier /
    echo 'OuCa : '.$OuCa.'<br />';
    $Chemin_Seul=substr($Chemin_Complet_script,$OuCa,strlen($Chemin_Complet_script)-$OuCa);
    //$e=strrev($d);
    echo 'Chemin_Seul : '.$Chemin_Seul.'<br />';
    $nb_slash=substr_count($Chemin_Seul,'/')-1; // Nombre de /
    $pth='';
    echo 'nb_slash : '.$nb_slash.'<br />';
    for ($i=0;$i<$nb_slash;$i++)
     $pth.='../';
    echo 'path : '.$pth;    
?>

serait mieux (pour IIS), ou je me complique encore la vie ?

Ce satané serveur a de sacrés limitations!!

Commentaire de malalam le 10/05/2005 14:40:03 administrateur CS

En tous cas, bien pour les variables :-)

Commentaire de malalam le 10/05/2005 14:53:23 administrateur CS

Sinon, si ton but est de revenir au root de ton site, tu as cette variable :
$_SERVER['HTTP_HOST']

Commentaire de Cyrille2 le 12/05/2005 18:45:34 administrateur CS

Sinon, il est possible d'utiliser des PATHS absolus afin de lever tte ambiguité. De plus, $_SERVER contient des données sur le script d'appel or dans un include... ce n'est pas forcémment le bon chemin !

Il existe une constante "magique" qui permet d'obtenir le path absolu d'un fichier, meme dans un fichier inclus : __FILE__

De plus, associé à la fonction dirname(), ceci constitue un très bon moyen de définir un path de base ds un fichier de configuration par exemple...

Exemple : même structure de site, memes fichiers de base mais configurations différentes (notamment en matière de PATHs :)) :
http://cyrille2.free.fr/
http://cyrille2.free.fr/inshat/ (en cours)
http://cyrille2.free.fr/exetron/ (en cours aussi)

Commentaire de glad le 13/05/2005 08:08:18

Et bin !
je ne pensais pas suciter un tel débat avec cette source !!:-)

PhpCS is alive :p

Commentaire de malalam le 14/05/2005 11:36:33 administrateur CS

$_SERVER['DOCUMENT_ROOT'] renvoie tjrs (quand le serveur est configure pour renvoyer cette valeur evidemment) le root du document (donc du site), aucun rapport avec les include() que tu peux avoir.
__FILE__ doit de toutes facons etre parsee. Mais oui cette constante est tres utile :-)

Commentaire de arnaqueurs le 18/09/2009 11:14:14

Merci cette fonction m'a sauvé la vie !
j'utilise xajax et pour fixer un bug j'ai du utiliser ta méthode, car je ne peux pas utiliser DOCUMENT ROOT. Toutefois, j'utilise URL REWRITING, donc j'ai du faire une correction:

function chemin()
{
#$a=$_SERVER['PHP_SELF'];
$a=$_SERVER['REQUEST_URI'];  // Pour corriger le bug si URL REWRITING
$b=strrev($a);
$c=strpos($b,'/');
$d=substr($b,$c,strlen($b)-$c);
$e=strrev($d);
$f=substr_count($e,'/')-1;
$g='';
for ($i=0;$i<$f;$i++)
$g.='../';
return $g;
}

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,430 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales