oujood.com

Inclure le code d’un fichier dans un autre fichier en php en utilisant les instructions include() et require()

Dans ce tutoriel, vous apprendrez comment inclure et évaluer les fichiers en PHP.
Inclure un fichier PHP dans un autre fichier PHP.
Les fonctions include() et require() vous permettent d'inclure le code contenu dans un fichier PHP dans un autre fichier PHP. Inclure un fichier produit le même résultat que copier le script du fichier spécifié et le coller à l'endroit où il est appelé.

chercher |

PHP la fonction Include


Vous pouvez économiser beaucoup de temps et de travail en incluant des fichiers - Il suffit de stocker un bloc de code dans un fichier séparé et de l'inclure où vous voulez en utilisant les instructions include() et require() au lieu de taper le bloc de code entier plusieurs fois. Un exemple typique est l'inclusion des fichiers d'en-tête, de pied de page et de menu dans toutes les pages d'un site Web.
La syntaxe de base des instructions include() et require() peut être donnée par :

include("path/nomFichier.php"); -Or- include "path/nomFichier.php";
require("path/nomFichier.php"); -Or- require "path/nomFichier.php";

Si vous avez une portion de code php que vous insérer dans un certain nombre de pages de votre site par exemple la tête de la page ou le menu général de votre site.
Vous n’allez pas écrire cette portion de code pour chaque page ou à chaque fois vous en avez besoin, vous coupiez et coller le code .
Non il suffit d’écrire ce code une fois dans un fichier spécifique et l’insérer dans vos page quand et où vous le voulez grasse à la fonction include() de php.


Cette fonction insére le contenu d'un fichier PHP dans un autre fichier PHP avant que le serveur l'exécute.
Deux fonctions sont disponible dans PHP pour faire ce travail
La fonction PHP include()
La fonction PHP require()
Ces deux fonctions font le même travail.


La fonction PHP include()


La fonction include() prend tout le contenu d’un fichier php spécifique et l'inclut dans le fichier courant.
Si une erreur se produit, la fonction d'inclusion () produit un avertissement, mais l'exécution du code continuera.
Exemple 1
Supposez que vous avez un dossier d'en-tête standard, appelé le « header.php ».
Pour inclure le dossier d'en-tête dans une page, employez la fonction d'inclusion include() :

Exemple :       Copier le code

<html>
<body>

<?php include("header.php"); ?>
<h1>Page d’accueil </h1>
<p>Bonjour c’est la page d’accueil de mon site merci pour la visite</p>

</body>
</html>

Exemple 2
Supposez que nous avons un dossier standard de menu, qui devrait être employé sur toutes les pages.
Nous allons créer un fichier menu.php dont voici le code :

Exemple :       Copier le code

<ul><li><a href="/default.php">Accueil</a></li>
       <li><a href="/tutorials.php">tutoriaux</a></li>
        <li><a href="/references.php">Références</a></li>
        <li><a href="/examples.php">Exemples</a> </li>
        <li><a href="/about.php">Qui suis-je ?</a> </li>
       <li> <a href="/contact.php">Contact </a></li> 
</ul>

Toutes les pages dans le site Web devraient inclure ce fichier de menu. Voici comment il peut être fait :

Exemple :       Copier le code

<html>
<body>

<div class="leftmenu">
<?php include("menu.php"); ?>
</div>

<h1>Bien venu sur mon site.</h1>
<p>texte texte</p>

</body>
</html>


Si vous regardez le code source de la page dont le le code ci-dessus (dans un navigateur), elle ressemblera à ceci :

Exemple :       Copier le code

<html>
<body>

<div class="leftmenu">
<ul><li><a href="/default.php">Accueil</a></li>
       <li><a href="/tutorials.php">tutoriaux</a></li>
        <li><a href="/references.php">Références</a></li>
        <li><a href="/examples.php">Exemples</a> </li>
        <li><a href="/about.php">Qui suis-je ?</a> </li>
       <li> <a href="/contact.php">Contact </a></li> 
</ul>
</div>

<h1>Bien venu sur mon site.</h1>
<p>texte texte</p>

</body>
</html>

La fonction PHP require()


La fonction php require() est identique à include(), sauf qu'elle manipule les erreurs différemment.
Si une erreur se produit, la fonction include() produira un avertissement, mais le code continuera l'exécution.
require() produira une erreur bloquante, et le code s'arrêtera.
Exemple d'erreur de la fonction include()
Testez ce code sans créer de le fichier fichier.php

Exemple :       Copier le code

<html>
<body>

<?php
include("Fichier.php");
echo "Bonjour le monde !";
?>

</body>
</html>

Message d'erreur :

Warning: include(fichier.php) [function.include]:
failed to open stream:
No such file or directory in C:\home\website\fichier.php on line 5

Bonjour monde !
Notez que le rapport d'écho est exécuté ! C'est parce qu'un avertissement n'arrête pas l'exécution de code.
exemple d'erreur de la fonction require()
Maintenant, reprenons le même exemple avec la fonction require().

Exemple :       Copier le code

<html>
<body>

<?php
require("Fichier.php");
echo "Bonjour le monde !";
?>

</body>
</html>

Message d'erreur :

Warning: require(ficher.php) [function.require]:
failed to open stream:
No such file or directory in C:\home\website\fichier.php on line 5

Le code echo n'est pas exécuté, parce que l'exécution du code s'est arrêtée après l'erreur bloquante.
Employer la fonction require() au lieu de include(), si vous voulez que les codes ne devraient pas continuer après une erreur.

Un exercice pratique :

Nous allons créer un site avec PHP.
Dans notre site nous allons avoir des pages PHP qui contiennent toutes :
-Un entête avec le titre du site.
-un menu placé à gauche.
-un corps avec le contenu de notre site pour chaque page.
-un pied de page.
En HTML aprés la doctype tout ça se trouve entre <html> et </html>
si vous ne savez pas faire ça je vous invite à voir le cours en html ICI
Le code est le suivant :
Code html :

Exemple :       Copier le code


<!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">
<head>
	<title> titre du site </title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<link rel="stylesheet" media="screen" 	type="text/css"title="style"href="style.css"/>

</head>
<body>
	<div id="entete"> <!-- entête de la page -->
		<h1>titre du site</h1>	
	</div>
	<div id="menu"><!--menu -->

		<div class="element_menu">
			<a href="page1.html">Menu 1</a><br/>
		</div>
		<div class="element_menu">
			<a href="page2.html">Menu 2</a><br/>

		</div>
		<div class="element_menu">
			<a href="page3.html">Menu 3</a><br/>
		</div>
	</div>

	<div id="corps"> <!-- corps de la page -->
		<h2>titre de la page</h2>
		<p> contenu de la page, contenu de la page, contenu de la page,
			contenu de la page, contenu de la page, contenu de la page,
		</p>
	</div>

	<div id="bas"> <!-- pied de la page -->
		<p> contenue du pied dela page </p>	
	</div>
</body>
</html>


Le code css qui va avec :

Exemple :       Copier le code

body
{
   width:770px;
   margin:auto; /* Pour centrer notre page */
   margin-top:20px; /* Pour éviter de coller avec le haut de la fenêtre du navigateur.  */
   margin-bottom:20px;    /* aussi pour le bas du navigateur */
   background-color: #CCCCCC; /* Un fond pour éviter d'avoir un fond blanc  */
   color:#000000;
}

#entete /*entête*/
{
   width:770px;
   height:100px;
   margin-bottom: 10px;
   border: 1px solid black;
   background-color:#333399;
   color: #FFFFFF;
  
}

/* Le corps de la page */

#corps /*corps*/
{
   margin-left: 154px;
   margin-bottom: 5px;
   padding: 10px; 
   margin-right: 1px;
   color: #FFFFFF;
   background-color: #524222;
   border: 1px solid #FFFFFF;
}
#menu /*menu*/
{
   width:140px; /* Il est important de donner une taille au menu */
    border: 1px solid #FFFFFF;
	margin-top: 0px;
	float:left; /* Le menu flottera à gauche vous pouvez mettre float:right   */
	padding: 5px;
}
#bas /*pied de page*/
{
   height:80px;
   padding: 5px;
   margin-bottom: 5px;
   margin-top: 5px;
   text-align: center;
   color: #B3B3B3;
   background-color: #525262;
   border: 1px solid #FFFFFF;
}
.element_menu
{
   color: #00FFFF;
   border: 2px solid black;
   margin-bottom: 5px; /* Pour éviter que les éléments du menu ne soient trop collés */
}
h1
{
text-align: center;
color: #00CCFF
}
h2
{
text-align: center;
color: #FF00FF
}

Exécutez ce code
Maintenant nous allons reprendre ce code mais en PHP.
En effet il existe deux méthodes pour le faire chacune avec ses avantages et inconvénients.

Méthode 1


La première méthode a l’avantage d’assurer une meilleur sécurité contre le hacker.
Son inconvénient est d’être moins pro, surtout si on veut changer toute l’apparence du site, mais je croix qu’on utilisant les feuilles de style ce problème devient minime.
Dans cette méthode nous découpons le code html précédent en trois parties et donc créer trois pages PHP
comme suit :
Code page « haut.php » :

