PHP fonction include via URL

Résolu
Bonjour,
Je suis actuellement entrain de développer un site WEB via MAMP, en utilisant PHP, MySQL etc...
Le site se compose d'une page accueil "page1" dans laquelle j'inclus un corps, un menus, l'entete et le pied de page qui se trouve dans d'autre page (via la fonction include) . Le positionnement, couleur, police etc.. se gere dans une CSS séparé.

Pour le corps ca ressemble a ceci;

<div id="corp">
<?php
// J' inclus la page
include("page6.php");
?>
</div>

Mon problème est le suivant , je désire utilisé la possibilité de changer la page inclus dans le corp via un lien qui se trouve dans mon menus mais sans avoir a refaire une page complète dans laquelle je remettrai tout les includes précédant.

Après quelque recherches, je trouve une fonction ;
(merci M@teo21 :) )

<div id="corp">
<?php
$page = $_GET['page'];
include("$page.php");
?>
</div>

Que je place dans ma page d'accueil "page1" , je modifie les liens dans mon menus en conséquence:
par exemple;
<a href="page1.php?page=page2.php">

Lorsque je lance ma page d'accueil "page1" et que je clique dans mon liens, l'URL
http://localhost:80/A%20travailler/page1.php se transforme bien en
http://localhost:80/A%20travailler/page1.php?page=page2.php .

Mais la page ne s'inclue pas! Je suppose que je fait mal un truc ou que j'ai oublié quelque chose , mais je suis un peu peaumé.
Auriez vous une idée? Merci de votre aide!!!
Mahara
Configuration: Mac OS X
Firefox 3.5.5
MAMP 1,8,3 PHP 5

5 réponses

  1. tu peux inclure des fichiers distants mais les variables ne seront pas propagées
    1. Bonjour

      Si tu mets dans ton url ?page=page2.php
      et que ton code fait
      include("$page.php");
      alors tu essayes d'inclure page2.php.php
      tu mets php dans l'url ou dans l'include, mais pas 2 fois...
      1. pas besoin des " quand il y a une variable

        include("$page.php");


        ensuite une grosse erreur
        $page = $_GET['page'];
        include("$page.php");


        ta variable c'est $page donc c'est celle la qu'il faut utiliser dans ton include , pas $page.php puisque le $_GET va bien recupérer page2.php par exemple

        php devrait te sortir une erreur mais elles ne sont peut être pas activée

        vas voir dans le php.ini de MAMP il faut display_error=on

        ensuite il faut tester que la variable existe
        et utliser la variable passée par l'URL est un énorme trou de sécurité, qq un de mal intentionné peut remplacer par n'importe quoi , alors verifies que ce que tu reçoit est bien des pages autorisées

        <div id="corp">
        <?php
        if(isset($_GET['page'])) { //on teste que la variable est bien passée par l'url
            //ensuite on verifie que la valeur reçue est bien une page  que tu autorises
            if($_GET['page']=='page2.php' || $_GET['page']=='page3.php'  || $_GET['page']=='page4.php' || $_GET['page']=='page6.php'){
                  $page =htmlentities( $_GET['page']); //evite les codes malicieux
           }else{
               $page =page_accueil.php; //par exemple
           }
        }else{
           $page =page_accueil.php; //par exemple
        }
        include($page);
        ?>
        </div> 
        
        1. include("$page.php"); n'est pas une erreur de syntaxe.
          C'est la même chose que include ($page.'.php');
          Là où il y a un problème, c'est que le nom de fichier est incorrect si $page se termine par .php
          1. GENIAL!!! Ca marche !!!

            Un grand merci a vous ! :):)

            En effet j'avais remarqué la faille mais j'avais pris le partie de gerer un probleme un a la fois!!!

            Mahara