LiL'SkiSo Posté 21 Juin 2006 Posté 21 Juin 2006 Salut à tous ! Je viens de rencontrer un problème. J'ai créé une page qui fait un include vers une autre page (dont je n'ai pas mis de balise <HTML><HEAD><BODY>...) et il m'affiche une erreur. Voici mon code : include("header.php");OpenTable();echo '<font color="#0033cc" face="Verdana">';if (empty($nom)) { echo '<font color="#FF0000" face="Verdana"><b><blink>Impossible d\'afficher la page. L\'escadron n\'a pas été sélectionné.</blink></b></font>'; }if (isset($nom)) { include("$nom.php") or die ("L'Escadron demandé n'existe pas"); }echo '</font>';CloseTable();include("footer.php"); Et voici l'erreur : Warning: main(1) [function.main]: failed to open stream: No such file or directory in /mnt/104/free.fr/9/9/va.skyjet/modules/Escadrons/index.php on line 43Warning: main() [function.include]: Failed opening '1' for inclusion (include_path='/mnt/104/free.fr/9/9/va.skyjet/include:.:/usr/php4/lib/php') in /mnt/104/free.fr/9/9/va.skyjet/modules/Escadrons/index.php on line 43 Quelqu'un sait-il d'où vient le problème ?? Merci bcp !
dièse Posté 21 Juin 2006 Posté 21 Juin 2006 (modifié) Ne sachant pas quelle est la ligne 43 de ton fichier il va être difficile de te répondre . Sinon il y au moins 2 problèmes dans ton code : - Tu testes si la variable $nom est vide, auquel cas tu affiches une erreur. En faisant ça tu déclares la variable $nom. Ensuite tu testes avec la fonction "isset()" si la variable nom a été déclarée, cette condition sera donc toujours remplie . Essaie plutôt : if(!isset($nom)) {echo 'erreur';/*....*/}else{include($nom);/*....*/} - Ensuite attention à l'inclusion à partir de variable comme tu le fais. C'est la faille de sécurité la plus courante en php . Si tu travailles avec la directive php REGISTER_GLOBALS a ON, et que n'importe qui peut appeler ton fichier de la façon suivante : "http://www.tonsite.com/index.php?nom=blablabla", c'est très risqué Modifié 21 Juin 2006 par dièse
Jeromnimo Posté 21 Juin 2006 Posté 21 Juin 2006 Est-ce que ton fichier à inclure se trouve dans le meme repertoire que le fichier ou tu fais le include ? SI tu precedes ton include d'un @ est-ce que tous les warning disparaissent ?
LiL'SkiSo Posté 21 Juin 2006 Auteur Posté 21 Juin 2006 Le fichier se trouve dans le même répertoire, et lorsque je met un @ ce qui donne if (isset($nom)){ @include("$nom.php") or die ("L'Escadron demandé n'existe pas");} les messages d'erreur disparaissent mais la page $nom.php ne s'affiche toujours pas. Pourtant je suis sûr qu'elle existe (c'est une page qui s'apelle LFQI.php et donc j'apelle mon lien -http://www.monsite.fr/index.php?nom=LFQI) Merci pour vos réponses !
QuentinC Posté 21 Juin 2006 Posté 21 Juin 2006 As-tu vérifié le contenu de la variable $nom avant l'inclusion ? Ca peut paraître bête comme conseil, mais souvent c'est comme ça qu'on s'aperçoit d'un bug.
LiL'SkiSo Posté 21 Juin 2006 Auteur Posté 21 Juin 2006 Oui, j'ai fais un echo juste avant l'inclusion et il contient bien ce que j'avais défini
simous Posté 21 Juin 2006 Posté 21 Juin 2006 Bonsoir, Juste au passage, as-tu bien fait attention aux majuscules/minuscules dans le nom de ta variable/fichier ?
LiL'SkiSo Posté 22 Juin 2006 Auteur Posté 22 Juin 2006 Oui, il y'a bien les majuscules dans la variable et dans le nom du fichier
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant