begin process at 2010 02 09 20:10:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > MYROOT, MODULE POUR FACILITER LES INCLUDE() ET ACCES EN LOCAL À UN FICHIER

MYROOT, MODULE POUR FACILITER LES INCLUDE() ET ACCES EN LOCAL À UN FICHIER


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :myroot, include, require, file, base Niveau :Débutant Date de création :01/02/2006 Date de mise à jour :02/02/2006 10:39:27 Vu / téléchargé :3 033 / 220

Auteur : olid

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

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.
Càd que vous pouvez (enfin) faire des include() dans des fichiers
qui ont eux-memes été inclu !!!

Avec les fonctions mYRoot() pour les adresses de fichier en local, puis mYRootURL() pour vos URL, et l'emploie de la balise BASE, vous pourrez produire un code-source indépendant du niveau d'arborescence de votre page... Bref, faire des copier-coller de sources entre vos pages SANS avoir besoin de corriger vos adresses et URLs !!!

D'une façon générale, avec mYRoot et la balise BASE, vous définissez vos adresses TOUJOURS depuis la racine de votre site.

Le Zip contient un fichier Lisez-moi avec des explications et instructions trés détaillées, notamment par rapport aux précautions à prendre pour l'indexation par les moteurs de recherche (si vous utilisez la balise BASE).

Source

  • <?php
  • require_once("../common/myroot/myroot.lib.php");
  • require_once(mYRoot()."common/config_inc.php");
  • ...
  • ?>
  • <html>
  • <head>
  • <base target="_self" href="<?php echo(mYRootURL()); ?>" />
  • ...
  • </head>
  • <body>
  • ...
  • <a href="<?php echo(mYRootURL()); ?>autre-dossier/autre-page.html">Autre page</a>
  • ...
  • </body>
  • </html>
<?php
require_once("../common/myroot/myroot.lib.php");
require_once(mYRoot()."common/config_inc.php");

...

?>
<html>
<head>
<base target="_self" href="<?php echo(mYRootURL()); ?>" />
...
</head>
<body>
...
<a href="<?php echo(mYRootURL()); ?>autre-dossier/autre-page.html">Autre page</a>
...
</body>
</html>

 Conclusion

Ce module a été créé pour le site du plugin "Yahoo! Messenger Plus":
http://www.yahooplus.fr.st/

Evolution envisagée:
- Détecter automatiquement l'URL de la racine du site quand myroot.lib.php est situé lui-meme à la racine.
- Réécrire mYRoot comme classe me semble pas indispensable.

Distribué sous licence GNU-GPL... Merci de me faire de la pub (et/ou pour Y!MPlus) via mon blog:
http://360.yahoo.com/olie_ze_kat

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

02 février 2006 10:39:28 :
plus d'explications

 Sources du même auteur

GÉNÉRER UN LOG AU FORMAT APACHE POUR FAIRE DES STATISTIQUES ...
RÉSUMER UN TEXTE SANS COUPER LES MOTS OU PHRASES
TEMPS ÉCOULÉ (DURÉE) ENTRE 2 DATES SOUS FORME LITTÉRAL NATUR...
RACCOURCIR INTELLIGEMMENT UNE URL POUR L'AFFICHAGE SUR UNE P...
AFFICHER UNE DATE-HEURE RÉCENTE DANS UN FORMAT NATUREL ET LI...

 Sources de la même categorie

Source avec Zip EFFACER LES FICHIERS IMAGES ( .PNG ), D'UN RÉPERTOIRE TEMPS ... par christophe0511
COURTE ET SIMPLE FONCTION RÉCURSIVE POUR LECTURE DE RÉPERTOI... par mbdx
Source avec Zip Source avec une capture GESTIONNAIRE DE FICHIERS | MYSQL PHP 5.X {NEMENTON PHP MANA... par Nementon
Source avec Zip Source avec une capture LISTE REPERTOIRE (DIR EN PHP) par mephistope
Source avec Zip LIRE UNIQUEMENT LES X DERNIERS OCTETS D'UN FICHIER DISTANT (... par Equilibrius

 Sources en rapport avec celle ci

Source avec Zip [POO] - CLASSE D'ACCÈS BDD MULTI SGBD par TheWeasel47
DUPLICATION D'UNE BASE DE DONNÉES POUR SAUVEGARDE par fmarie
INCLUDE "SECURISÉ" VIA FICHIER INI FACILEMENT EDITABLE par kiki67100
BASE DE HASH MD5 par 0x0syscall
NEWSLETTER SIMPLE ENREGISTREMENT DES DONNES par GillesWebmaster

Commentaires et avis

Commentaire de Anthomicro le 02/02/2006 21:23:46

Salut,

$_SERVER['DOCUMENT_ROOT']

Commentaire de olid le 03/02/2006 12:19:47

Tu n'as pas compris... mYRoot() renvoie une chaine avec les backslash pour revenir à la racine du site, par exemple "../.."

Et, $_SERVER['DOCUMENT_ROOT'] n'est pas exploitable si la racine de ton site (ou appli web) n'est pas à la racine du nom de domaine (ex: pour les pages-perso)

Commentaire de Anthomicro le 03/02/2006 12:23:22

D'où l'intérêt des chemins relatifs, comme ça aucun problème :-)

Je n'ai jamais compris comment on pouvait avoir besoin de connaître la racine alors qu'avec un chemin relatif tout roule :-) pas besoin de fonction pour faire ça à mon avis.

Commentaire de malalam le 03/02/2006 13:47:08 administrateur CS

Hello,

perso, j'utilise des constantes. avec les chemins dont j'ai besoin. Il y en a rarement 36...
Je ne vois pas non plus ce qu'ajoute tes fonctions, en fait, pour être franc.

Commentaire de olid le 03/02/2006 18:47:38

Justement Antho, cette fonction donne un chemin relatif qui permet de revenir à la racine : les adresses construites avec la fct mYRoot() ne sont PAS absolue :o)

Par contre la fonction mYRootURL() renvoi une URL absolue car c'est le seul moyen de contourner l'incapacité des moteurs de recherche à prendre en charge la balise BASE :o(

Mais tu noteras que dans ton source, les adresses et URL sont toujours relatives... Mais par rapport à la racine choisie, n uance ;o)

Enfin bon, si vous ne voyez pas l'avantage de pouvoir faire des include() récursifs, cette source n'est pas d'un grand interet :o|

Exemple: vous pouvez faire un include d'un fichier config.php qui lui fera l'include de tous les autres fichiers que vous auriez besoin... Et çà marche à tous les niveaux d'arborescence
Perso, je charge dés le début mYRoot avec un include_once (qui execute le code apres inclusion)... Et justement à la fin de myroot.lib.php, je fais tous mes include :o)

Il y a aussi d'autres champs d'application... Comme mettre un systeme de plugin par fichier à inclure quand ils existent dans un dossier :o"

Commentaire de Anthomicro le 03/02/2006 19:04:34

Faudrait que je vois des exemples histoire de m'en convaincre car pour l'instant c'est pas gagné ;-)

Commentaire de coucou747 le 04/02/2006 15:03:54

t'appelles 30 fois ta fonction ici... utiliser une constante est beaucoups moins couteux...

Commentaire de olid le 06/02/2006 12:20:14

Héhé, Coucou... content de te revoir ;o)

Pour info, les fonctions mYRoot() et mYRootURL() utilisent des variables globales pour garder leurs précédents résultats de calcul...

Dans l'esprit de PHP, ce n'est pas aux utilisateurs à optimiser leur code-source. Le systeme le fait pour eux dans les fct() standards, et moi je le fais pour eux dans cette source ;op

Commentaire de Anthomicro le 06/02/2006 13:03:03

"Dans l'esprit de PHP, ce n'est pas aux utilisateurs à optimiser leur code-source."

L'esprit de PHP c'est mal ^^

"Pour info, les fonctions mYRoot() et mYRootURL() utilisent des variables globales pour garder leurs précédents résultats de calcul..."

Il n'empêche que tu appelles une fonction, c'est ça qu'est coûteux en perfs...

Enfin bon perso je ne sais pas pourquoi on a besoin d'utiliser ce genre de scripts, même le $_SERVER['DOCUMENT_ROOT'] je ne vois pas à quoi ça peut servir quand on bosse en chemins relatifs, suffit de connaître la structure de son site ;-)

Commentaire de Antidote le 06/02/2006 21:08:03

Bonjour tout le monde, je vois que cela fais débat.

Dans mes développements j'utilise les deux types (comme ça je ne facherai personne).

url absolue généralement par constante pour tout ce qui se trouve dans la racine du site et url relative pour mes oh mon dieu pas include mais surtout require_once ^^ par une variable ^^

j'écris toujours en première ligne dans tous mes fichiers ceci :

if (!isset($_base_)) $_base_ = '../../';

// représente le retour à la racine du site par rapport à l'emplacement de mon fichier
// (par exemple ici comme s'il était dans /include/special/)

Si le fichier est le premier appelé, il donne au suivant la direction à suivre pour retrouver la racine.
Si le fichier est inclu par un autre, il reprend directement le chemin vers la racine que l'autre à donné ou avait déjà récupéré précédemment.

je trouve ça très simple nécéssite qu'une ligne de code pour chaque fichier et ceci fonctionne très bien.

il me reste plus qu'a faire mes inclusion de la sorte :

require_once $_base_.'class/ma_classe.php';
// il faut écrire le chemin depuis la racine puisque $_base_ va vous y ramener.

