Php: pb include
phpilp
-
mjnetservice Messages postés 3 Statut Membre -
mjnetservice Messages postés 3 Statut Membre -
salut
un pti pb, dans une de mes pages(index.php) je fai un include du style:
include($www.'/public/seeCocktail.php?name='.$_GET['name']);
tout marche bien si name ne contient pas d espace, dans le cas contraire, php m affiche:
Warning: main(xxxxxxxx/public/seeCocktail.php?name=marche pas): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/xxxxxxx/index.php on line 62
Warning: main(): Failed opening 'xxxxxxxxx/public/seeCocktail.php?name=marche pas' for inclusion (include_path='.:/usr/local/lib/php') in /home/xxxxxxxxx/index.php on line 62
des sugestions?
Merci de votre attention
un pti pb, dans une de mes pages(index.php) je fai un include du style:
include($www.'/public/seeCocktail.php?name='.$_GET['name']);
tout marche bien si name ne contient pas d espace, dans le cas contraire, php m affiche:
Warning: main(xxxxxxxx/public/seeCocktail.php?name=marche pas): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/xxxxxxx/index.php on line 62
Warning: main(): Failed opening 'xxxxxxxxx/public/seeCocktail.php?name=marche pas' for inclusion (include_path='.:/usr/local/lib/php') in /home/xxxxxxxxx/index.php on line 62
des sugestions?
Merci de votre attention
2 réponses
-
Salut,
Il ne faut pas d'espace dans une url. Il faut donc adapter la chaine pour une url avec urlencode():
include($www.'/public/seeCocktail.php?name='.urlencode($_GET['name']));
Sinon tu arrives à passer une variable par url dans un include? Il ya quelqu'un qui n'y arrivait pas il ya quelques temps... -
Bonjour,
Je suis en train de monter mon site perso en php.
J'ai créé une page "index.php" englobant des includes des zones: 'partie1.php' (haut) 'partie2.php' (bas) et, pour la partie centrale, elle est gérée par un include de sécurité.
Voici le code:<body> <!-- -------------------------- haut ------------------------------ !--> <?php include("theme/partie1.php"); // on appelle le fichier ?> <!-- -------------------------- centre ---------------------------- !--> <?php // si votre site n'est pas à la racine du serveur, vous pouvez avoir besoin de dire OU se trouve la page index.php $_chemin = '/'; // la page par defaut, si les valeurs fournies sont incorrect : $page_defaut = 'theme/accueil'; // on recupere la valeur passé dans l'url : if(isset($_GET["page"])) $page=$_GET["page"]; else $page=$page_defaut; //Enlevons les caractères html $page=htmlentities($page, ENT_QUOTES); //Si on a des répertoires que l'on ne veut pas accéder, un les liste ici : $repProteger=array('admin', 'commun', 'images', 'include', 'theme', 'popup'); $temp=split('/',$page); if(in_array($temp[0],$repProteger)){ $page=$page_defaut; } //Si jamais qq tente de penetre dans le serveur en utilisant des ./ ou :/ if(eregi("(:/)|(./)",$page)){ $page=$page_defaut; } //Testons si la page demandé existe bien en local if(file_exists($_SERVER["DOCUMENT_ROOT"].$_chemin.'/'.$page.'.php')) include($page.'.php'); elseif(file_exists($page_defaut.'.php')) include($page_defaut.'.php'); else exit("Erreur : La page par defaut n'existe pas."); ?> <!-- ------------------------ bas -------------------------------- !--> <?php include("theme/partie2.php"); // on appelle le fichier ?> </body>
Mon souci:
La page 'accueil.php' apparaît bien dans la partie centrale dès l'ouverture du site. Cependant, lorsque je désire charger une autre page, à la place, rien ne se produit; le chemin étant bien spécifié dans la barre url du site.
La page appelée est: "page1.php' (se situant à la racine du site dans le dossier "charger").
Cette action d'appel est encodée dans 'partie1.php'; dont voici le code:
<body> <div id="global"> <div id="header"></div> <div id="barre"> <div id="search"> zzz </div> <div id="menuhrzHaut"> <ul id="menuhrz"> <li><a href="index.php" title="Accueil">Retour à l'accueil</a> - </li> <li><a href="index.php?page=charger/page1" title="page1">Mon C.V.</a> - </li> <li><a href="">Contact</a> - </li> <li><a href="">Espace privé</a></li> </ul> </div> </div> <div id="contentarea"> <div id="coleft"><a href="">test 1</a></div>
Ma question: Où se situe le problème ?
Merci d'avance pour votre aide précieuse.
Cordialement...