Include ?

Signaler
Messages postés
8
Date d'inscription
samedi 16 juin 2007
Statut
Membre
Dernière intervention
9 novembre 2008
-
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
-
Salut à tous,

Voilà j'explique mon problème, j'ai trouvé sur phpcs.com un code qui utilise la fonction include me permettant d'appeler sur une page mon en-tête et mon pied de page (pied de page sur une page php, et en-tête sur une seconde, les deux se regroupant sur une troisième.). Dans la page contenant mon en-tête il y a aussi mon menu avec des liens. Chaque lien est associé à des pages html faite auparavant.

Sur ma page regroupant tous, mon en-tête est là, mon pied de page aussi, ainsi que mon menu (normal). Mon problème est que quand je clique sur les liens du menu, ceux-ci me son envoyés sur une nouvelle page ! alors que je voudrais qu'ils apparaisse entre l'en-tête et le pied de page de ma page global....

Quelqu'un aurait il quelque chose à me conseiller ?
J'éspère avoir été assez clair..

Merci d'avance

6 réponses

Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
Salut,

Il y a de nombreuses solutions à ton problème.
Je vais t'en montrer une: tu pourrais, lorsque tu clique sur ton lien, ne pas amener sur la page en question, mais sur la meme page en incluant ta page html au milieu.
Donc tu récupères des informations par GET (url), en l'occurence, le nom de ta page html.
Donc, dans ta page d'entete, ou tu as tes liens, modifie ceux ci en remplacant:

nom du lien

par:

page.php?p=lien.html">nom du lien (page.php étant ta page contenant ton entete et pied de page.

ensuite crée une page html contenant le contenu de ta page de base, celle qui a l'entete et pied de page, mais sans ces deux-la. Ensuite, a la place ou il y avait ce contenu la, tu mets:

<?
$page_de_base = "contenu_de_la_page_de_base.html";
 $autorises = array(
$page_de_base,
"page1.html", "page2.html", "page3.html", "page4.php");

$page = $_GET['p'];if($page "") $page $page_de_base;

if(in_array($page,$autorises)) {

    
include $page;

  }
else include $page_de_base;
?>
,

----

bon, voila, c est tout, je vais encore t'expliquer comment fonctionne ce code (A noter que ce que j'ai mis en bleu, c est ce que tu as à modifier):

tout d'abord, tu définis la fonction page de page, c est le fichier html ou php ou ce que tu veux, que tu auras créé, qui contient ce qu il y a a la base sur ta page.
ensuite, pour des raisons de sécurités, on fait la liste de toutes les pages autorisées à être inclues (pour pas qu'un petit voyou vienne intégrer sa page dans ton site afin d'effectuer une action malveillante ), tu dois donc mettre le nom de toutes les pages que tu autorises à être inclues, dans la fonction array (entre guillemets et séparés par des virgules).
Ensuite $_GET permet simplement de récupérer une information dans l'url de la page.
Si, on n'a rien défini dans l'url (c'est a dire, que c est le premier chargement), on inclut la page de base.
ensuite, si la page et dans la liste des pages autorisées, on l'inclut, sinon on inclut la page de base.

Voila , c etait simple et j ai essayé d etre ultra explicite, ne connaissant pas ton niveau et php et sachant que ca pourra servir peut etre à d autres.

Bonne soirée et à bientot,
FF

PS: N'hésites pas si tu as un problème ou une question.
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
ATTENTION !!!!!!!!

j'ai oublié de dire quelque chose: dans toutes tes pages html qui seront uniquement inclues à cette page, tu dois enlever les balises <html><head>... jusqu'à (que tu supprimes aussi).
Ensuite, à la fin de la page, tu supprimes aussi et </html>.

Ceci sert simplement au fait que tu ne définissent pas le titre 2 fois que tu n'aies pas deux balises <html> ouvertes l'une dans l'autre vu que t'inclus une page dans une autre. C'est syntaxiquement faux !

Voilà j'ai tout dit...
A+
Messages postés
8
Date d'inscription
samedi 16 juin 2007
Statut
Membre
Dernière intervention
9 novembre 2008

Bon, j'ai compris l'histoire du href a remplacer, sa c'est bon.



Mainteant je ne comprends pas la création d'une nouvelle page html vierge dans laquelle on entre le code




<?
$page_de_base = "contenu_de_la_page_de_base.html";
 $autorises = array(
$page_de_base,
"page1.html", "page2.html", "page3.html", "page4.php");

$page = $_GET['p'];if($page "") $page $page_de_base;

if(in_array($page,$autorises)) {
     
include $page;









   }
else include $page_de_base;
?>


en plus entrer du code php dans de l'html sa a pas lair de fonctionner.

Bon, moi je cherche a avoir une page fixe, avc le design du site, le menu, ext...une page avec la structure du site... et qu'au centre de cette meme page  (dans la case d'un tableau par exemple, qui puisse sagrandir en hauteur, sans que des scroolbars aparaissent) puisse venir se loger des pages html toute simples. Des pages avec des images et du texte...
Donc la manière que j'ai trouver (parce que les frames, les iframes...moi j'aime pas) c'est d'utiliser include de la structure sur une page (pour ainsi pouvoir etre modifié facilement ) et ce que j'aimerai fair c fair apparaitre mes pages simple au sein de cette structure.

