IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Question sur les chemins des includes


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 28
    Points
    28
    Par défaut Question sur les chemins des includes
    bonjour j'ai un site que je repartis en de nombreux dossiers et a force je me perds un peu dans les chemins des includes et dans les liens vers mes pages css et js
    je voudrais savoir comment je peux faire pour ne pas avoir a taper ../ tout le temps (forcement sans tout mettre au meme niveau)
    merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par michka999
    bonjour j'ai un site que je repartis en de nombreux dossiers et a force je me perds un peu dans les chemins des includes et dans les liens vers mes pages css et js
    je voudrais savoir comment je peux faire pour ne pas avoir a taper ../ tout le temps (forcement sans tout mettre au meme niveau)
    merci d'avance
    Bonsoir,

    Tu as la possibilité de définir un ou plusieurs répertoires inlcude avec la fonction PHP set_include_path, jette un coup d'oeil au manuel PHP...

    Ceci peut régler ton prob au niveau des inclusions de fichiers PHP.

    Pour le reste, il te faut aller voir sur le forum concerné .

    Bye !

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    si tu n'a pas acces a l'include path, et que tu n'a pas non plus de php5 pour t'aider a charger les classes avec un autoload, je n'ai qu'une seule solution a proposer... c'est p'tet pas top mais c'est la seule que j'ai trouvée ;o)

    je déclare une variable $path = '../'; en debut de chaque page (c'est la 1ere ligne) en fonction de l'endroit ou se trouve la page.

    Le $path en question permet de se ramener a la racine du site
    Ainsi, une page a la racine aura $path=''; (niveau 0)
    une page dans un dossier aura $path='../'; (niveau 1)
    une page dans un sous dossier de niveau 2 aura $path='../../';

    ensuite, tout les includes ou autre sont de la forme :
    include($path.'dossier1/dossier2/fichier.php');

    avec "dossier1/dossier2/fichier.php" qui represente une arborescence "absolue" depuis la racine du site.

    Ainsi, meme si tu vient a déplacer tes fichiers par la suite (mais si tu choisis une bonne arborescence dès le début en principe ca n'arrive pas ;o), tu a juste besoin de changer la premiere ligne : la variable $path.

  4. #4
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Sur le même principe que Fladnag mais en encore plus simpliste

    Dans un fichier inclu partout je déclare une constante contenant le lien de mon répertoire de site

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    define("_PATH_","C:/www/monsite"); // par exemple
    define("_URL_","http://www.monsite.com");
    Ensuite je me sert de ces constante pour effectuer mes inclusions, et pour les liens images aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include(_PATH_."/sousdossier1/mapage.php");
    L'avantage est que le jour ou tu changes ton site de place tu n'as que 2 lignes à modifier.

    Tu peux même déterminer dynamiquement l'emplacement du code comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chemin = explode("/",$_SERVER['PHP_SELF']);
    define("_PATH_",$_SERVER['DOCUMENT_ROOT'].'/'.$chemin[1]);
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 66
    Points
    66
    Par défaut
    Ou peut être mieux, dans la variable path tu définis la racine de ton serveur avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $path = "http://".$_SERVER['SERVER_NAME']."/";
    ainsi tu donne le chemin depuis la racine et tu est sur de l'adresse. C'est peut être pas joli mais c'est efficace.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par guitou12
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    define("_PATH_","C:\www\monsite"); // par exemple
    define("_URL_","http://www.monsite.com");
    Ensuite je me sert de ces constante pour effectuer mes inclusions, et pour les liens images aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include(_PATH_."/sousdossier1/mapage.php");
    ... arg, va falloir que je modifie toute mes pages ;o)))
    je n'y avais point pensé... et si ca fonctionne bien, c'est en effet beaucoup plus propre. Une petite question toutefois :
    Sur un serveur unix, qu'est-ce que tu indique pour _PATH_ ?
    => Si c'est le chemin depuis la racine du serveur (/home/user/www/) ca devrait fonctionner pour les include, a condition que le serveur t'autorise a connaitre cette arborescence, ce qui n'est pas évident pour des questions de sécurité (il me semble que free avait bloqué cette possibilité a un moment)

    De plus, tu n'accedes pas a tes images avec ce chemin.

    Donc je suppose que pour tes images tu utiliser _URL_... donc tu n'a jamais d'images chargées de maniere relative ? Est-ce que ca ne change pas quelque chose au niveau protocole HTTP d'indiquer que les images sont accessibles via http://.... meme si il s'agit du meme site ? De plus, une page contenant plein de smileys par exemple, ou plein d'images, contiendrais des chemins "absolus" sur les images augmentant de maniere "inutile" la taille du code html généré non ? (idem pour les liens)
    Enfin, il existe des directives dans les .htaccess permettant d'interdire que des images soient chargées en dehors du site meme (pour eviter les vols d'images). Est-ce que cette méthode est compatible avec cette option ?

  7. #7
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Oui _URL_ est bien pour dissocier les inclusions php de l'affichage html à proprement parler.

    Pour la question est ce que ça fonctionne sous unix j'ai pas de quoi répondre sous la main mais je suppose que la 2ème solution avec $_SERVER['DOCUMENT_ROOT'] devrait fonctionner.

    Pour la taille du code c'est sur que c'est 'un peu' plus lourd d'indiquer le chemin complet mais si on en est à pinailler pour quelques octets de plus à ce niveau là....

    Pour les .htaccess interdisant le 'vol' d'images je n'ait aucune idée du fonctionnement à proprement parler, disons que ça fait une vérification sur l'ip d'où est appelée l'image et la compare avec ton propre serveur, dans ce cas là pas de souci vu que tout est sur le même serveur.
    Après si il ya d'autre nuances c'est fort probable que ça coince mais il faudrait tester...

    Voilà j'espère avoir été clair dans mes propos
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    ok, merci, faudra que je teste tout ca quand j'aurais le temps ;o)

    pour le $_SERVER['DOCUMENT_ROOT'] c'est justement le genre de variables qui étaient modifiée par free a l'epoque aussi, en plus de l'interdiction de toutes les fonctions du genre realpath(), etc...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur les ascenseurs des champs
    Par 42remi42 dans le forum WinDev
    Réponses: 6
    Dernier message: 22/02/2018, 08h44
  2. [JFileChooser] Une petite question sur les chemins par defaut
    Par MDP dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 06/02/2008, 14h49
  3. Une question sur les « Names » des objets.
    Par phdnet dans le forum W4 Express
    Réponses: 7
    Dernier message: 04/12/2007, 08h54
  4. question sur les priorités des styles.
    Par Sniper37 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 14/06/2007, 17h16
  5. Question sur les chemins Hiérarchiques et delphi
    Par dederfred dans le forum Delphi
    Réponses: 2
    Dernier message: 19/10/2006, 20h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo