Erreur include()

msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013 - 13 févr. 2013 à 22:45
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 - 16 févr. 2013 à 20:22
salut ça fait un mois que je galère sur ce code . quelque reponse par ci par la mais j'ai pas réussi a corriger mon erreur donc je suis bloqué.
voici l'erreur que je reçois :
( ! ) Warning: include() [function.include]: Filename cannot be empty in C:\wamp\www\GLOBAL-AEIT_BASE\index.php on line 33
Call Stack
# Time Memory Function Location
1 0.0019 379512 {main}( ) ..\index.php:0

( ! ) Warning: include() [function.include]: Failed opening '' for inclusion (include_path='.;C:\php\pear') in C:\wamp\www\GLOBAL-AEIT_BASE\index.php on line 33
Call Stack
# Time Memory Function Location
1 0.0019 379512 {main}( ) ..\index.php:0


voici mon code :
<?php
include('functions/connect.php');//Convertit tous les caractères éligibles en entités HTML
if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')){
// Inclure page courante
include ('functions/'.$_GET['page'].'.func.php');
$pages = scandir('pages');//Liste les fichiers et dossiers le un dossier pages
}else

if(!empty($page) && in_array($_GET['page'].".php",$pages)){ //in_array() verifie si "page".php est contenu dans le dossier $pages
     $content = 'pages/'.$_GET['page'].".php";
}else{
header('Location :index.php?page=login');
}


if( isset($_SESSION['pseudo']) && $page !='global_aeit' ){// La fonction isset() permet de déterminer si une variable est bien définie
header("location:index.php?page=global_aeit");
 }
?> 

19 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
13 févr. 2013 à 23:23
Bonjour,

Le message est clair pourtant, Tu tentes d'inclure un fichier sans en préciser le nom.

Quelle est ta ligne 33 du fichier index.php ?
Et quelles sont les lignes entourant ?
As-tu regardé les valeurs transmises à la fonction include en erreur ?

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
14 févr. 2013 à 00:12
merci de bien vouloir m aider . voici la ligne 33.
 include($content);

j'ai tout essayer mais j arrive pas
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
14 févr. 2013 à 13:49
quelqu'un a t il deja utilisé ce code qu'il regarde et me dit ce que je dois faire.
merci d'avance
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
14 févr. 2013 à 13:55
Bonjour,

Dans quel contexte est cette ligne ?
Comment est remplis la variable $content ?

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
14 févr. 2013 à 14:05
voici tout mon code:

<?php
include('functions/connect.php');//Convertit tous les caractères éligibles en entités HTML
//$page = htmlentities($_GET['page']);

if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')){
$page = htmlentities($_GET['page']);
include('functions/'.$page.'.func.php');
}
$pages = scandir('pages');//Liste les fichiers et dossiers le un dossier pages
if(!empty($page) && in_array($_GET['page'].".php",$pages)){ //in_array() verifie si "page".php est contenu dans le dossier $pages
     $content = 'pages/'.$_GET['page'].".php";
}else{
header('Location :index.php?page=login');
}
if( isset($_SESSION['pseudo']) && $page !='global_aeit' && $page !='global_a' && $page !='global_e' && $page !='global_i' && $page !='global_t'  && $page !='global_aeit_accueil' && $page !='acadomia' && $page !='college' && $page !='primaire' && $page !='coursparticulier' && $page !='contact'  && $page !='secondaire' && $page !='superieur' && $page !='communication' && $page !='expertise' && $page !='register' && $page !='login' && $page !='formulaire' && $page !='formulaire_ens' && $page !='list_ens_pagination' && $page !='list_Apprenant_pagination' && $page !='modification2_A' && $page !='modification3_A' && $page !='modification11-A' && $page !='modification3' && $page !='modification2' && $page !='modification11'){// La fonction isset() permet de déterminer si une variable est bien définie
header("location:index.php?page=global_aeit");
 }
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="../css/style.css" />

<title>GLOBAL-AEIT</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

 

<?php
  include($content);
?>
   

  



</html>
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
14 févr. 2013 à 14:23
voici ce qui c trouv a la ligne 32 :

<?php
  include($content);
?>
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
14 févr. 2013 à 15:29
Salut, on va faire ceci pour vérifier les valeurs retournées.
Peux-tu faire un print_r() ici :
<?php
*...
echo '';
print_r($_GET);
echo '

';
if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')){
*...


et un autre ici :
<?php
*...
$pages = scandir('pages');//Liste les fichiers et dossiers le un dossier pages
echo '';
print_r($pages);
echo '

';
*...


et me retourner les array en rouge afficher à l'écran S.T.P.

stéph
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
15 févr. 2013 à 09:00
On dirait que tu t'es rendu compte de tes erreurs.
Laisser des traces avec un echo ou un print_r est très efficace.

stéph
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
16 févr. 2013 à 17:13
merci de m'aider . j'ai pas encore trouvé mes erreur comme on m'aidait pas j'etais un peu decouragé.
après avoir fait les print_r(), ça m'affiche :

Array
(
)

et les erreurs :
Warning: include() [function.include]: Filename cannot be empty in C:\wamp\www\GLOBAL-AEIT_BASE\index.php on line 37

