Journal intégrer une page HTML ( suite )

Posté par  .
Étiquettes : aucune
0
7
sept.
2003
A force de chercher, j'ai trouvé un manière plus agréable d'intégrer une page html ( ou autre dans une autre ) grâce aux fonctions "include" et "require" de php.

Seulement voila, la page que j'intègre se trouve dans un répertoire différent de celui de la page principale affichée. De ce fait, la page intégrée utilise le répertoire parent comme référence, et cela engendre des erreurs de liens.

Comment puis-je lui forcer la main en lui indiquant l'arborescence exacte où elle se trouve ?
  • # Re: intégrer une page HTML ( suite )

    Posté par  (site web personnel) . Évalué à 1.

    Avec chdir ?
    • [^] # Re: intégrer une page HTML ( suite )

      Posté par  . Évalué à 1.

      je viens de faire l'essai. Ca fonctionne pour la première page, mais pas pour les suivantes. Je pensais bien pourtant que cela fonctionnerai ?

      J'avais une ligne du type <?php require "doc_en_ligne/index.html"; ?>

      J'ai transformé tout ca en :

      >?php
      if (chdir("doc_en_ligne"))
      {
      require "index.html";
      }
      ?>

      et la page doc_en_ligne/index.html est bien chargée. J'ai donc pensé que le pointeur de dossier etait sur "doc_en_ligne" et que toutes les pages appelées par index.html, qui sont normalement appelées dans le répertoire courant, fonctionneraient. Et pourtant non ?

      Je continue à chercher.

      Merci pour ta réponse.
      • [^] # Re: intégrer une page HTML ( suite )

        Posté par  (site web personnel) . Évalué à 1.

        Ah j'avais pas fait gaffe, tu inclus du html pas du php et le probleme est sur les liens.
        Une solution serait d'indiquer dans le header que BASE est /tonfichier.php/ et après adans le php de regarder la page demandée mais il faut faire attention que les gens ne demandent pas une url ou un fichier genre ../../../../etc/passwd ...
      • [^] # Re: intégrer une page HTML ( suite )

        Posté par  . Évalué à 1.

        Heu, c'est une idée peut etre tres bete, mais pourquoi tu ne donnes pas à tous tes appels de fichier des chemins absolus à partir de la racine du site donnée dans apache :

        Tu veux integrer "index.html" du dossier doc_en_ligne ?

        require "/doc_en_ligne/index.html";

        Pour peu que le dossier doc_en_ligne soit bien à la racine du site.

        En fait de la meme facon que pour le lien SRC du tag IMG, le plus simle est de donner le lien absolu, et pas relatif à la page d'appel.


        Bon arretez moi si je dis une grosse betise, il est un peu tard, mais je ne vois pas la difficulté... ;-/
        • [^] # Re: intégrer une page HTML ( suite )

          Posté par  . Évalué à 0.

          Il est effectivement tard, et j'en peux plus. Je prends note des remarques et essaierai demain.

          Encore merci pour tous vos commentaires éclairés.
  • # Re: intégrer une page HTML ( suite )

    Posté par  (site web personnel) . Évalué à 1.

    J'ai deux stratégies :
    - Pour tous les scripts d'une même "application", les pages maîtres sont au même niveau, et les includes sont dans un sous-repertoire "includes".

    -Pour les librairies mutualisables, je stocke dans une variable le chemin relatif vers le répertoire contenant les librairies, et donc pour l'inclusion je concatène ce chemin de base avec le nom du fichier à inclure.

    Note : le chemin passé en paramètre de l'include est toujours relatif au script maître
    • [^] # Re: intégrer une page HTML ( suite )

      Posté par  . Évalué à 1.

      Et plutôt que de stocker dans une variable, et il parfois plus pratique d'utiliser des constantes. En effet, pour cet exemple, les chemins des librairies, n'ont probablement besoin d'être modifiées lors de l'execution du script/application.

      ex:
      define ("_PATH_", "/pages/html/");    /* Avec les _, ca le fait encore plus ;-) */
      echo _PATH_;

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.