Exemple :       Copier le code

<!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">
<head>
	<title> titre du site </title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

	<link rel="stylesheet" media="screen" type="text/css"title="style"href="style.css"/>
</head>
<body>
	<div id="entete"> <!-- entête de la page -->
		<h1>titre du site</h1>	
	</div>

	<div id="menu"><!--menu -->
		<div class="element_menu">
			<a href="page1.php">Menu 1</a><br/>
		</div>
		<div class="element_menu">

			<a href="page2.phpl">Menu 2</a><br/>
		</div>
		<div class="element_menu">
			<a href="page3.php">Menu 3</a><br/>

		</div>
	</div>

Code page «pied.php » :

Exemple :       Copier le code

<div id="bas"> <!-- pied de la page -->
		<p> contenue du pied de la page </p>	
	</div>

</body>
</html>

et en fin code de la page « corps.php » :

Exemple :       Copier le code

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

<div id="corps"> <!-- corps de la page -->
		<h2>titre de la page</h2>

		<p> 	Contenu de la page, contenu de la page, contenu de la page.
			Contenu de la page, contenu de la page, contenu de la page.
		</p>
</div>
<?php include("pied.php"); ?>

Vous pouvez nommer vos pages comme vous voulez pas nécessairement haut pied corps.

Méthode 2


La deuxième méthode , a comme avantage la possibilité de changer toute l’apparence du site en un coup.
Mais elle a le grand problème de la sécurité et il faut faire très attention à votre code, si non votre site sera très vulnérable au hack.
Le fonctionnement est l’inverse de la première méthode, c'est-à-dire qu’au lieu d’inclure l’entête et le pied de page. On crée une page qui contient tout sauf le corps et dans cette page on incluse le corps.
Le code est le suivant :
Page entière sans le corps « page.php ».
Code de « page.php » :

Exemple :       Copier le code

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

<head>
	<title> titre du site </title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<link rel="stylesheet" media="screen" 	type="text/css"title="style"href="style.css"/>
</head>
<body>

	<div id="entete"> <!-- entête de la page -->
		<h1>titre du site</h1>	
	</div>
	<div id="menu"><!--menu -->
		<div class="element_menu">

			<a href="page1.php">Menu 1</a><br/>
		</div>
		<div class="element_menu">
			<a href="page2.php">Menu 2</a><br/>

		</div>
		<div class="element_menu">
			<a href="page3.php">Menu 3</a><br/>
		</div>
	</div>

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


	<div id="bas"> <!-- pied de la page -->
		<p> contenue du pied dela page </p>	
	</div>

</body>
</html>

Comme vos le constatez cette page contient tout l’entête, le menu, etc. …
Et on crée la page « corps.php » comme ceci.
Code de corps.php :

Exemple :       Copier le code

<div id="corps"> <!-- corps de la page -->
		<h2>titre de la page</h2>
		<p> Contenu de la page, contenu de la page, contenu de la page.
			Contenu de la page, contenu de la page, contenu de la page.
		</p>

</div>

la page « corps.php » peut être tout ce que vous voulez ( un texte, un forum, un livre d’or etc… ).
En réalité le vrai code est un peu différent.
On va mettre une variable qui s’occupe de récupérer l’url de la page à inclure selon la demande du visiteur.
Le code est le suivant :
Code PHP

Exemple :       Copier le code

<!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">
<head>
	<title> titre du site </title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

	<link rel="stylesheet" media="screen" 	type="text/css"title="style"href="style.css"/>
</head>
<body>
	<div id="entete"> <!-- entête de la page -->
		<h1>titre du site</h1>	
	</div>

	<div id="menu"><!--menu -->
		<div class="element_menu">
			<a href="page1.php">Menu 1</a><br/>
		</div>
		<div class="element_menu">

			<a href="page2.php">Menu 2</a><br/>
		</div>
		<div class="element_menu">
			<a href="page3.php">Menu 3</a><br/>

		</div>
	</div>

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

	<div id="bas"> <!-- pied de la page -->
		<p> contenue du pied dela page </p>	
	</div>

</body>
</html>

Si le visiteur clique sur le menu par exemple news sur votre page index alors l’url contient index.php?page=news et donc on inclura la page « news.php ».
Et si un hacker change votre url il peut facilement changer le contenu de votre page et de là récupérer toutes les données de votre site s’il le veut.
Il existe des solutions à ce problème de sécurité voilà une.
On utilise une boucle if :
Code PHP :

Exemple :       Copier le code

<!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">
<head>
	<title> titre du site </title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<link rel="stylesheet" media="screen" 	type="text/css"title="style"href="style.css"/>