Warning: include() [function.include]: Failed opening '' for inclusion (include_path='.;C:\php\pear') in C:\wamp\www\GLOBAL-AEIT_BASE\index.php on line 37
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
16 févr. 2013 à 17:44
Salut, le deuxième print_r ne s'affiche pas ?
Étrange, car la condition est que le fichier doit exister, file_exists($_GET['page'].'.php').
Donc, si il ne génère pas d'erreur, le deuxième print_r doit être affiché.

Pour le premier, il est vide. Cela veux dire que $_GET['page'] n'existe pas.
dans l'url : index.php?page=xxx

Tu dois ajouter le paramètre page dans l'URL avec le nom du fichier sans son extension.
Car par la suite en condition, file_exists($_GET['page'].'.php')

Tu as fait cela ?

Un petit plus, ajoute un echo 'print1'; ou echo 'print2'; devant chaque print_r pour vérifier quel print_r est vide.

stéph
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
16 févr. 2013 à 18:04
oui le 2ième print_r n'affiche rien . je sai pas pourquoi et le premier affiche un tableau vide.

et j'ai pas bien suivi ce que tu me recommande de faire

voi mon code php avec les print_r

<?php
include('functions/connect.php');//Convertit tous les caractères éligibles en entités HTML
//$page = htmlentities($_GET['page']);
echo '';
print_r($_GET);
echo '

';
if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')){
$page = htmlentities($_GET['page']);
include('functions/'.$page.'.func.php');
$pages = scandir('pages');//Liste les fichiers et dossiers le un dossier pages
echo '';
print_r($pages);
echo '

';
if(!empty($page) && in_array($_GET['page'].".php",$pages)){ //in_array() verifie si "page".php est contenu dans le dossier $pages
     $content = 'pages/'.$_GET['page'].".php";
}else{
header("Location:index.php?page=login");
}
if( isset($_SESSION['pseudo']) && $page !='global_aeit'){// La fonction isset() permet de déterminer si une variable est bien définie
header("location:index.php?page=global_aeit");
 }
 }
?> 
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
16 févr. 2013 à 18:14
je viens de faire une modification et cette fois les 2 print_r affichent :
- pour print_r($_GET):
Array
(
[page] => login
)


- pour print_r($pages) :

Array
(
[page] => login
)

Array
(
[0] => .
[1] => ..
[2] => enseignante.php
[3] => expertise.php
[4] => facture.php
[5] => formation2.jpeg
[6] => formulaire.php

)

voici le code modifier .
<?php
include('functions/connect.php');//Convertit tous les caractères éligibles en entités HTML

echo '';
print_r($_GET);
echo '

';

$page = htmlentities($_GET['page']);
include('functions/'.$page.'.func.php');
$pages = scandir('pages');//Liste les fichiers et dossiers le un dossier pages
echo '';
print_r($pages);
echo '

';
if(!empty($page) && in_array($_GET['page'].".php",$pages)){ //in_array() verifie si "page".php est contenu dans le dossier $pages
     $content = 'pages/'.$_GET['page'].".php";
}else{
header("Location:index.php?page=login");
}
if( isset($_SESSION['pseudo']) && $page !='global_aeit' ){// La fonction isset() permet de déterminer si une variable est bien définie
header("location:index.php?page=global_aeit");
 }

?> 
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
16 févr. 2013 à 18:18
Super, donc si tu supprimes les traces que l'on a ajouté, cela fonctionne ?

Si oui, c'était quoi l'erreur ? Le paramètre dans l'url ?

stéph
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
16 févr. 2013 à 18:30
vraiment je sais pas c'est just
if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')){

que j'ai supprimé et ça marche . c'est bisard . du coup je sais pas ce que j'ai fait d’extra et ça marche
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
16 févr. 2013 à 18:44
Et si tu remets ce que tu as supprimé, mais tu ajoutes le path, donc le nom du dossier, voir même le bon chemin vers le dossier car peut-être qu'uniquement 'pages/'.$_GET['page'].'.php' ne sera pas suffisant.

<?php
if(isset($_GET['page']) AND file_exists('pages/'.$_GET['page'].'.php')){ 


stéph
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
16 févr. 2013 à 19:08
coool je viens de rajouter comme tu la suggéré ça passe aussi. est-ce que cette ligne est necessaire . si oui pkoi
if(isset($_GET['page']) AND file_exists('pages/'.$_GET['page'].'.php')){ 
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
16 févr. 2013 à 19:26
Oui, cette ligne est nécessaire car par sécurité dans l'expression if, tu y fait un isset sur la clé page dans la variable $_GET, elle détermine si une variable est définie et est différente de NULL, si elle est différente de NULL, elle retourne true. Et tu fais également avec la fonction file_exists, une vérification sur l’existence d'un fichier ou d'un dossier, et si c'est le cas, elle retourne true.
Si l'expression ou complète retourne true, tu as accès à l'instruction.

stéph
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
16 févr. 2013 à 19:53
merci pour ton aide . grâce toi je peu poursuivre mes codes.
vraiment merci .
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
16 févr. 2013 à 20:22
Avec plaisir :)

stéph
0
Rejoignez-nous