Voilà.

J'ai envisagé une fois d'utiliser carrément la racine du serveur /home/mon_user_web/www/ par exemple dans une constante nomée ROOT.

soit jécris une tel ligne devant tous mes fichiers :

if (!defined('ROOT')) define('ROOT', '/home/mon_user_web/www/');

mais le jour ou je change de serveur ba c'est pas cool si je ne reprend pas la même structure.

Soit j'inclue un fichier qui me créer cette constante.
Mais comment inclure ce fichier, puisque je ne connais pas le chemin du serveur.
Mettre ce fichier dans un des dossier path du système ?
Paramétré mon propre path dans php.ini ?

Faut y pensé surtout si vous comme moi avez un panel de serveur jetable que vous ajouter et enlever à la voler pour faire marcher votre site.

Le plus simple pour moi ba c'est encore la première solution que j'ai écrite.
Mais si vous avez mieux je suis tout ouïe =)

Commentaire de Anthomicro le 06/02/2006 23:12:20

ça trouve son intérêt justement dans le cas où tu inclus un fichier qu'en inclus un autre en fonction de son chemin et blabla et justement ta solution est meilleure qu'une fonction pour faire ça ;-) c'est là aussi où on voulait en venir.

a +

Commentaire de Antidote le 07/02/2006 11:27:06

c'est ce que je voulais dire ^^

D'ailleurs je ferais remarqué à olid tout betement sa première ligne de code :

require_once("../common/myroot/myroot.lib.php");

tu l'a bien tapé à la main ce chemin relatif, faut bien connaitre le chemin vers ton fichier myroot.lib.php pour l'inclure en tout premier et donc si tu connais ce chemin tu sais t'y retrouvé dans le site.

dexiemement si je met un fichier admettons systeme.php à côté de myroot.lib.php et que celui-ci inclu ton fichier d'exemple tu auras une bel erreur d'inclusion dès la première ligne car le chemin du require_once("../common/myroot/myroot.lib.php"); du coup est faux...

Voilà pourquoi ton système n'est pas idéal olid.

Commentaire de olid le 07/02/2006 12:28:29

Pour inclure myroot, tes bien obligé de donner le chemin. SAUF si on met myroot.lib.php dans l'include_path... Notamment la racine réel du site :o"

Tout façon, je voulais pô faire un débat. Cette source etait, et est toujours, le seul moyen de resoudre l'un de mes problemes (avec des pages perso)... J'oblige personne à l'utiliser :o|

Commentaire de Anthomicro le 07/02/2006 16:26:14

"le seul moyen de resoudre l'un de mes problemes"

le seul moyen que tu connais de résoudre l'un de tes problèmes ;-) sans vouloir faire de troll ^^

Commentaire de olid le 07/02/2006 18:38:48

*****************
*  1 GOLDWIN    *
*    POINT      *
*****************

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Base MSQL [ par Xcacou ] Salut a tous j'ai un petit pb je souhaite ecrire dans un table MSQL dans un champ blob et impossible d'y arriver voici mon code :&lt;i&gt; $ope Comparaison de nombre [ par jantonazzo ] Bonjour à tous,Je voudrais juste faire une comparaison de valeur et afficher la plus grande.En gros je recupere le champ "fichier" d'une table .****** require & include [ par amosc ] salut a tous;qu elle sont les differences entre include("") et require(""), et lorque l on veux faire une redirection auto le mieux c est include ou h Quelle est la différence entre require_once et include? [ par lolopanama ] Actuellement, je crée un intranet dans mon lycée mais je n'arrive pas à faire la différence entre require_once et include. MERCIlolopanama base de donnée [ par MiTcH37 ] saluch,j'aimerai savoir si c'était possible de garder une connexion à une bdd ouverte dans une page appelée par un include, et de la reconnaitre dans REQUIRE et INCLUDE [ par nicoy2000 ] Quelles sont les principales différences de l'utitilisation de REQUIRE et de INCLUDE ? LA taille d'une base de donnée sql [ par FleX ] ba en fait je suis sur Free et j'ai une base de donnée que je manipule en php.J'aimerai savoir comment c'est ty qu'on peut bien faire pour obtenir la Zone de texte [ par benett ] Bonjour à tous,comment faire pour cacher des zones de texte dans un tableau (Ces zones de texte résultent de la sélection de champs dans des base de d Debuter une base SQL pour faire du PHP [ par bowen ] Bonjour je suis nouveau sur ce site et aussi a la prog !Bon je vous expliques mon probleme je veux creer un site sur le cinema asiatique et je vais do Probleme d'indlude(); [ par DEL ] j'aimerai faire un include(); sur une page qui se trouve pas sur mon hebergeur, j'ai essayé d'utiliser cette syntaxe include('http://uhuh.free.fr/inde


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales