Aller au contenu

Sujets conseillés

Posté

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 43

Warning: 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 ;) !

Posté (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 : &quot;http://www.tonsite.com/index.php?nom=blablabla", c'est très risqué ;)

Modifié par dièse
Posté

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 ?

Posté

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 ;) !

Posté

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.

Posté

Bonsoir,

Juste au passage, as-tu bien fait attention aux majuscules/minuscules dans le nom de ta variable/fichier ?

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...