Créer des sites Web dynamiques en PHP (PHP Hypertext Preprocessor)

Auteur: Mohamed CHINY Durée necessaire pour le cours de Créer des sites Web dynamiques en PHP (PHP Hypertext Preprocessor) Niveau recommandé pour le cours de Créer des sites Web dynamiques en PHP (PHP Hypertext Preprocessor) Supports vidéo disponibles pour ce cours Exercices de renforcement disponibles pour ce cours Quiz disponible pour ce cours

Page 3: Intégration du code PHP

Toutes les pages

Où faut-il placer nos documents PHP?

Si vous voulez exécuter du code PHP, alors il faut faire appel au serveur d’application grâce à l'URL http://localhost. Il est donc hors de question de cliquer sur un document PHP deux fois pour l’exécuter dans un navigateur comme on avait l'habitude de faire avec HTML ou Javascript.

Tout d'abord, il faut noter qu'un document PHP est toujours suffixé par l'extension .php. C'est de cette manière que le serveur Web sait qu'il doit faire exécuter le document PHP par le serveur d'application, qui renferme le moteur PHP, avant de le renvoyer au client. Cependant, il faut placer nos documents PHP (et les autres documents du site Web d'ailleurs) dans un endroit bien précis. Cet endroit s'appelle le Document Root (littéralement la racine du serveur Web).

Sur WAMP Server le Document Root est le dossier du nom de www, il est par défaut situé dans le dossier d'installation du logiciel (généralement C:/wamp/www). Il est donc important de placer tous les documents PHP que nous allons créer dans ce répertoire.
Il est possible de remplacer le document root par défaut par un emplacement personnalisé en configurant WAMP Server, mais je vous recommande les laisser les choses comme elles sont, car je reviens et je rappelle que l'objectif de ce cours est d'apprendre à programmer en PHP et non pas l'administration d'un serveur Web.
Le document root peut changer selon la plateforme de développement (WAMP, XAMP, Easy PHP, ZMWS...). Ce répertoire peut avoir les noms www, htdocs ou _web.zmwsc. Pour ne pas se perdre, mieux vaut toujours lire la page propre au serveur local qui s'affiche en tapant l'URL http://localhost.
Supposons que l'on souhaite créer un document PHP qui va faire office de page d'accueil de notre site Web. Vous l'avez deviné, il sera nommé index.php, que l'on va placer dans le Document Root (dossier www). Mais faites attention à ne pas écraser un document du même nom déjà existant dans ce dossier. Il s'agit du document exécuté quand vous tapez l'adresse http://localhost et qui contient généralement des informations sur le serveur utilisé (comme la version des langages supportés comme PHP, l'emplacement du Document Root, les noms des projets en cours...)

Pour travailler proprement, on va créer un dossier nommé formation dans le dossier www. C'est dans le dossier formation que nous allons placer le fichier index.php que nous allons créer.

Pour exécuter notre document on tape l'adresse suivante: http://localhost/formation/index.php ou mieux encore http://localhost/formation, car si vous spécifiez un dossier dans l'URL, le serveur Web tente de charger la page d'accueil de ce dossier qui est par défaut nommée index.xyz (xyz est l'extension qui peut être htm, html, php, asp...).

A quoi ressemble un document PHP?

Une page PHP est suffixée par l'extension .php, mais cela ne veut pas dire qu'elle contient uniquement du code PHP. En effet, elle peut renfermer toutes les syntaxes que nous avons vu jusqu'ici à savoir: HTML, CSS et Javascript.

Il est donc tout à fait possible que votre page PHP contienne 4 langages différents à la fois.

Exemple:
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8" />
      <style>
      *{
         /* Code CSS */
         font-family:verdana;
         font-size:10pt;
      }
      </style>
   </head>
   <body>
      <div>C'est du HTML.</div>
      <script language="javascript">
         document.write("C'est du Javascript.");
      </script><br />
      <?php
         echo "Et là, du PHP!";
      ?>
   </body>
</html>
Après exécution on obtient sur le navigateur:
C'est du HTML.
C'est du Javascript.
Et là, du PHP!
Si on souhaite consulter le code source sur le navigateur du client on obtient ceci:
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8" />
      <style>
      *{
         /* Code CSS */
         font-family:verdana;
         font-size:10pt;
      }
      </style>
   </head>
   <body>
      <div>C'est du HTML.</div>
      <script language="javascript">
         document.write("C'est du Javascript.");
      </script><br />
      Et là, du PHP!   
   </body>
</html>
Si vous comparez le code de la page sur le serveur et celui reçu par le client vous constatez que tout est identique sauf ce bout de code:
<?php
   echo "Et là, du PHP!";
?>
qui est remplacé par ceci:
Et là, du PHP!
Des explications s'imposent. En fait, si un document suffixé par .php est demandé par le client, le serveur d'application l'analyse d'abord pour chercher les scripts PHP qu'ils contient et les exécute sur place. Le résultat obtenu est un document où le code PHP a été remplacé par le résultat de son l’exécution. Ce document est renvoyé au navigateur du client qui, lui, exécute les codes restants qui ne sont rien d'autre que des codes coté client comme HTML, CSS et Javascript.

Pour que le serveur d'application identifie les scripts PHP, il faut placer ceux ci dans les délimiteurs appropriés. Dans l'exemple précédent il s'agit de <?php et ?>.

Délimiteurs PHP

Pour indiquer au serveur où est intégré le code PHP dans la page, il faut le placer dans des délimiteurs (ou balises) spéciaux. Tout ce qui est déclaré entre ces délimiteurs sera exécuté par le serveur avant de renvoyer la page au client.

Il existe 4 types de délimiteurs pour PHP:
  • Délimiteur long: il s'agit du délimiteur classique de PHP. Le code PHP doit être placé entre <?php et ?>. C'est le plus populaire et le plus recommandé.
  • Délimiteur court: connue sous le nom de Short Open Tag (pour balise d'ouverture courte). Dans ce cas le code PHP est placé entre <? et ?>. Le problème avec ce délimiteur c'est qu'il ressemble à celui d'un document XML (<?xml version="1.0" encoding="UTF-8" ?>). Donc, si vous souhaitez utiliser PHP avec XML, il faut éviter le délimiteur court voir le désactiver carrément (On verra comment désactiver ce délimiteur plus bas).
  • Délimiteur de script: il s'agit du délimiteur utilisé pour invoquer un script comme Javascript. Le code PHP sera dans ce cas placé entre <script language="PHP"> et </script>. C'est un délimiteur très rarement utilisé vue sa longueur.
  • Délimiteur ASP: ASP (Active Server Pages) est un langage de script coté serveur appartenant à Microsoft. Il utilise comme délimiteur <% et %>. C'est ce délimiteur qui est repris par PHP dans ce cas. Comme pour le Short Open Tag, le tag ASP peut être activé ou désactivé dans le moteur PHP.

Fichier php.ini

Le fichier php.ini est un fichier texte qui permet de configurer le moteur PHP sur le serveur Web. Certaines fonctionnalités de PHP sont figées et ne peuvent pas être modifiées, par contre, d'autres sont personnalisables.

Le fichier php.ini contient des directives que le moteur PHP prend en considération lors de la compilation du code. Il renferme beaucoup de directives qui permettent de manipuler certaines options. Nous allons recourir à ce fichier de temps en temps pour changer les valeurs de certaines directives pour adapter l’exécution de PHP à nos besoins.
Dans le cours dédié au Système nous aurons l'occasion de manipuler d'une manière avancée le fichier php.ini.
L'emplacement du fichier php.ini peut changer d'une plateforme de développement à une autre. Pour WAMP, il suffit de cliquer sur la petite icone du logiciel sur la barre des tâches puis sélectionner l'option Fichiers de configuration ou Configuration PHP (l'option à sélectionner change légèrement d'une version à autre, mais je suis sûr que vous vous en sortirez), puis vous sélectionnez php.ini.
Attention. Une mauvaise manipulation du fichier php.ini comme le fait de commettre des erreurs lors de sa modification peut paralyser votre serveur Web. Il est préférable de faire une copie de ce fichier avant de l'éditer. Si un problème survient il suffit de rétablir la version sauvegardée.
Notez également que certaines plateformes de développement requièrent un redémarrage des services pour prendre en compte les modifications apportées sur php.ini.

Configurer les délimiteurs dans le fichier php.ini

Le tag court (<? ?>) et le tag ASP (<% %>) sont susceptibles d'être activés ou désactivés dans le fichier php.ini. Quant aux deux autres délimiteurs (le tag long et le tag de script), ils sont toujours activés.

Pour activer le tag court il suffit de déclarer la directive suivante dans le fichier php.ini:
short_open_tag = On
Pour le désactiver, on remplace On par Off.

Notez que cette ligne figure déjà dans le fichier, il suffit de modifier sa valeur si vous voulez. Si pour une raison quelconque cette ligne ne figure pas (comme c'est souvent le cas pour WAMP qui établit sa valeur par défaut d'une manière implicite) alors vous pouvez ajouter toute la ligne, enregistrer le fichier puis redémarrer les services pour que la modification soit prise en compte.
Notez que toute ligne qui commence par point-virgule (;) est un commentaire qui n'est pas pris en compte par le moteur PHP.
Pour activer le tag ASP on déclare la directive suivante:
asp_tags = On
Pour le désactiver, il faut mettre Off.
En général, toutes les directives sont précédées par un ou plusieurs commentaires qui expliquent leur utilité et la manière de les configurer.

Intégration du code PHP en vidéo



Quiz (Pour tester vos connaissances)
  1. Le fichier php.ini permet de configurer
le serveur Web
le moteur PHP
les deux
  1. Comme pour les documents HTML, on peut placer les fichiers PHP n'importe où sur l'ordinateur.
Oui
Non
  1. Si on exécute le code suivant sur le serveur:
    <p><?php echo "Bonjour" ?></p>

    Le code source qui sera visible sur le client est:
<p><?php echo "Bonjour" ?></p>
<p>"Bonjour"</p>
<p>Bonjour</p>
  1. Parmi les délimiteurs suivants, lequel doit être activé dans le fichier php.ini pour qu'il fonctionne?
<script language="PHP"></script>
<? ?>
<?php ?>
  1. Peut on placer un code PHP (avec son délimiteur) dans une balise HTML?
Oui
Non