Peut etre pourra tu me conseiller autrement.
Si non, peu tu me réexpliqué ce que je dois fair avec le code si dessus.. créé une nouvelle pasge... je n'est vraiment pas compris. dsl

Depuis longtenps, jéssais de me fair un site simple et pratique (juste modifié une seul page lorsque j'ai un changement de menu ou de design) mais je n'y arrive pas...pourtant ce ne dois pas etre difficile..
Si tu es d'accord, pourrais tu directement me fabriquer des pages le plus simple possible avec le code qui permet de fair sa dedant ?
Merci en tout cas d'avoir répondu si vite ! 

Bon je vais me coucher. Je repasse demain ! Bonne nuit .



Messages postés
8
Date d'inscription
samedi 16 juin 2007
Statut
Membre
Dernière intervention
9 novembre 2008

C'est bon j'ai réussi ! (bon hier je croit qu'il était un peu tard.. )

Alors ma page , kan je clike sur un lien, afiche en son centre la page du lien ! c'est exactement ce que je voulais !
Mais par contre, ten que je ne clique pas sur le lien, elle affiche a l'infini entre les deux include... alors, sa cest moins cool.
Bon je vais éssayé de bidouiller.
Je te tiens au courant.
a ++
Messages postés
8
Date d'inscription
samedi 16 juin 2007
Statut
Membre
Dernière intervention
9 novembre 2008

Youpi sa fonctionne !!!!!!
Bon alors, je vais tout réexpliqué
il faut: un minimum de 5page:

-un pied de page : haut.php  ou est le menu.Chaque lien du menu seront défini par: [nom du lien]
-une entete:            bas.php
-une page sctuture: structure.php
-des page associé a des liens : liens.htm
-une page d'accueil qui s'affiche par défaut quand aucune autre page est demandé:  accueil.htm

Inclure avec include  haut.php et bas.php dans structure.php
Strucure.php divisé alors en 3 : peid de page, centre ou s'afficheront les page associé au lien, et entete.
Dans ce centre de structure.php (ou s'afficheron les pages associé au lien du menu) on colle le code:

$accueil = "accueil.htm";
$autorises = array($accueil, "bas.php", "haut.php", "liens.htm" , "toute les pages du site doivent etre inscit entre " " et séparé de virgule ici");
$page = $_GET['p'];if($page "") $page $paccueil;

if(in_array($page,$autorises)) {
    include $page;
  }
else include $accueil;

Et normalement sa focntionne 
Merci Zut69, tu m'as retiré une grosse épine du pied ! A je suis content ! sa fait plaisir !
Au prochain problème je te rapelle ? 

Merci encore et à bientôt ! 

Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
ca va, tu as compris.
Ca m'a fait plaisir de pouvoir t'aider, mais fais juste gaffe, il y a une faute de frappe dans le code que tu as un peu modifier:
tu définis $accueil:
$accueil = "accueil.htm";
mais apres tu utilise la variable $paccueil, il y a un "p" en trop: 
if($page == "") $page = $paccueil;

Voilà, bonne journée et à bientot