Développement d'applications Web avec LAMP

Document d'accompagnement pour le cours 420-KB9-LG

Introduction générale

Dernière mise à jour le 8 octobre 2022

Qu'est-ce que PHP?

PHP veut dire PHP Hypertext Preprocessor (c'est un acronyme récursif!).

Langage de scripts (donc langage interprété et non compilé), libre et principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP (serveur Web).

Langage de scripts côté serveur par oppostion à JavaScript qui est un langage de scripts surtout (mais pas exclusivement) utilisé côté client.

Inventé en 1994 par Rasmus Lerdorf.

Rasmus Lerdorf est originaire du Groenland, terre conquise par les Vikings au Xe siècle

Syntaxe empruntée à C, Java et Perl.

Facile à apprendre (truc : quand on ignore comment se fait une chose avec PHP, on la fait comme en Java ou en C#).

Les scripts PHP sont intégrés au code HTML :

... code HTML ...
<?php echo "J'aime le cours de PHP!"; ?>
... code HTML ...

Les fichiers .php sont traités côté serveur par l'interpréteur PHP.

Le client ne peut voir le code PHP.

PHP peut aussi être utilisé comme langage de programmation, comme les langages de shell sur Linux (s'utilise sur la ligne de commande).

PHP est disponible sur tous les serveurs Web connus et dans tous les systèmes d'exploitation connus (même si implémenté de manières différentes).

Utilisé par des millions de sites Web sur la planète :

PHP is used by 77.4% of all the websites whose server-side programming language we know.

Choix de programmation procédurale ou objet (depuis PHP 4).

La dernière version est la 8.1.9 datant du 4 août 2022.

Permet de générer du code HTML, mais aussi (avec les bibliothèques appropriées) des images, des fichiers PDF, des animations Flash, du texte, etc.

Supporte un grand nombre de bases de données, dont Ingres, MongoDB, MySQL / MariaDB, Oracle, PostgrSQL, etc.

Depuis la version 5, PHP contient même une base de données intégrée : SQLite

Supporte un grand nombre de protocoles réseau, permet d'ouvrir des sockets TCP/IP.

Un script PHP peut même exécuter du code Java (après installation du PHP/Java Bridge)

Un premier programme

Commençons notre étude de PHP par un petit exemple.

Le programme (ou script) suivant affiche dans la fenêtre du navigateur la phrase J'aime le cours de PHP!.

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <title>Mon premier script PHP</title>
</head>
<body>
  <h1>
    <?php echo "J'aime le cours de PHP!"; ?>
  </h1>
</body>
</html>

Le fichier est constitué de code HTML dans lequel on a inséré du code PHP (en jaune).

Le code PHP est délimité par des balises (ici <?php et ?>).

Tout ce qui se trouve à l'intérieur de ces balises sera traité par l'interpréteur PHP du serveur Web.

Balises PHP

Plusieurs styles de balises sont permis.

Style recommandé

<?php echo "J'aime le chocolat !"; ?>

Style court

<? echo "J'aime le chocolat !"; ?>

Style "script"

<SCRIPT LANGUAGE='php'>echo "J'aime le chocolat !";</SCRIPT>

Style ASP :

<% echo "J'aime le chocolat !"; %>

Intégrer du code PHP et du code HTML

Tout ce qui n'est pas à l'intérieur des balises PHP est donc ignoré par l'interpréteur.

Il existe deux façons d'intégrer HTML et PHP :

1) On peut générer le code HTML à l'aide d'instructions PHP, par exemple :

<?php
if (expression booleenne) {
    echo "<strong>C'est vrai!</strong>";
} else {
    echo "<strong>C'est faux!</strong>";
}
?>

Remarque : la commande echo sert à afficher de l'information et sera abordée plus loin.

2) On peut aussi (un peu plus compliqué) utiliser le code PHP pour décider quelles portions du fichier HTML seront affichées.

Ainsi l'exemple précédent pourrait s'écrire :

<?php
    if (expression booleenne) {
?>
        <strong>C'est vrai!</strong>
<?php
    } else {
?>
        <strong>C'est faux!</strong>
<?php
    }
?>

Si cette deuxième façon vous semble compliquée pour le moment (elle vous paraîtra naturelle plus tard), limitez-vous à la première.

Sachez toutefois que pour de gros blocs de texte il est préférable de laisser le code HTML à l'écart de l'interprétation (comme dans la deuxième approche), plutôt que d'utiliser echo.

Ce qu'il faut pour faire du PHP

Il nous faudra...

Visual Studio Code

Il existe plusieurs bons éditeurs de texte adaptés à la création de code PHP.

Mais puisque vous utilisez déjà Visual Studio Code, nous vous suggérons de continuer avec cet outil.

Tout ce qu'il vous manquera alors pour développer agréablement en PHP est d'y ajouter minimalement les extensions suivantes :

Télécharger Visual Studio Code

Visual Studio Code permet le transfert automatique du fichier PHP sur le serveur à chaque fois qu'il est sauvegardé. Pour activer cette fonctionnalité, faites Ctrl+Shift+P, sélectionnez SFTP:Config et remplissez le fichier sftp.json avec ces valeurs :

{
    "name": "Mon serveur",
    "host": "198.245.55.77",
    "protocol": "sftp",
    "port": 22,
    "username": "patoche",                      <-- votre nom d'utilisateur sur le serveur Linux
    "password": "...",                          <-- votre mot de passe sur le serveur
    "remotePath": "/home/patoche/public_html/", <-- chemin de votre répertoire Web sur le serveur
    "uploadOnSave": true
}

Les valeurs surlignées en jaune ne doivent pas être modifiées.

Si le transfert automatique à la sauvegarde ne fonctionne pas (erreur de configuration ou d'utilisation de VS Code), utilisez FileZilla pour transférer vos fichiers.

Apache

On n'apprend pas la plongée sous-marine dans une piscine. D'accord, peut-être au tout début, mais il faudra tôt ou tard continuer notre apprentissage dans un lac, une rivière ou en pleine mer.

C'est pourquoi nous vous demandons dès maintenant de déployer vos applications sur un serveur distant.

En plus de vous confronter tout de suite à un contexte réaliste, cette approche a l'immense avantage que le fruit de votre travail sera accessible à tous (y compris à vos professeurs qui corrigeront à distance) et non seulement à vous.

Le serveur utilisé pour le cours a pour adresse IP statique le 198.245.55.77 et ces caractéristiques sont les suivantes :

Type            : VPS (Serveur privé virtuel)
Fournisseur     : OVHcloud
Localisation    : Beauharnois (Québec)
OS/Distribution : Ubuntu Linux 20.04 Server
Domaine         : vps208932.vps.ovh.ca
IPv4            : 198.245.55.77
IPv6            : 2607:5300:201:3100:0:0:0:889

Comme pour les fichiers HTML, les fichiers PHP devront être stockés dans le répertoire (ou un sous-répertoire de) public_html.

FileZilla

FileZilla est un client FTP, FTPS et SFTP.

Disponible gratuitement sur toutes les plateformes, il s'agit d'un excellent logiciel pour transférer des fichiers d'un ordinateur à l'autre, que ce soit pour mettre à jour un site Web, faire une copie de sauvegarde d'une base de donnée ou tester des programmes sur un Raspberry Pi.

Même s'il est possible de transférer des fichiers avec Visual Studio Code, il reste avantageux d'installer FileZilla. Vous l'utiliserez le moment venu pour téléverser (upload) ou télécharger (download) des lots de fichiers ou encore pour créer des répertoires et gérer les droits d'accès.

Si vous comptez utiliser FileZilla régulièrement avec le même serveur, vous avez avantage à créer un "site". Cela vous évitera d'avoir à entrer une série d'informations à chaque fois.

Pour créer un site, commencez par cliquer sur "Fichier" dans la barre de menus en haut de la fenêtre, puis sélectionnez "Gestionnaire de sites...". Vous pouvez aussi aller directement au gestionnaire de sites en cliquant sur le premier icône à partir de la gauche sous la barre de menus.

Dans la partie gauche du gestionnaire de sites, cliquez sur le bouton "Nouveau site", puis entrez un nom significatif pour vous (ex: "Mon site Web"). Entrez ensuite les information nécessaires dans la partie droite de la fenêtre.

Onglet Général :

Hôte                       : adresse IP ou nom de domaine du serveur (pour nous ce sera 198.245.55.77)
Protocole                  : SFTP - SSH File Transfer Protocol

Type d'authentification    : Normale
Identifiant                : votre nom d'usager sur le serveur
Mot de passe               : mot de passe associé à cet usager

Onglet Avancé :

Dossier local par défaut   : chemin du dossier contenant les fichiers à tranférer
Dossier distant par défaut : chemin du dossier cible sur le serveur (ex : /home/patoche/public_html)

Pressez enfin sur le bouton "Valider" pour enregistrer les données de connexion ou sur le bouton "Connexion" pour enregistrer les données et vous connecter immédiatement.

Les fois suivantes, vous pourrez vous connecter rapidement au serveur en utilisant le menu déroulant que l'on obtient en cliquant sur le deuxième icône sous la barre de menus (petite flèche vers le bas).

Vous pouvez télécharger le client FileZilla (le client, pas le serveur!) depuis ce site Web : Projet FileZilla

Mais où dois-je mettre mes fichiers?

Vous devez obligatoirement créer un répertoire ayant le nom public_html (c'est le serveur Web Apache qui l'exige). Toutes vos pages Web devront être transférées dans ce répertoire.

Tout ce que vous déposerez dans le répertoire public_html sera ensuite accessible à l'URL http://198.245.55.77/~pseudo.

Par exemple, l'usager dont le nom d'utilisateur est "bob" déposera ses fichiers dans le répertoire /home/bob/public_html/. Ses fichiers seront ensuite accessibles à l'URL : http://198.245.55.77/~bob/.

Bases du langage

Variables

Le nom d'une variable commence toujours par un $.

Pas besoin de les déclarer (la détermination du type se fait lors de l'affectation) :

$qteTotale = 0;          // integer
$montantTotal = 0.0;     // double

PHP est donc un langage faiblement typé.

Et tout comme JavaScript, il est aussi à typage dynamique.

Ainsi il est possible de changer le type d'une variable au milieu d'un script :

$qteTotale = 0;          // integer
$qteTotale = "Allo toi"; // string

Variables dynamiques

Il est possible de changer dynamiquement le nom d'une variable (remarquez les deux $) :

$nomVariable = "qteTotale";
$$nomVariable = 4;

// revient à faire
$qteTotale = 4;

Mais cela est rarement utilisé

Portée des variables

Tous les bouts de codes PHP présents dans un même fichier HTML ne forment qu'un seul script.

Exemple :

<html>
<body>
Tous les bouts de code PHP présents
<?php
    $langage = "HTML";
?>
dans un même fichier
<?php
    echo $langage;
?>
ne forment qu'un seul script.
</body>
</html>

Sortie :

Tous les bouts de code présents dans un même fichier HTML ne forment qu'un seul script.

Commentaires

Ils sont basés sur C, C++ et les shells Linux.

Commentaires en fin de ligne :

echo "allo"; // bla bla bla

echo "allo"; # bla bla bla

Commentaires multilignes 

/*
  bla bla bla
  bla bla bla
  bla bla bla
*/

Types de données

Ce sont :

Nom Signification Remarques
bool, boolean booléen TRUE, true, FALSE, false
int, integer entier entier signé sur 32 bits
float, double, real virgule flottante format IEEE 64 bits
string chaîne de caractères entourée de guillemets simples (apostrophes) ou doubles
array tableau (type composé) associatif ou indexé numériquement (sera abordé plus tard)
object objet (type composé) la POO sera abordée plus tard
resource ressource un "handle", pour accéder à quelque chose d'externe au script
NULL, null variable sans valeur  
mixed pseudo-type représente plusieurs types possibles (dans la documentation)

À propos des chaînes de caractères

Peuvent être délimitées par des guillemets ou des apostrophes.

Dans une chaîne à guillemets, une variable sera remplacée par sa valeur.

Exemple avec guillemets :

$n = 3;

echo "Il a vu $n oiseaux sur la branche";

Il a vu 3 oiseaux sur la branche

Exemple avec apostrophes :

$n = 3;

echo 'Il a vu $n oiseaux sur la branche';

Il a vu $n oiseaux sur la branche

Concaténation de chaînes

Il existe un opérateur de concaténation de chaînes, c'est le point.

echo $nbHobbits . " hobbits";

// revient à écrire
echo "$nbHobbits hobbits";

echo 'Il a vu ' . $n . ' oiseaux sur la branche';

Constantes

Elles sont définies à l'aide de la fonction define().

Exemple :

define("MAX", 100);

// la constante sera ici insensible à la casse
define("ANIMAL", "singe", TRUE);

Cela démontre l'importance accordée aux fonctions en PHP.

Les constantes sont écrites en majuscules par convention.

Afficher une information

echo et print

Nous avons déjà vu l'instruction echo pour afficher une chaîne et / ou une variable.

echo n'est pas une fonction, mais bien une instruction (on dit aussi une "construction") du langage et s'utilise sans parenthèses :

<?php
  $nb_hobbits = 4;
  echo "$nb_hobbits hobbits"; // affiche 4 hobbits
?>

Malgré le fait qu'il ne s'agisse pas d'une fonction, echo accepte aussi une liste de paramètres séparés par des virgules :

<?php
  $nb_hobbits = 4;
  echo $nb_hobbits, " ", "hobbits"; // affiche 4 hobbits
?>

Vous verrez parfois sur Internet l' une instruction print.

Semblable à echo, elle est moins utilisée car elle est moins performante et n'accepte qu'un seul paramètre :

<?php
  $nb_hobbits = 4;

  print "$nb_hobbits hobbits";
  print $nb_hobbits, " ", "hobbits"; // erreur
?>

Balise echo

Depuis la version 5.4.0, si le seul but du code PHP est d'afficher la valeur d'une variable, on peut utiliser ce qu'on appelle couramment la "balise echo" :

On peut ainsi remplacer :

<?php echo $variable ?>

par cette variante plus courte :

<?= $variable ?>

Ainsi le code suivant :

<p>
  J'ai vu passer <?php echo $nb_hobbits; ?> sur le chemin.
</p>

devient :

<p>
  J'ai vu passer <?= $nb_hobbits; ?> sur le chemin.
</p>

Notez que le point-virgule est ici facultatif.

Syntaxe Heredoc

Ce qu'on appelle la "syntaxe Heredoc" est utilisée avec l'instruction echo pour simplifier l'affiche de nombreuses lignes.

Après l'opérateur <<<, un identifiant est fourni, suivi d'une nouvelle ligne. La chaîne de caractères en elle-même vient ensuite, suivie du même identifiant pour fermer la notation.

Par exemple, on peut remplacer le code suivant :

<?php

  echo "Trois anneaux pour les rois Elfes sous le ciel,<br>";
  echo "Sept pour les Seigneurs Nains dans leurs demeures de pierre,<br>";
  echo "Neuf pour les Hommes Mortels destinés au trépas,<br>";
  echo "Un pour le Seigneur Ténébreux sur son sombre trône.";

?>

par :

<?php

  echo <<<FIN
  Trois anneaux pour les rois Elfes sous le ciel,<br>
  Sept pour les Seigneurs Nains dans leurs demeures de pierre,<br>
  Neuf pour les Hommes Mortels destinés au trépas,<br>
  Un pour le Seigneur Ténébreux sur son sombre trône.
FIN;
// l'identifiant doit être en début de ligne et seul sur celle-ci!

?>

Nous verrons plus tard que cette approche est très pratique lorsqu'il faut créer dynamiquement de nombreuses lignes de code HTML.

Opérateurs

Arithmétique

OpérateurSignification
+Addition
-Soustraction
*Multiplication
/Division
%Modulo (reste de la division entière)
**Exponentiation (x à la puissance y)

Affectation

OpérateurSignification
x = y
x += yx = x + y
x -= yx = x - y
x *= yx = x * y
x /= yx = x / y
x %= yx = x % y

Comparaison

Opérateur Nom Exemple Remarque
== Égal $x == $y
=== Identique $x === $y Retourne true si $x est égal à $y et est de même type
  $x = 0;
  $y = "0";

  ($x == $y) est true
  ($x === $y) est false
!= Non égal
<> Non égal
!== Non identique $x !== $y Retourne true si $x n'est pas égal à $y ou est de type différent
> Plus grand que
< Plus petit que
>= Plus grand ou égal à
<= Plus petit ou égal à
<=> "Spaceship" $x <=> $y Retourne un entier
  • inférieur à zéro si $x est plus petit que $y
  • égal à zéro si $x est égal à $y
  • supérieur à zéro si $x est plus grand que $y

Incrémentation / décrémentation

Opérateur Signification
++$x Pré-incrémentation
$x++ Post-incrémentation
--$x Pré-décrémentation
$x-- Post-décrémentation

Logiques

Opérateur Nom Exemple Remarque
&& ET $x && $y Vaut true si $x et $y sont tous les deux vrais
|| OU $x || $y Vaut true si $x ou $y est vrai
xor OU exclusif $x xor $y Vaut true si $x ou $y est vrai, mais pas les deux
! NON !$x Vaut true si $x est faux

Chaînes de caractères

Opérateur Nom Exemple Remarque
. Concaténation $chaine1 . $chaine2 Concaténation de $chaine1 et $chaine2
.= Concaténation et affectation $chaine1 .= $chaine2 Ajoute $chaine2 à $chaine1

Structures de contrôle

Conditionnelles

Ce sont les mêmes que vous avez utilisé jusqu'ici en C# et en JavaScript. Nous nous contenterons donc de présenter quelques exemples.

if else

Exemple :

$age = 17;

if ($age >= 18) {
  echo 'Vous pourrez voter';
} else {
  echo 'Vous ne pourrez pas voter';
}
switch case

Exemple :

$age = 17

switch($age) {
  case 15:
    echo 'Vous avez 15 ans';
    break;
  case 16:
  case 17:
    echo 'Vous avez 16 ou 17 ans';
    break;
  case 18:
    echo 'Vous avez 18 ans';
    break;
  default:
    echo 'Vous avez ' . $age . ' ans';
}

Boucles

Lâ aussi ce sont les mêmes que vous avez utilisé jusqu'ici en C# et en JavaScript.

while

Exemple :

// Affiche 0 1 2 3 4 5 6 7 8 9

$compteur = 0;

while ($compteur < 10) {
  echo $compteur . " ";
  $compteur++;
}
do while

Exemple :

// Affiche 0 1 2 3 4 5 6 7 8 9

$compteur = 0;

do {
  echo $compteur . " ";
  $compteur++;
} while ($compteur <= 10);
for

Exemple :

// Affiche 0 1 2 3 4 5 6 7 8 9

for ($compteur = 0; $compteur < 10; $compteur++) {
  echo $compteur . " ";
}

Soyez vigilants : il y a parfois tellement de "$" qu'il est facile d'en oublier un!

foreach

Le foreach est utilisé avec les tableaux, sujet qui sera abordé une autre fois.

Exemple :

$voyelles = ['a', 'e', 'i', 'o', 'u', 'y'];

// à chaque tour de boucle, $lettre contient une nouvelle valeur du tableau
foreach ($voyelles as $lettre) {
  echo $lettre;
}
break et continue

Exemples :

$tab = [0, 2, 4, 5, 6, 8];

for ($i = 0; $i < sizeof($tab); $i++) {
  echo $tab[$i] . ", ";
}

// Affiche 0, 2, 4, 5, 6, 8,
$tab = [0, 2, 4, 5, 6, 8];

for ($i = 0; $i < sizeof($tab); $i++) {
  if ($tab[$i] % 2 != 0) {
    break;
  }
  echo $tab[$i] . ", ";
}

// Affiche 0, 2, 4,
$tab = [0, 2, 4, 5, 6, 8];

for ($i = 0; $i < sizeof($tab); $i++) {
  if ($tab[$i] % 2 != 0) {
    continue;
  }
  echo $tab[$i] . ", ";
}

// Affiche 0, 2, 4, 6, 8

Afficher des informations sur la configuration de PHP

Vous aurez régulièrement au long de la session à vérifier la configuration du serveur qui interprète vos scripts. Vous aurez besoin, entre autres choses, de savoir...

On peut facilement obtenir toutes ces informations en appelant simplement la fonction phpinfo().

Exemple (sur 198.245.55.77) :

<?php
  phpinfo();
?>

Sortie (partielle) :

phpinfo

Récupérer les données d'un formulaire

Voyons pour terminer comment récupérer dans un script PHP les données envoyées par le client à l'aide d'un formulaire.

Ce sujet sera abordé en détail plus tard. Il ne s'agit ici que d'un avant-goût!

Les données (paramètres) d'un formulaire sont directement accessibles dans le script PHP grâce à leur nom.

Il est donc important de choisir avec soin le nom des données.

Le formulaire (côté client)

Le formulaire suivant permet la saisie de la largeur et de la hauteur d'un rectangle :

<!-- Remarque : aucune validation côté client -->

<form action="superficie.php">
  <fieldset>
    <legend>Calcul de la superficie d'un rectangle</legend>
    <label for="larg">Largeur (cm)</label>
    <input type="text" id="larg" name="largeur">
    <br>
    <label for="haut">Hauteur (cm)</label>
    <input type="text" id="haut" name="hauteur">
    <br>
    <input type="submit" value="Calculer">
  </fieldset>
</form>

Un clic sur le bouton envoie les données au script superficie.php

Le script (côté serveur)

Contenu du fichier superficie.php :

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <title>Calcul de la superficie d'un rectangle</title>
</head>
<body>
  <p>
  <?php
    echo 'La superficie du rectangle est de ' . $_GET['largeur'] * $_GET['hauteur'] . " cm<sup>2</sup>";
  ?>
  </p>
</body>
</html>

La variable "auto-globale" ou "globale automatique" $_GET est un tableau créé automatiquement et qui contient toutes les données envoyées par la méthode GET (méthode par défaut).

Essayez ce programme avec toutes sortes de valeurs :

Calcul de la superficie d'un rectangle

Exercices formatifs

Exercice 0

En partant de l'exemple précédent, ajoutez la validation des paramètres de la requête côté serveur. Si l'un des deux paramètres est invalide ou manquant, un message doit s'afficher pour indiquer la nature du problème.

Les valeurs reçues doivent être des nombres (entiers ou réels) dans l'intervale [1, 1000].

Les fonctions empty() et is_numeric() pourraient vous être utiles.

Essayez la version avec validation (la solution sera donnée au prochain cours) :

Calcul de la superficie d'un rectangle

Exercice 1

Dans cet exercice vous devez créer deux fichiers : exercice1.html et bonjour.php.

Le fichier exercice1.html contient un formulaire qui permet d'entrer un prénom et un nom et d'envoyer ces données au script PHP.

Le fichier bonjour.php affiche un gentil message incluant le prénom et le nom reçus en paramètres (voir exemple) et offre un hyperlien pour retourner à la page HTML.

Bonjour Prénom Nom! Bienvenue à votre cours de PHP!

Retour

En l'absence du nom et du prénom, la sortie sera :

Bonjour Inconnu(e)! Bienvenue à votre cours de PHP!

Retour

Remarque : les fonctions trim() et strlen() pourraient vous être utiles!

Déployez cette petite application sur le serveur et envoyez l'URL de la page HTML à votre professeur.

Cet exercice est facile, mais va nous permettre de vérifier que tout le monde est en mesure d'utiliser les outils indispensables au cours.

Questions et exercices de révision

AVERTISSEMENT

Nous ne fournirons pas les réponses à ces questions pour deux bonnes raisons. La première est que celles-ci se trouvent dans les notes de cours. La seconde est que, dans certains cas, ce serait presque donner la réponse à des questions d'examen. :

Question 1

En quelle année et par qui a été inventé PHP?

Question 2

Donnez la différence entre une chaîne encadrée par des guillemets et une autre encadrée par des apostrophes.

Question 3

Donnez le code pour créer la constante VITESSE_MAX ayant comme valeur 50.

Question 4

Donnez l'instruction qui peut dans la plupart des cas remplacer echo.

Question 5

Écrivez en PHP l'expresion "10 à la puissance 5" (ou "10 exposant 5").

Question 6

Expliquez pourquoi le résultat du code suivant est différent si on remplace l'opérateur == par ===.

$a = 5;
$b = 10;
$c = 0;
$exp = $a > $b;

if ($exp == $c) {
  echo "foo";
} else {
  echo "bar";
}

Question 7

Que peut-on dire de $b et de $c si, dans l'expression suivante, $a est positif?

$a = $b <=> $c

Question 8

Donnez la sortie du code suivant :

$x = "6789";
$y = ' 012345';
$x .= trim($y);
echo $x;

Question 9

Donnez la différence entre les instructions break et continue.

Question 10

À l'aide de la fonction phpinfo(), donnez la version de PHP installé sur notre serveur d'hébergement (198.245.55.77).