mYRoot est un ensemble de fonctions en PHP destinées a retrouver la racine d'un site pour des traitements de fichier en local (par exemple ; des inclusions). L'usage le plus courant de mYRoot est de permettre de faire des inclusions récursives sans se soucier du niveau d'arborescence du fichier PHP qui déclenche l'inclusion. Par Olivier D. alias ze kat, dzolivier-kat@yahoo.fr pour le site de Y! Messenger Plus, www.yahooplus.fr.st Distribué sous licence GNU-GPL. INSTALLATION & CONFIGURATION: Vous pouvez copier "myroot.lib.php" dans n'importe quel dossier de votre site, même si son accés n'est pas protégé. Si votre site correspond à l'un des cas ci-dessous, vous devrez configurer la variable $mYRoot['Root']['URL'] pour préciser l'URL (absolue ET réelle) de la racine de votre site. - Si votre site est hébergé dans un sous-dossier (comme pour des pages perso). Ex: http://pagesperso.laposte.net/yahooplus/ - Si votre site a un nom de domaine, mais qu'il utilise une page de redirection (avec une 'frame') vers un sous-dossier (ou un autre domaine). Et, il faut absolument laisser la variable $mYRoot['Root']['URL'] vide si votre site posséde plusieurs noms de domaine aliasés (càd une redirection CNAME). Dans le cas contraire, mYRoot provoquera une redirection. Si $mYRoot['Root']['URL'] est configuré, alors 'myroot.lib.php' doit être dans l'arborescence qui y correspond. USAGE: Dans les fichiers où vous avez besoin de mYRoot, faites une inclusion (avec 'require_once') comme ci-dessous : Conseil: faites systématiquement une inclusion de mYRoot dans tous vos fichiers PHP, dés le début de votre code source, avant toute autres inclusions (avec les fonctions 'include' ou 'require'). Quand vous avez besoin d'accéder à un fichier en définissant son chemin depuis la racine de votre site, utilisez la fonction mYRoot() qui renvoie les - retours parent - (càd des '../') nécessaires pour - revenir - à la racine. La fonction mYRootURL() renvoie l'URL absolue, détectée et/ou configurée, de la racine de votre site, qui est utilisée par mYRoot. EXEMPLE: Dans l'exemple ci-dessous, la page se trouve dans un sous-dossier à la racine du site. Dans l'exemple ci-dessus, le code source de 'config_inc.php' fait lui aussi une inclusion en utilisant la fonction mYRoot(). Grace à mYRoot, on peut faire une inclusion de 'config_inc.php' dans des pages en PHP qui n'ont pas le même niveau d'arborescence (càd dans des sous-dossiers différents) comme ci-dessous. Pour la - petite explication - sur cet exemple ; 'config_inc.php' est un fichier de configuration d'un site en plusieurs langues. Et, 'config_inc.php' a besoin de faire des inclusions pour charger des réglages spécifiques à la langue choisie par l'internaute. CONSEILS: Naturellement, il vous faudra toujours inclure mYRoot en indiquant explicement son chemin d'accés. Mais si vous utilisez systématiquement mYRoot dans vos pages pour faire des inclusions (et autres accés aux fichiers), vous pourrez faire des copier-coller de vos - sources - sans avoir besoin d'apporter des corrections selon l'arborescence de la page. Vous pouvez étendre ce concept - d'accés aux fichiers relativement à la racine - au codage en HTML (et CSS) en utilisant la balise pour re-positionner vos pages à la racine du site. Pour celà, la fonction mYRootURL() pourra être utilisée comme ci-dessous. ... ... mon lien ... Pour tous les attributs HREF= (SRC= et autres), indiquez vos URLs relativement à la racine de votre site. Et, peu importe le niveau d'arborescence de votre page. Vous pouvez précéder vos URLs par './' mais çà porte à confusion en laissant croire à la lecture du source que le lien est relatif à l'emplacement de la page. Attention, la balise n'est pas prise en compte par la plupart des moteurs de recherche (notamment Google, Yahoo!, et MSN), ce qui risque d'empêcher certaines pages d'être indexées si vous ne prennez pas quelques précautions... Ce probléme concerne les pages qui sont pointées (avec la balise ) "uniquement" depuis des pages enregistrées dans des sous-dossiers. Pour comprendre, imaginez que le source ci-dessous est celui d'une page enregistrée à l'emplacement http://www.mon-site.com/mon-dossier/ma-page.html ... ... Autre page ... Un navigateur Web va comprendre qu'il faudra consulter l'- Autre page - à l'adresse http://www.mon-site.com/autre-dossier/autre-page.html Par contre, un moteur de recherche qui ignore la balise va utiliser l'emplacement de la page en cours pour compléter l'URL vers http://www.mon-site.com/mon-dossier/autre-dossier/autre-page.html ce qui lui renverra une erreur n°404 de "Page introuvable". Pour résoudre ce problème, il faut faire quelques URLs "absolue" (en commençant par http://), au mieux, en utilisant mYRootURL() comme ci-dessous. ... Autre page ... Malgrés cet inconvénient, le code source en HTML pourra faire l'objet de copier-coller sans qu'il soit nécessaire de corriger les URLs selon le dossier de la page... It's all rock ;o)