PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-11-2009 12:46:32

zoulouseb
Membre
Inscription : 13-10-2009
Messages : 6

faire un include dans une page elle meme en include

bonjour bonjour à tous,

sur mon site j'ai un page index avec differrent include, haut, bas, menu, et la partie centrale qui varie en fonction du lien cliqué.

est il possible que le fichié inclu au milieu contiennent lui aussi un include variable a fonction des liens qui sont sur sa page à lui

(oui oui je sais pas facil à expliquer et a comrendre)

voici un schéma

index.php  include -haut.inc.php
                          - menu.inc.php
                          - bas.inc.pp
                          -copies.inc.php 

dans copies.inc.php je voudrais faire un include de color.inc.php

est ce possible ???,

car tout ce que j'ai essayé jusqu'a présent plante.

ce que j'ai c'est le fichier copies qui s'insere en boucle jusqu'a saturation de la mémoire.

merci de votre aide

seb

Hors ligne

#2 20-11-2009 12:53:47

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : faire un include dans une page elle meme en include

Saluton,
La réponse est tout simplement oui.
Après il faudrait veiller à la maintenabilité , gare aux usines à gaz.
Quoique, quand je vois ce que génèrent certains CMS....


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 20-11-2009 13:11:22

zoulouseb
Membre
Inscription : 13-10-2009
Messages : 6

Re : faire un include dans une page elle meme en include

le fait que l'on puisse est une bonne nouvelle

mais je ne vois pas le rapport avec les usines à gaz et la maintenabilité
et surtout je n'arrive pas à ce que ca marche.

y'a t il une subtilité pour ce genre de cas ??

mes liens habituels avec inclue sont du genre

<a href="index.php?page=horaire">horaire<a>

et pour l'include

<?php include($_GET['page'].'.inc.php');
            ?>

Hors ligne

#4 20-11-2009 14:41:02

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : faire un include dans une page elle meme en include

Tu viens de faire ce qui s'appelle une énorme bévue, c'est un soucis de sécurité assez grave.
N'importe qui peut mettre ce qu'il veut dans l'url et qui sera automatiquement interprété sans aucun test.

Voici un code déjà plus présentable et correct :

<?php
switch($_GET['page']){
  case "horaire" : include('horaire.inc.php');break;
  case et blablabla
  default: include('page_par_defaut.php');
}
?>

