Location et include : question sur le chemin en absolu [resolu]

Location et include : question sur le chemin en absolu [resolu] - PHP - Programmation

Marsh Posté le 06-01-2011 à 10:26:21    

Bonjour
 
je veux faire une redirection vers une page. J'ai trouvé l'instruction  
 
header('Location: etc...');
 
Ca fonctionne. Mais j'ai quelques galères tout de même car parfois ça plante à cause du cheminabsolu ou relatif.  
 
Donc je suis parti pour faire des  
 
header('Location: ../../index.php?section=accueil');  (par exemple).
 
Mais je lis ici et là qu'il vaut mieux privilégier des chemin absolus. Mais comme je suis en local pour l'instant sur mon ordi, et que forcément l'adresse absolue sera différente chez mon fournisseur, comment écrire cette adresse absolue dans cette instruction pour que ca fonctionne en local et chez mon hébergeur ?  
 
 
Et j'ai le même souci avec les "include".  
 
Merci de votre aide sur le sujet.  
 
Dominique
NB : je débute la-dedans , merci de votre tolérance....

Message cité 1 fois
Message édité par domi_bu le 07-01-2011 à 20:48:09
Reply

Marsh Posté le 06-01-2011 à 10:26:21   

Reply

Marsh Posté le 06-01-2011 à 11:14:52    

domi_bu a écrit :

header .... Et j'ai le même souci avec les "include"

Oui, bien sûr, cela concerne, header, include, include_once, require, require_once, et aussi les chemin dans les balises HTML, <a href=..>, <img src=...>, etc. C'est donc un problème assez général, et vous avez raison de vous y intéressez.

domi_bu a écrit :

Mais je lis ici et là qu'il vaut mieux privilégier des chemins absolus.

Ah bon ?  [:a_bon] Eh bien, moi qui suis un vieux programmeur, je vous écris le contraire, qu'il vaut mieux privilégier les chemins relatifs.
 
Pourquoi ? Parce que le chemin absolu dépend de la configuration du serveur. Or, dans les entreprises, cette configuration est confiée à une équipe dite "système" ou "de production", qui fait parfois des changements sans vous avertir, notamment les adresses IP et les répertoires. De plus, il y a de temps en temps, des changements de machines, ou des changement de systèmes d'exploitation, qui peuvent entraîner des changements dans l'arborescence des répertoires. Et votre application peut être portée d'une machine à une autre pour des besoins particuliers. Bref, vous ne maîtrisez pas le chemin absolu, ce sont d'autres personnes qui ont cette maîtrise. Donc, si vous avez confiance dans les autres, donnez leur votre carte de crédit et son code. Sinon, soyez méfiant, et basez vous sur des références relatives.

domi_bu a écrit :

NB : je débute la-dedans , merci de votre tolérance....

Désolé, mais ici c'est un forum où s'expriment à la fois des personnes bienveillantes et polies, et aussi des brutes sauvages qui emploient des gros mots et insultent ceux qui posent des questions, ainsi que ceux qui y répondent. Donc, n'attendez pas d'indulgence sur ce forum. Si vous cherchez un forum plus poli, aller voir du côté des forums en anglais.


Message édité par olivthill le 06-01-2011 à 11:16:38
Reply

Marsh Posté le 06-01-2011 à 11:44:48    

Bonjour Olivthill
 
Merci pour la réponse. Je suis d'accord, il ne faut pas se fier au chemin absolu. Mais je peux faire de l'absolu à partir de la racine de mon site, correct ? C'est plus de ce côté là que je cherche.  
 
Et comme je cherche en même temps à faire proprement en MVC, j'avoue que je galère avec tous ces chemins vers tous ces répertoires....Et j'ai l'impression que si je supprimais tous ces "../../.." que je mets un peu partout ça irait sans doute mieux. D'où ma question.  
 
Mais par contre comment je peux faire un include (ou un location) en précisant le chemin complet à partir de la racine du site ?  
 
Dominique

Reply

Marsh Posté le 07-01-2011 à 20:49:12    

salut
 
en fait il se baser sur le premier "include" qui est fait. C'est lui qui est la référence de tout. A parit de là, tout est simple ....mais fallait le savoir.
Dominique

Reply

Marsh Posté le 08-01-2011 à 11:53:36    

Il y a d'autres solutions si tu veux éviter les "../../../../" illisibles :
 
Exemple : avec dirname(__FILE__), tu extrais le repertoire de ton bootstrap (le fichier qui appelle le FrontController/Dispatcher) et ensuite tu concatènes tes chemins d'include à partir de lui.


Message édité par smaragdus le 08-01-2011 à 11:54:17
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed