Include dans une arborescence

Fermé
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 - 5 nov. 2018 à 10:45
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 - 5 nov. 2018 à 11:15
Bonjour à tous,

Je vous fais un schéma de mon arborescence simplifié avant de vous présenter mon problème

-index.php
---Admin/
-----index.php
---includes/
----navbar.php
---images/
-----logo.png

Le problème, j'ai une navbar avec un logo.png, j'aimerais que l'image s'affiche quand j'includes ma navbar dans l'index de l'admin et celui de la racine.

J'ai essayé une solution qui marche mais qui n'est pas très transportable.
function getRoot()
{
    $folder = "/project/";
    return "http://".$_SERVER['HTTP_HOST'].$folder;
}


Mais j'aimerais une version plus transportable dans la nécessité où je change de répertoire ou que mon arborescence s'agrandi. Biensûr le problème de concerne pas que le logo mais aussi les liens vers les autres pages.

J'ai déjà regarder les variables magiques dans le manual php mais le problème c'est qu'il ne me faut pas
C:\wamp\www\project\includes
mais
C:\wamp\www\project\

Je suis donc bloqué et je ne comprends pas comment avoir des includes propres pour toute l'arborescence.

Merci pour votre aide.
Damien Claeyman

1 réponse

jordane45 Messages postés 38048 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 mars 2024 4 618
5 nov. 2018 à 10:57
Bonjour,

Evite d'utiliser le chemin absolue à partir du c:\
Evite aussi d'utiliser les URL

Normalement, tu peux simplement utiliser directement :
$path = "project/includes/logo.png


Tu peux aussi utiliser la variable $_SERVER
$path = $_SERVER["DOCUMENT_ROOT"]."/project/includes/logo.png



0
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
5 nov. 2018 à 11:05
Merci pour ta réponse je pense que la seconde solution est peut etre la bonne. Je l'avais envisagé, le problème c'est qu'il faut spécifié project et c''est ce que voulais éviter. Sinon tu mals compris min arborescence la photo ce trouve à l'adresse :
$path = $_SERVER["DOCUMENT_ROOT"]."/project/images/logo.png

et le problème est là c'est qu'il faut remonter de un dans l'arborescence pour trouver le dossier photo
0
jordane45 Messages postés 38048 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 mars 2024 4 618
Modifié le 5 nov. 2018 à 11:11
Tu es obligé d'indiquer "projet"....
A moins que tu ne définissent un virtualHost pour accéder à ton site....
Dans ce cas, le DOCUMENT_ROOT deviendra directement "project"

Une autre solution serait que lorsque tu ouvre ton site (via le index.php par exemple) tu initialises une variable de SESSION contenant l'emplacement "root" de ton site... et que pour tes includes tu utilises cette variable directement.
Bien entendu, le "project" pourrait provenir d'une variable qui se trouverait dans un fichier de configuration... au même titre que tu gères les informations de connexion à ta bdd..
0
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
5 nov. 2018 à 11:15
Merci beaucoup Jordane je pense m'orienter sur cette voie ;)
0