Erreur avec un INCLUDE

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Erreur avec un INCLUDE

par albat » 16 mars 2005, 16:12

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

par Ripat » 16 mars 2005, 15:55

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.

par albat » 16 mars 2005, 09:26

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... :?

par Ripat » 16 mars 2005, 06:53

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...

Erreur avec un INCLUDE

par albat » 16 mars 2005, 00:52

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: