OVH Cloud OVH Cloud

Niveau d'arborescence d'un script

1 réponse
Avatar
Dominique Ottello
Bonjour,

En fonction des environnements de développement en local (Linux,
Windows, etc.) et des hébergeurs, le résultat obtenu par les variables
$_SERVER[] peut être différent au niveau de la syntaxe ; par exemple
avec des slash "/" ou des anti-slash "\" pour les variables
$_SERVER[SCRIPT_FILENAME] et autres comportant des chemins.

Ayant été confronté à ce problème et souhaitant obtenir, dans une
variable, le niveau d'arborescence dans lequel un script est exécuté,
sous forme d'une chaîne de caractère vide ("") si le script est situé à
la racine du site ou comportant X fois "../" en fonction du niveau
d'arborescence, j'ai d'abord écrit :

<?php
strpos($_SERVER['SCRIPT_FILENAME'],"/") ? $find="/" : $find="\\";
$dossier=str_repeat("../",(substr_count(substr($_SERVER['SCRIPT_FILENAME'],strlen($_SERVER['DOCUMENT_ROOT'])),$find)-1));
?>

Que j'ai remplacé par :

<?php
$niveau=str_repeat("../",(substr_count(substr($_SERVER['SCRIPT_FILENAME'],strlen($_SERVER['DOCUMENT_ROOT'])),strpos($_SERVER['SCRIPT_FILENAME'],"/") ? "/" : "\\")-1)); //
Sur une seule ligne
?>

Y-a-t-il moyen de faire plus simple ?

J'avoue humblement que le petit amateur que je suis n'a pas trouvé plus
simple.
--
Il vaut mieux ignorer où l'on est, et savoir qu'on l'ignore, que de se
croire avec confiance où l'on n'est pas. Jacques Dominique Cassini.

1 réponse

Avatar
John GALLET
Bonjour,

Y-a-t-il moyen de faire plus simple ?


Un fichier de config avec un define('MONPATH_SOURCE', '/mon/chemin'); ça
évite les trucs à la con. on n'a que ce fichier à changer quand on
passer d'une plateforme à une autre.

Attention d'ailleurs que toutes ces variables $_SERVER ne sont PAS
FIABLES et sujettes à ce qu'un attaquant peut envoyer.

JG