Salutation ;-)

Voilà J'ai un problème qui est vraiment très agacant que je n'arrive pas a résoudre (pour l'instant je n'utilise que des solutions faites maisaon).
Alors voilà l'archirtecture de mon site est comme ceci :

SITE:
    /_inc
        /css
            bootstrap.min.css
        /js
            bootstrap.min.js
       header.php
       footer.php
    /membres
        /app
        login.php
        register.php
    /contact
index.php

Du coup si du index.php j'ai envie d'inclure les fichier header.php et footer.php je fais juste un require vers "/_inc/header.php" et ""/_inc/footer.php"".
De la même manière que quand je suis dans le dossier "membres" je fais juste un "../_inc/header.php" et "/_inc/header.php".
Mais le problème est que les liens inclus dans les header et footer (css, js, nav ect) ne sont pas reconnus. Du coup je suis obligé de mettre soit des liens absolus du style http://style.css et compagnie soit de mettre un dossier _inc a là racine du site pour l'index.php et de mettre un autre dans membres (du coup cela m'oblige a faire des modifications des des côtes et si j'ajoutes un autre dossier ke serais obligé de faire pareil et et je vous dis la galère...).

Avez vous une solution pour moi ?

<Je vous remercie beaucoup ! :P

PS : J'ai fais pas mal de recherche j'ai trouvé la function dirname( ) mais cela n'a pas l'air de fonctionner ou c'est moi qui ne sait pas comment cela fonctionne.

2 réponses


l4p1n
Réponse acceptée

Lut

Tu peux t'y prendre de plusieurs façons pour faire référence à la racine (ça dépend laquelle) de ton site.

Pour la racine des dossiers du site

Trouver la racine du site dans un sous-dossier

Concernant ces racines, tu peux procéder avec un dirname(__DIR__) . '/' si l'appel à la fonction se trouve dans un sous-dossier. Pour illustrer la chose, prenons un site avec une structure de dossier comme ceci:

/tmp/site/
├── assets
│   └── app.css
├── index.php
└── requires
    ├── config.php
    └── database.php

et que ton index.php fait un require('requires/config.php');. Le fichier config.php fera un dirname(__DIR__) . '/' pour avoir le nom du dossier parent. Dans ce cas-ci, le résultat sera /tmp/site/.

Trouver la racine du site dans la racine du site

Encore une fois, c'est très simple. Il suffit de faire un __DIR__ . '/' qui retournera le dossier dans lequel PHP est. Dans ce cas-ci, toujours avec l'architecture du dossier cité plus haut, tu auras aussi /tmp/site/. Je te laisse la doc de dirname et la doc des constantes magiques dont __DIR__ fait partie.

Trouver la racine web

Il y a également plusieurs moyens d'y procéder avec la superglobale $_SERVER. Je ne vais cependant pas m'y attarder là dessus: un sujet sur StackOverflow donne de bons éléments de réponse.

J'espère t'avoir aidé à y voir plus clair, et t'avoir été utile ^^

++

Soulouf
Auteur

Je te remercie beaucoup d'avoir pris ton temps pour me répondre ça fait super plaisir ! :D
Je vais avoir pas mal de chose à lire :D