Php: pb include

phpilp -  
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

2 réponses

  1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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
  2. mjnetservice Messages postés 3 Statut Membre
     
    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