Pour chaque terme tu dois vérifier que c'est bien un terme que tu souhaites afficher. Si le terme n'a pas été prévu tu afficheras une page par défaut (en général la page d'accueil du site ou les news).

Hors ligne

#5 20-11-2009 15:00:09

zoulouseb
Membre
Inscription : 13-10-2009
Messages : 6

Re : faire un include dans une page elle meme en include

en quoi c'est un grave soucis de sécurité

mon url ne s'affiche pas

exepté www.monsite.be

Hors ligne

#6 20-11-2009 16:19:59

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : faire un include dans une page elle meme en include

C'est un grave soucis de sécurité dans le sens où tu récupères une variable que tu envoies directement à une fonction sans même te soucier de ce qu'il y a dedans.
Il suffirait de mettre une url comme cela pour faire ce que l'on veut avec ton site :
index.php?page=http://www.google.fr
Là j'affiche simplement la page de google, mais si je mettais la page de mon site avec mes commandes PHP ?

Que veux-tu dire par elle ne s'affiche pas ? Qu'est ce qui ne s'affiche pas ? Ton <a href=".... ?
Ou bien la page de ton include ?
Aucun message d'erreur ?

Hors ligne

#7 20-11-2009 16:33:23

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : faire un include dans une page elle meme en include

A ce titre, je crois qu'il existait un magnifique tutorial sur un site non moins fameux :

Lien vers le Tutorial sur phpdebutant

Merci de consulter le travail déjà fait... ce serait sympa wink

Ensuite, j'irais jusqu'à dire que tu peux faire des includes dans des includes qui sont inclus dans des includes et etc.... tu peux tout faire... le tout est de savoir si c'est approprié.
Perso, je me cantonne à un includes du 1er degré..et c'est déjà pas mal wink


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#8 20-11-2009 16:35:39

zoulouseb
Membre
Inscription : 13-10-2009
Messages : 6

Re : faire un include dans une page elle meme en include

ce qui ne s'affiche pas c'est l'adresse exacte de mon site dans la barre d'adresse

dans la barre d'adresse j'ai juste http://www.monsite.be qui s'affiche et non http://www.monsite.be/index.php?page=...

mais je commence a comprendre ce que tu veux dire

en fait si quelqu'un transformait sur un page cette adresse vers son site il pourrait peut etre avoir acces a des informations "secrete" !!
est ce bien ca ??

merci

Hors ligne

#9 20-11-2009 16:47:20

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : faire un include dans une page elle meme en include

Je cite le tutorial :

Problème de sécurité

Le problème

Si vous avez bien lu, vous savez que le paramètre page est affiché en clair dans la barre d'adresse du navigateur. Il est donc facilement modifiable par l'utilisateur. Ce dernier peut dès lors inclure n'importe quoi dans votre page index.php ! Il convient donc de tester ce que vaut ce paramètre avant d'inclure la page demandée et surtout vérifier que cela correspond bien à ce que vous permettez.

Nous allons pour cela créer un tableau contenant un listing de toutes les pages que vous autorisez dans cet include.

MERCI D'ALLER CONSULTER LE TUTORIAL !!!!!!!!!!!!

Je remets le lien pour ceux qui ne l'aurait pas lu juste avant : Lien vers le Tutorial sur phpdebutant


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#10 16-12-2009 11:10:08

zoulouseb
Membre
Inscription : 13-10-2009
Messages : 6

Re : faire un include dans une page elle meme en include

bonjour alnoss,
bonjour a tous,

je reviens sur l'aide que tu m'avais déja apporté après avoir compris le problème de sécurité et fait les modifications necessaire, j'en revenien à mon premier problème

la double inclusion

donc j'ai mon fichier index dans lequel j'inclu un fichier copy

dans ce fichier copy je voudrais faire varie une partie en fonction du lien sur lequel le visiteur clique

pour cela je pensais faire une include du fichier dans ma page copy


je remet le code des pages copy et index


code de la page index


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Description" content="Découvrez en quelques clics toutes nos activités : copy service, secrétariat indépendant, conception et réalisation de site web, papeterie avec boutique en ligne."/>
<meta name="Keywords" content="burocopy, copy,court, court-saint-Etienne, saint etienne,Saint-Etienne,boutique, boutique en ligne, secrétariat, télésecrétariat, papeterie, papier, stylos, classeurs, école, rentrée, classe, élèves, professeurs, étudiants, bureau, classement, scolaire, fourniture, dessin, loisirs, agendas, informatique, bagagerie, étiquetage, écriture, correction, emballage, présentation, reliure, cahier, bloc, carnet, enveloppe, peinture, bricolage, calendriers, cartouches, rubans, accessoires, plumier, encres, crayons, effaceurs, plumes, billes, chemises, fardes, pochettes, intercalaires,copies, photocopies, papier, copy, copie"/>
<meta name="Revisit-after" content="7"/>
<meta name="Robots" content="all"/>
<title>Buro Copy Saint Etienne : Papeterie - copy service - bricolage - imprimerie</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>

<body>


<?php $page = $_GET['page']; ?>
<div id="container">
  <b class="rtop"><b class="r1"></b><b class="r2"></b> <b class="r3"></b> <b class="r4"></b></b>
  <div id="Header">
    <div align="center"><img src="images/entete.jpg" width="600" height="120" /></div>
  </div>
  <div id="divPageContent">
    <div id="navcontainer">
      <ul id="navlist">

        <li<?php if($page== 'accueil'){ echo ' id="active"'; }?>><a href="index.php?page=accueil"<?php if($page=='accueil'){ echo ' id="current"';}?>>Accueil</a></li>
        <li<?php if($page=='copy'){ echo ' id="active"'; }?>><a href="index.php?page=copy" <?php if($page=='copy'){ echo 'id="current"';}?>>  Copy Service</a></li>
        <li<?php if($page=='cachet'){ echo ' id="active"'; }?>><a href="index.php?page=cachet"<?php if($page=='cachet'){ echo ' id="current"';}?>>Cachets</a></li>
          <li<?php if($page=='imprimerie'){ echo ' id="active"'; }?>><a href="index.php?page=imprimerie"<?php if($page=='imprimerie'){ echo ' id="current"';}?>>Imprimerie</a></li>
        <li<?php if($page=='horaire'){ echo ' id="active"'; }?>><a href="index.php?page=horaire"<?php if($page=='horaire'){ echo ' id="current"';}?>>Horaire</a></li>
        <!--  <li<?php if($page=='upload'){ echo ' id="active"'; }?>><a href="index.php?page=upload"<?php if($page=='upload'){ echo ' id="current"';}?>>Upload</a></li>-->
    </ul>
    </div>
    <table border="0" cellpadding="5" cellspacing="0">
      <tr>
          <td valign="top" class="leftColumn">
            <div id="sideBarNews">
                  <div id="newsHeader">
                    <b class="dtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
                    <div align="left"><font size="6" COLOR="0033EF"><b> BURO COPY</b></font></div  >
                    <div align="right"><font color="red" SIZE="5">Saint Etienne </font></div>
                    <b class='dbas'><b class='r4'></b><b class='r3'></b><b class='r2'></b><b class='r1'></b></b>
                  </div>
                  <div class="newsItem2"> 
                  </div>
                  <div id="sideBarNewsContent">
                    <b class="dtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
                    <font size=4 color="#0033ef">
                    <div class="newsItem"> </div>
                    <div class="newsItem">  Avenue Emile Henricot, 43<br>  1490   Court-Saint-Etienne </div>
                    <div class="newsItem2" align="center"> </div>
                    <div class="newsItem">  Téléphone : 010/61.53.39</div>
                    <div class="newsItem">  Fax : 010/61.65.88</div>
                    <div class="newsItem">  E-mail : <a href="mailto:info@burocopy.be">info@burocopy.be</a></div>
                    <div class="newsItem" align="center">  </div>
                    <div class="newsItem" align="center"> <a href="http://www.burocopy.be">www.burocopy.be</a></br><p></div>
                    <b class='dbas'><b class='r4'></b><b class='r3'></b><b class='r2'></b><b class='r1'></b></b>
                  </div>
                  <br>
                  <div id="sideBarNewsContent2">
                    <b class="dtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
                    <font size=4 color="#0033ef">
                    <div class="newsItem"> </div>
                    <div class="newsItem"> <center> <a href="index.php?page=recom">Recommander notre site</a></div>
                    <div class="newsItem2" align="center"> </div>
                    <b class='dbas'><b class='r4'></b><b class='r3'></b><b class='r2'></b><b class='r1'></b></b>
                  </div>
            </div>
          </td>
          <td valign="top" class="rightColumn">
          <div class="entete" >

<?php

  // On définit le tableau contenant les pages autorisées
  // ----------------------------------------------------
  $pageOK = array('accueil' => 'accueil.inc.php',
                  'copy' => 'copy.inc.php',
          'imprimerie' =>'imprimerie.inc.php',
          'horaire' => 'horaire.inc.php',
          'cachet' => 'cachet.inc.php',
          'recom' => 'recom.inc.php',
          );

  // On teste que le paramètre d'url existe et qu'il est bien autorisé
  // -----------------------------------------------------------------
  if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
    include($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
  } else {
    include('accueil.inc.php');   // Page par défaut quant elle n'existe pas dans le tableau
  }

?>
</div>
      </tr>
    </table>
  </div>
<b class='gbottom'><b class='r'></b><b class='r3'></b><b class='r2'></b><b class='r1'></b></b> 
</div>

</body>
</html>

code de la page copy

            <h2>Copy Service :</h2>
           
           
            Nos Tarifs :
           
           
          <a href="fulllaser.inc.php">Copie full laser </a>
          <a href="couleur .inc.php">Copie couleur</a>
          <a href="laser.inc.php">Copie lazer</a>
         
<?php
            //  include($_GET['page'].'.inc.php');
            ?>

comment faire pour que lorsque le visiteur clique sur : " Copie Full laser" ou sur "Copie Couleur" ou sur " copie lazer" la page de ce lien ce mette en dessous des différents lien

ps j'ai mis la ligne de l'include en commentaire car aussi non il tente de charger la page copy indéfiniment

Dernière modification par zoulouseb (16-12-2009 11:39:10)

Hors ligne

#11 16-12-2009 12:10:43

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : faire un include dans une page elle meme en include

Il te suffit d'utiliser une seconde variable passé dans l'url (page2 par exemple).

Hors ligne

#12 16-12-2009 12:37:07

zoulouseb
Membre
Inscription : 13-10-2009
Messages : 6

Re : faire un include dans une page elle meme en include

ok

mais concretement comment je dois ecrire on include ??

je la mets ou cette deuxieme variable

merci

Hors ligne

#13 16-12-2009 16:34:47

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : faire un include dans une page elle meme en include

Bah tu auras un lien comme cela : index.php?page=copy&page2=fulllaser
Ensuite ton premier include de la forme : include($_GET['page']); (tout en gardant tes vérifications !)
Puis ton second dans la page incluse : include($_GET['page2']); (avec le même genre de vérifications)

Hors ligne

Pied de page des forums