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 :

Include fichier dynamique


Sujet :

Langage PHP

  1. #21
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    Salut,
    bon je n'ai pas envi de rentré dans la discussion entre nos deux amis posteur.

    Je vais juste émettre une formule de solution en dehors de l'utilisation de variable définissant "a la main" le chemin des fichiers.

    Tu pourrais via php effectuer une lecture de répertoire récursive à savoir tu part de ton fichier initiale et tu remonte l'arborescence dossier par dossier à la recherche de ton script ce qui de permet au final de générer une arbo dynamiquement.

  2. #22
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    bon je n'ai pas envi de rentré dans la discussion entre nos deux amis posteur.
    C'est dommage, car avoir plusieurs avis sur le fait d'importer un fichier Javascript ou Css en utilisant un chemin dit "physique" au lieu d'une Url serait utile.
    Ce chemin physique sera affiché en clair dans le code source Html, mais ne faut il pas éviter d'indiquer ce genre d'info normalement ?


    De même que si on exploite un Css (avec un style genre fond en image) qui se situe à la racine du site alors que la page se situe à un ou 2 niveau plus loin, ne rencontrerait il pas un problème pour afficher cette image ?


    On peu très bien répondre à ce genre de question sans avoir à utiliser de l'humour qui n'en est pas et étaler sa petite carrière, faut juste argumenter.

  3. #23
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Ce chemin physique sera affiché en clair dans le code source Html, mais ne faut il pas éviter d'indiquer ce genre d'info normalement ?
    Au lieu d'être agressif, tu devrais essayer avant de lancer des affirmations fausses. Le chemin physique n'apparaît absolument pas.
    Citation Envoyé par RunCodePhp Voir le message
    On peu très bien répondre à ce genre de question sans avoir à utiliser de l'humour qui n'en est pas et étaler sa petite carrière, faut juste argumenter.
    Argumenter est important quand cela en vaut la peine, je veux dire quand il y a une réponse et non un agression.

    Toutes nos excuses à Général03 pour ce fils de discussion (j'ai failli écrire digression) qui n'en est pas un. J'espère que tu as trouver un solution à ton problème. @+

  4. #24
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le chemin physique n'apparaît absolument pas.
    A bon ?

    Quant on fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <script type="text/javascript" src="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>js.js"></script>
    <link rel="stylesheet" type="text/css" href="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>css.css" />
    Et qu'ensuite on fait un "code source de la page" de la page HTML, on obtient le chemin physique, non ?

    Un code HTML du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <script type="text/javascript" src="/web/espaceRoot/www/js.js"></script>
    <link rel="stylesheet" type="text/css" href="/web/espaceRoot/www/css.css" />
    C'est ce que j'obtiens en tout cas.


    Ceci dit, ça sera la der des ders, car je n'est pas ce problème pour la simple raison que je n'est pas de problème.

    Bonne glisse

  5. #25
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Toutes nos excuses à Général03 pour ce fils de discussion (j'ai failli écrire digression) qui n'en est pas un. J'espère que tu as trouver un solution à ton problème
    Je ne peux pas modifier mon php.ini ni même mettre un "php_value include_path" dans mon .htaccess car OVH me l'interdit. Donc j'ai opté pour cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set_include_path(ini_get('include_path').PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"]."/monsite/");
    Et lors de mes require pas besoin de spécifier la base car elle est connu de include_path. Le problème est que la fonction set_include_path() n'est valide que pendant l'exécution du script donc je dois insérer cette ligne sur toutes mes pages.
    Pour le JS, même si ça m'embête de faire apparaitre le chemin absolu j'utiliserais ceci quand je devrais aller chercher un fichier commun de ma partie public et admin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script type="text/javascript" src="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>js.js"></script>
    <link rel="stylesheet" type="text/css" href="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>css.css" />
    Sinon mes appels html seront par exemple de cette forme pour appeler du JS de la partie admin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="../js/js.js">
    Conclusion satisfaisante pour répondre au sujet posté ???

  6. #26
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    bonjour Général03,

    plouf, plouf on va essayer de reprendre les choses autrement. Je ne suis pas certain de pouvoir t'apporter une solution, mais on va au moins essayer.

    Si nous reprenons les choses calmement, la variable $_SERVER['DOCUMENT_ROOT'] te retourne un chemin qui parfois est le chemin physique et d'autres fois un chemin relatif dépendant de la configuration de ton serveur (je parle pour Apache, je ne sais pas pour les autres).

    Partant de là, je vais reprendre ton arborescence de départ. Si tu définis un script my_path.php qui décrit cette arboresence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $Script_Path = "/scripts/";
    $Admin_Path = "/admin/";
    ?>
    Depuis tous tes scripts tu ajoute ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    require_once($_SERVER['DOCUMENT_ROOT']."/my_path.php");
     
    ...
    // ici tes appel à tes script ou autres par exemple
    echo "<form method=post action=".$Admin_Path."page2.php.">";
    // Bon ok il n'y a pas de guillemets ... ;-)
    Dis moi si cela ne marche pas ou n'est pas portable ?

  7. #27
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Moi j'ai procédé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $Script_Path = "/scripts/";
    $Admin_Path = "/admin/";
    $Root_Path = $_SERVER['DOCUMENT_ROOT'];
    ?>
    et dans ma page PUBLIC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    //obliger de déterminer un chemin relatif pour aller cherche le fichier de conf
    require_once("./conf/my_path.php");
    require_once($Root_Path."/script1.php");
      
    // script
    require_once($Root_Path.$Script_Path."script2.php");
    et dans ma page ADMIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    //obliger de déterminer un chemin relatif pour aller cherche le fichier de conf
    require_once("../conf/my_path.php");
    require_once($Root_Path."/script.php");
     
    //script
    require_once($Root_Path.$Admin_Path.$Script_Path."script2.php");
    Cette méthode fonctionne et niveau portabilité ca me semble correct puisque s'il on souhaite modifier les dossiers admin ou public il suffit de modifier les variables. Et pour les tests local/production il suffit encore une fois de modifier le fichier contenant les variables.

  8. #28
    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
    Concernant le fichier de config, il y a une méthode très sympatique qui est de le mettre dans un dossier accessible de n'importe ou dans PHP.

    Pour avoir un dossier pareil, il faut venir modifier la config de PHP :
    * Soit avec un .htaccess
    * Soit dans le php.ini
    * Soit avec set_include_path()

    http://fr2.php.net/manual/fr/ini.cor...i.include-path

    Tu peux ainsi écrire dans toutes tes pages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once("conf.php");
    Seul bémol, il n'est pas évident de trouver une manière de configurer un dossier comme celui ci sur un hebergeur gratuit (ou la configuration du .htaccess peut etre désactivée ou bridée). Cependant il me semble que certains proposent cette fonctionnalité d'office avec un dossier spécifique.

    A noter également que ce n'est pas "portable" dans la mesure ou un changement de serveur implique de refaire cette configuration.

  9. #29
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Concernant le fichier de config, il y a une méthode très sympatique qui est de le mettre dans un dossier accessible de n'importe ou dans PHP.

    Pour avoir un dossier pareil, il faut venir modifier la config de PHP :
    * Soit avec un .htaccess
    * Soit dans le php.ini
    * Soit avec set_include_path()
    Réponse
    Je ne peux pas modifier mon php.ini ni même mettre un "php_value include_path" dans mon .htaccess car OVH me l'interdit.
    Cependant il me semble que certains proposent cette fonctionnalité d'office avec un dossier spécifique.
    J'ai trouvé ces infos http://guides.ovh.com/ConfigPhp mais rien de plus !

    A noter également que ce n'est pas "portable" dans la mesure ou un changement de serveur implique de refaire cette configuration.
    Portable signifiant que je prend mon site et je le change d'hébergeur et tout fonctionne sans rien changer ??

  10. #30
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par Général03 Voir le message
    Moi j'ai procédé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $Script_Path = "/scripts/";
    $Admin_Path = "/admin/";
    $Root_Path = $_SERVER['DOCUMENT_ROOT'];
    ?>
    et dans ma page PUBLIC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    //obliger de déterminer un chemin relatif pour aller cherche le fichier de conf
    require_once("./conf/my_path.php");
    require_once($Root_Path."/script1.php");
      
    // script
    require_once($Root_Path.$Script_Path."script2.php");
    et dans ma page ADMIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    //obliger de déterminer un chemin relatif pour aller cherche le fichier de conf
    require_once("../conf/my_path.php");
    require_once($Root_Path."/script.php");
     
    //script
    require_once($Root_Path.$Admin_Path.$Script_Path."script2.php");
    Cette méthode fonctionne et niveau portabilité ca me semble correct puisque s'il on souhaite modifier les dossiers admin ou public il suffit de modifier les variables. Et pour les tests local/production il suffit encore une fois de modifier le fichier contenant les variables.
    Et bien voilà !!
    Nos solutions sont très proches l'une de l'autre. Mais, comme le fait remarquer à juste titre Fladnag, l'inconvient est la méthode d'appel du script de conf. Il doit y avoir mieux mais je ne connais pas. Peut être l'utilisation d'un constante globale ??
    Compte tenu de tes contraintes, je ne vois pas d'autre méthode pour parvenir au résultat.
    Portable signifiant que je prend mon site et je le change d'hébergeur et tout fonctionne sans rien changer ??
    Normalement oui . Mais ce n'est pas toujours possible. L'avantage de cette solution, c'est que cela fonctionne pas mal.
    Il y a surement des choses à redire au niveau sécurité. Mais si personne ne dit rien on fera comme s'il n'y en avait pas

  11. #31
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Peut être l'utilisation d'un constante globale ??
    Justement je m'interdit d'utiliser les variables globales pour raisons de sécurité !!
    Il y a surement des choses à redire au niveau sécurité
    Je ne crois pas que se soit médiocre niveau sécurité en plus maintenant dans mon fichier de conf j'utilise la fonction define() qui renforce la sécurité de mes variables.
    J'attends vos remarques si je raconte des gourdes

  12. #32
    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
    Après avoir fouillé un peu (c'est a dire regarder les 2 premieres réponses de google sur "include_path ovh" ^^), la solution suivante devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set_include_path('.'.PATH_SEPARATOR.get_include_path().PATH_SEPARATOR.'<chemin vers le dossier www>/includes/'.PATH_SEPARATOR);
    Pour trouver le chemin complet, tu dois te connecter en SSH sur ton serveur et trouver ou est le dossier www (avec ls, pwd, etc...)

    L'avantage c'est que tu peux mettre la meme chose au debut de tout tes fichiers (sans ajouter de ../../../)
    L'inconvénient est que ce n'est pas "portable" (oui, portable c'est changement d'hébergeur sans modifier une ligne de code)

    La modification dans .htaccess est désactivée sur OVH, et il n'y a apparement pas de dossier prédéfini. Tu n'a donc plus que cette méthode si tu veux modifier l'include_path

  13. #33
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par Général03 Voir le message
    Justement je m'interdit d'utiliser les variables globales pour raisons de sécurité !!
    Je ne crois pas que se soit médiocre niveau sécurité en plus maintenant dans mon fichier de conf j'utilise la fonction define() qui renforce la sécurité de mes variables.
    J'attends vos remarques si je raconte des gourdes
    Regarde bien ce que j'ai écrit, je te parle d'une CONSTANTE globale et non de Variable(au pluriel), ce qui n'a rien à voir.

  14. #34
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    En effet j'ai opté pour cette solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set_include_path('.'.PATH_SEPARATOR.get_include_path().PATH_SEPARATOR.'<chemin vers le dossier www>/includes/'.PATH_SEPARATOR);
    Le problème est que cette fonction fonctionne durant le script en cours, et qu'après l'include_path reprend sa valeur initiale. Donc je suis obligé de mettre cette ligne dans mes pages PHP et dans les scripts qui sont appelés depuis mes pages PHP. Ça fait un peu lourd de répéter sans cesse cette ligne mais pas d'autres solutions !!!

    Merci pour votre aide

  15. #35
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Mis à part adopter une variable globale (ce que tu ne veux pas et à juste titre), je ne vois pas d'autres solution que d'intégré cette ligne en début de toute tes pages de code.
    J'ai bien dit je ne vois pas, ce qui ne veut pas dire je garantisse que d'autre solution n'existent pas

    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. nom de fichier dynamique
    Par F.Victoire dans le forum Delphi
    Réponses: 5
    Dernier message: 23/06/2006, 14h31
  2. Inclure un fichier dynamique
    Par cyrill.gremaud dans le forum Langage
    Réponses: 12
    Dernier message: 16/03/2006, 15h04
  3. [HTML] include('fichier.swf')
    Par carter15_2001 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 27/02/2006, 12h11
  4. Execution / include fichier html
    Par VoLc0m dans le forum ASP
    Réponses: 12
    Dernier message: 20/05/2005, 11h29
  5. include fichier distant
    Par noarno dans le forum ASP
    Réponses: 2
    Dernier message: 05/04/2004, 16h47

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