</head>
<body>
	<div id="entete"> <!-- entête de la page -->
		<h1>titre du site</h1>	
	</div>

	<div id="menu"><!--menu -->
		<div class="element_menu">
			<a href="page1.php">Menu 1</a><br/>
		</div>
		<div class="element_menu">

			<a href="page2.php">Menu 2</a><br/>
		</div>
		<div class="element_menu">
			<a href="page3.php">Menu 3</a><br/>

		</div>
	</div>

	<?php
    if ($_GET['page'] == "menu1")
    {
        include("menu1.php");
    }
    
    if ($_GET['page'] == "menue2")
    {
        include("menu2.php");
    }
    
    if ($_GET['page'] == "menu3")
    {
        include("menu3.php");
    }
    
    ?>


	<div id="bas"> <!-- pied de la page -->

		<p> contenue du pied dela page </p>	
	</div>
</body>
</html>


	<div id="bas"> <!-- pied de la page -->

		<p> contenue du pied dela page </p>	
	</div>
</body>
</html>

Là si un hacker tente de changer l'url, aucun des if ne sera valable donc rien ne sera inclus.

Les fonctions include_once et require_once

Si vous incluez accidentellement le même fichier (typiquement des fonctions ou des classes) plus d'une fois dans votre code en utilisant les instructions include ou require, cela peut causer des conflits. Pour éviter cette situation, PHP fournit les instructions include_once et require_once. Ces instructions se comportent de la même manière que les instructions include et require, à une exception près.

Les instructions include_once et require_once n'incluront le fichier qu'une seule fois, même si on leur demande de l'inclure une seconde fois, c'est-à-dire que si le fichier spécifié a déjà été inclus dans une instruction précédente, il ne sera plus inclus à nouveau. Pour mieux comprendre comment cela fonctionne, prenons un exemple. Supposons que nous ayons un fichier 'mes_fonctions.php' avec le code suivant :

Code

  Copier le code

<?php
function multiplySelf($var){
	/*multiplie la variable par elle-même*/
    $var *= $var; 
    echo $var;
}
?>

Voici le script PHP dans lequel nous devons inclure le fichier 'mes_fonctions.php'.

Code

  Copier le code

<?php
// Inclure le fichier
require "mes_fonctions.php" ;
// Appel de la fonction
multiplySelf(2); // Output: 4
echo "<br>";
 
// Inclure à nouveau le fichier
require "mes_fonctions.php" ;
// Appel de la fonction
multiplySelf(5); // ne s'execute pas
?>

Lorsque vous exécutez le script ci-dessus, vous verrez un message d'erreur ressemblant à ceci : "Fatal error : Cannot redeclare multiplySelf()". Cela se produit parce que le fichier 'mes_fonctions.php' est inclus deux fois, ce qui signifie que la fonction multiplySelf() est définie deux fois, ce qui a amené PHP à arrêter l'exécution du script et à générer une erreur fatale.
Réécrivez maintenant l'exemple ci-dessus avec require_once.

Code

  Copier le code

<?php
// Inclure le fichier
require_once "mes_fonctions.php" ;
// Appel de la fonction
multiplySelf(2); // Output: 4
echo "<br>";
 
// Inclure à nouveau le fichier
require_once "mes_fonctions.php" ;
// Appel de la fonction
multiplySelf(5); // Output: 25
?>

Comme vous pouvez le constater, en utilisant require_once au lieu de require, le script fonctionne comme prévu.

Les instructions include() et require() en PHP font le même travail, elles permettent d'inclure du code dans un documment à partir d'un autre fichier.

La différence principale entre ces deux instructions réside dans la façon dont elles gèrent les erreurs :

Si une erreur se produit lors de l'inclusion d'un fichier avec include(), le script continue à s'exécuter en affichant un avertissement (warning).

Si une erreur se produit lors de l'inclusion d'un fichier avec require(), le script s'arrête immédiatement avec une erreur fatale (fatal error).

En général, il est recommandé d'utiliser require() pour les fichiers qui sont requis pour le fonctionnement correct du script, car si ces fichiers ne sont pas disponibles, cela peut entraîner des erreurs critiques. À l'inverse, include() est plus adapté pour les fichiers optionnels qui peuvent être inclus si disponibles, sans pour autant compromettre le fonctionnement du script en cas d'absence.


Par carabde 20 Aout 2014

Voir aussi nos tutoriel :

Inserer des données dans une table

Inserer des données dans une table

Les images dans bootstrap

Apprenez à appliquer le style aux images, créer des vignettes, des grilles d'images et de vidéos et plus à l'aide de Bootstrap.

fonction htmlentities, htmlentities

Convertit tous les caractères éligibles en entités HTML