Php: pb include

Fermé
phpilp - 25 janv. 2005 à 00:54
mjnetservice Messages postés 3 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 29 octobre 2007 - 29 oct. 2007 à 14:57
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
A voir également:

2 réponses

kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
25 janv. 2005 à 09:36
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...
0
mjnetservice Messages postés 3 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 29 octobre 2007
29 oct. 2007 à 14:57
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...
0