Page 1 sur 1

Erreur avec un INCLUDE

Posté : 16 mars 2005, 00:52
par albat
Bonsoir,

J'ai crée une page footer.php.
$cible = (isset($_GET['cible']) ? $_GET['cible'] : 0);
switch ($cible)
       { case 0  : $footer_content  = '0...'; break;
         case 1  : $footer_content  = '1...'; break;
         default : $footer_content  = '999...'; break;
       }
echo $footer_content;
qui fontionne très bien lorsque je tape son url directement.


J'ai ensuite créé une page accueil.php qui appelle footer.php.
include("footer.php?cible=1");
Et là, ça ne marche plus.
Warning: main(footer.php?cible=1): failed to open stream: No such file or directory in c:\easyphp17\www\accueil.php on line 68
Warning: main(): Failed opening 'footer.php?cible=1' for inclusion (include_path='.;C:\EasyPHP17\php\pear\') in c:\easyphp17\www\accueil.php on line 68
Je suis sûr que c'est un truc tout con, mais je ne le vois pas (j'ai honte !)
Merci d'enlever la suie de mes yeux ! :wink:

Posté : 16 mars 2005, 06:53
par Ripat
Bonjour,

Comme tu as écrit ton include, il va rechercher un fichier nommé footer.php?cible=1.

Si tu veux travailler avec un fichier distant tu dois indiquer à la fonction include que tu souhaites le rechercher par http (tu es obligé à cause du get).

Essaye
include('http://chemin/vers/doc/root/footer.php?cible=1');

Pour autant que allow_url_fopen soit on dans php.ini...

Posté : 16 mars 2005, 09:26
par albat
Effectivement, il faut indiquer le chemin HTTP absolu lorsque j'ajoute un paramètre dans l'URL.
include("footer.php");                             // OK
include("footer.php?cible=1");                     // Erreur !
include("http://127.0.0.1/footer.php");            // OK
include("http://127.0.0.1/footer.php?cible=1");    // OK
Merci ! =D>
Si tu veux travailler avec un fichier distant tu dois indiquer à la fonction include que tu souhaites le rechercher par http (tu es obligé à cause du get).
C'est ça que je ne comprends pas bien... :?

Posté : 16 mars 2005, 15:55
par Ripat
Si tu veux travailler avec un fichier distant tu dois indiquer à la fonction include que tu souhaites le rechercher par http (tu es obligé à cause du get).
C'est ça que je ne comprends pas bien... :?
Si tu ne précises pas de protocole avant le nom de ton fichier, il va simplement l'ouvrir. Dans ton cas il essayera d'ouvrir un fichier "footer.php?cible=1" qui n'existe pas.

Par contre, si tu mets un protocole (et son chemin d'accès), le include va se dire, tiens, albat veut que j'exécute un fichier php (avec passage de variable par get)!:wink:

La doc précise ceci:
Si les Gestionnaires d'URL sont activés dans PHP (ce qui est le cas par défaut), vous pouvez localiser le fichier avec une URL (via HTTP ou bien avec un gestionnaire adapté : voir Annexe L pour une liste des protocoles), au lieu d'un simple chemin local. Si le serveur distant interprète le fichier comme du code PHP, des variables peuvent être transmises au serveur distant via l'URL et la méthode GET. Ce n'est pas, à strictement parler, la même chose que d'hériter du contexte de variable. Le fichier inclus est en fait un script exécuté à distance, et son résultat est inclus dans le code courant.

Posté : 16 mars 2005, 16:12
par albat
Si tu ne précises pas de protocole avant le nom de ton fichier, il va simplement l'ouvrir.
Dans ton cas il essayera d'ouvrir un fichier "footer.php?cible=1" qui n'existe pas.
Par contre, si tu mets un protocole (et son chemin d'accès), le include va se dire :
"Tiens, albat veut que j'exécute un fichier php (avec passage de variable par get)!" :wink:
L'est pas franchement perspicace... :?

En tout cas, mille mercis pour ta réponse et ton explication.
Mon erreur prouve bien que même un éléphanteau se trompe. :langue: :lol:

Éléphanteau... Trompe... Bon, laissez tomber. Pas grave... :-s