C'est un petit peu compliqué à comprendre l'utilité, puis le code lui-même. (Les explications de l'utilisation de ces astuces sont dans la conclusion)
------------------------------------- -------------------------------------------------- --------
1ERE PROBLEMATIQUE :
Sur votre site, pour ne pas répéter la structure (bannière, menu,pied-de page, tout ce qui ne change pas d'une page à l'autre), vous utilisez l'url:
Exemple:http://www.votresite.ext/la_page_qu i_contient_tout.php?la_page_a_inclure=celle_la.php
dans 'la_page_qui_contient_tout.php', vous avez un code du style: include($_GET['la_page_a_inclure']);'
Malheureusem ent, ce système a l'inconvénient de ne pas plaire à certains référenceurs de sites qui n'aiment pas les '?' dans l'url, et qui, par conséquent, refuseront de référencer votre chef-d'oeuvre, objet de votre fierté qui DOIT être connu.
Il faut utiliser dans ce cas des url du type:
http://www.votresite.ext/la_page_qui_contien t_tout.php/celle_la.php
et dans votre code, vous mettez : include(substr($_SERVER["PATH_INFO"],1)); (j'ai trouvé ça dans Login n°109, article de Yann Rocq)
Malheureusement encore, imaginons que la page à inclure soit dans un sous répertoire (du type : mon_répertoire/celle_ci.php), à ce moment, la page ne sera pas trouvée, car le répertoire sera ignoré.
----------------------------------------- -------------------------------------------------- ----
2NDE PROBLEMATiQUE:
Elle est liée à la première.
exemple:l'utilisateur peut être sur la page : P1: http://www.votresite.ext/la_page_qui_contient_tout .php/celle_la.php
il peut aussi être sur la page : P2: http://www.votresite.ext/la_page_qui_contient_tout .php/mon_répertoir/celle_ci.php
Du fait que les fichiers inclus peuvent être avec ou sans répertoire avant le nom du fichier (exemple: 'celle_la.php' et 'mon_répertoire/celle_ci.php'), les liens ne peuvent pas être directs (exemple: <a href='../ma_page.php'>ma_page</a>) car si la page actuelle est P1, si l'utilisateur suit le lien, il arrivera sur l'url:
http://www.votresite.ext/ma_page.php
tandis que s'il est sur la page P2 et qu'il suit le même lien, il arrivera sur:
http://www.votresite.ext/la_page_qui_contient _tout.php/ma_page.php
La seule solution est de mettre l'url complète à chaque lien. Cela donnera pour le lien précédent: <a href='http://www.votresite.ext/la_page_qui_contien t_tout.php/ma_page.php'>ma_page</a>
que l'utilisateur soit sur P1 ou P2, il arrivera au même endroit.
Mais il reste un problème. Vous dévelloppez en local, et l'url complète chez vous est différente de l'url complète en ligne.
Chez vous, le lien sera ( avec EasyPHP):
<a href='http://127.0.0.1/www/votre_site/la_page_qui_ contient_tout.php/ma_page.php'>ma_page</a>
En ligne, le lien sera:
<a href='http://www.votresite.ext/la_page_qui_contien t_tout.php/ma_page.php'>ma_page</a>
Il faut donc que les liens dépendent du lieu de sur quel site l'utilisateur ou vous vous connectez.
Les problèmes est le même pour appeller un page css, ou tout autre fichier.