Vous êtes sur la page 1sur 10

Programmation

Server-Side avec
PHP

Dr. Karim AKILAL


1.0
Juin 2020

Paternité : http://creativecommons.org/licenses/by/4.0/fr/
Table des matières

I - Programmation Server-Side avec le PHP 3

1. Objectifs et prérequis .................................................................................................................................................. 3


2. Introduction .................................................................................................................................................................. 3

3. Pré-requis techniques ................................................................................................................................................. 4

3.1. HTTP, requêtes et réponses. ................................................................................................................................................. 4

3.2. Les serveur web .................................................................................................................................................................... 4

3.3. Imbrication du code PHP ....................................................................................................................................................... 5

4. Éléments du langage PHP ......................................................................................................................................... 5

4.1. Les variables en PHP ............................................................................................................................................................ 6

4.2. Les types en PHP .................................................................................................................................................................. 6

4.3. Les structures de contrôle ..................................................................................................................................................... 7

4.4. Les fonctions ......................................................................................................................................................................... 8

4.5. Structuration des programmes PHP ...................................................................................................................................... 8

4.6. Gestion des formulaires ......................................................................................................................................................... 9


Programmation Server-Side avec le PHP

I Programmation Server-
Side avec le PHP

1. Objectifs et prérequis
Ce chapitre a pour objectif d'introduire l'apprenant à un quatrième langage du web, à savoir le PHP. À l'issue de ce
chapitre, l'étudiant:

- aura des notions élémentaires du langage PHP


- saura écrire des programmes plus ou moins complexe en PHP
- pourra employer ces connaissances pour développer des application web dynamiques

Pré-requis: Pour pouvoir suivre ce chapitre et en tirer profit, l'apprenant doit avoir des connaissances de base en
algorithmique, notamment la déclaration de variables et les structures de contrôle.

2. Introduction
PHP (acronyme récursif pour PHP: Hypertext Preprocessor) est un langage interprété open-source qui nous permet à
l'instar d'autres langages tels que Python, Ruby, Java, etc, de développer des applications web dites dynamiques.

En effet, les sites web que nous avions pu développer jusqu'à présent étaient statique en ce sens que la page HTML
telle qu'envoyée par le serveur était la même pour tous les utilisateurs, et ne changeait pas de contenu, ou de forme
d'ailleurs, avec le temps.

Cependant, et malgré la dynamicité locale offerte par JavaScript, une application web est souvent censée récupérer
des informations depuis le client, et adapter son résultat (output) selon ces données ainsi collectées.

Un site qui permet à ses utilisateurs de s'inscrire, de saisir leurs profils et d'autres données les concernant, doit de
par sa conception adapter le rendu de ces pages selon ces paramètres. Et c'est pour ces raisons, et bien d'autres,
que nous avons besoin d'un moyen pour délivrer des pages HTML créées au vol depuis le serveur et qui soient
dynamiques (contenu et forme).

L'idée, par conséquent, est simple: faire générer des documents HTML (voire CSS, et JavaScript aussi) depuis le
serveur avec des programmes et les faire délivrer au client. PHP, comme langage de scripting server-side, peut faire
ceci et bien d'autres choses.

Aussi, ce chapitre a pour objectif premier de vous introduire à ce langage, de vous en apprendre les rudiments et les
bases de son utilisation pour que vous puissiez écrire vous aussi vos sites web dynamiques. Sans prétendre être
exhaustif, ce chapitre vous guidera dans vos premiers pas et tentera de vous orienter et vous inciter à utiliser les
ressources mises à votre disposition.

3
Pré-requis techniques

3. Pré-requis techniques

Avant de nous lancer dans les détails de ce langage, il est important de comprendre certains aspects du web et
des communications entre le client et le serveur.

Cette compréhension nous sera utile quand nous aurons à développer des applications web dynamiques, en ce
sens qu'il nous sera plus facile de comprendre ce qu'attend le client du serveur et vice versa.

3.1. HTTP, requêtes et réponses.


Internet, en général, et le web spécialement, fonctionnent selon le mode client-serveur. Un client demande ou émet
une requête, et le serveur sert, ou émet une réponse à cette requête.

Ces requêtes sont souvent de natures différentes. En effet, un client peut demander de stocker un ensemble
d'informations, les modifier, les supprimer, ou tout simplement les récupérer depuis le serveur.

Ces différentes natures correspondent en fait à ce qui est appelé les verbes HTTP, dont nous citons à titre d'exemple:

- GET: En émettant une requête GET, le client exprime le souhait de recevoir une ressource depuis le serveur
sans aucune intention de changer l'état de celui-ci.
- POST: En émettant une requête POST, le client envoie un ensemble d'informations et demande au serveur de
les traiter (comme le serveur le voit, y compris les enregistrer).
- PUT: En émettant une requête PUT, le client envoie un ensemble d'informations et demande au serveur de les
enregistrer comme ressource à l'URI spécifiée. Si l'entité existe déjà le serveur la met à jour.
- DELETE: En émettant une requête DELETE, le client demande au serveur de supprimer l'entité pointée par
l'URI spécifiée dans la requête.

 Remarque

Sachez qu'il existe bien d'autres verbes tels que HEADER, TRACE, PATCH, etc. Chacun de ces verbes ayant une
utilisation bien spécifique.

 Exemple

Lorsque vous insérez dans votre HTML une balise <script> avec l'attribut src pointant vers une URI, le client
émet en effet une requête GET pour récupérer ce fichier. De même pour les feuilles CSS, les images, etc.

 Exemple

Lorsque vous soumettez un formulaire d'inscription ou de login, le client émet souvent une requête POST (ou PUT,
selon les cas) au serveur avec vos coordonnées.

3.2. Les serveur web


D'après ce que nous venons de voir, il est donc clair que pour que le serveur (machine) puisse servir les client il faut
qu'il dispose d'un programme qui envoie, et même génère, des données à envoyer au client.

4
Imbrication du code PHP

Ce programme est appelé simplement: un serveur web. Il en existe des dizaines chacun avec ses qualités et ses
défauts, sa simplicité, ou sa complexité, etc.

Le but de ce cours n'étant pas de vous apprendre à installer un serveur web (chose que vous ferez en séance de
travaux pratiques), sachez néanmoins et à titre d'exemple, que des serveurs existent pour différentes plateformes,
dont par exemple: apache, nginx, lightttpd, httpd, etc.

 Remarque

Sous windows, certaines applications comme wamp, ou xamp, facilitent l'installation d'un ensemble de serveurs tels
qu'Apache et MySQL en un clique.

3.3. Imbrication du code PHP


PHP, nonobstant ses défauts, offre la facilité d'imbriquer (to embed) du code PHP directement dans vos pages web
avec une syntaxe simple et légère.

La majorité des serveurs web sont par défaut configurés de telle sorte à ce que tout fichier ayant l'extension '.php' soit
interprété comme un programme PHP.

Mais pour pouvoir distinguer la partie purement PHP du HTML de la page, PHP utilise deux balises qui délimitent la
partie dynamique (ou script) de la page. En effet, tout ce qui est entre <?php et ?> est interprété comme du PHP et
donc soumis à l'interpréteur PHP pour évaluation avant d'être remplacé par le résultat de cette interprétation dans la
page HTML.

Un fichier PHP est donc de la forme:

 Exemple

1 // Code HTML ici.


2 <?php
3 // Instructions PHP ici.
4 ?>
5 // Éventuellement un autre code HTML ici.
6
7 <?php
8 // D'autres éventuelles instructions PHP ici.
9 ?>
10 // etc.

4. Éléments du langage PHP

Dans cette partie du cours, nous verrons ensemble quelques éléments et notions essentielles du langage PHP.
Certes, cette partie est loin d'être exhaustive, mais l'étudiant est vivement invité à explorer le langage par ses
propres efforts, et à partager ses connaissances avec ses pairs.

Comme avec JavaScript, nous commencerons par les variables, ensuite les structures de contrôle de base, et
finirons par les fonctions et la modularité des projets PHP en général.

5
Les types en PHP

4.1. Les variables en PHP


Avant de nous y mettre, commençons, comme le veut la tradition, par un programme simple du genre "Hello, World!".

 Exemple

1 <?php
2 echo "Hello, world!";
3 ?>
4

Ce programme simple insère (ou affiche à vrai dire) la phrase "Hello, World!" dans la page à l'endroit où cette
instruction echo est. Cette commande est un peu l'équivalent de printf en C, ou de print en Pascal, Python, et
d'autres langages.

Les chaînes de caractères sont délimitées comme en JavaScript soit par des guillemets ou des quottes simples.

En PHP, toutes les variables doivent impérativement déclarées avec des identificateurs commençant avec le signe $,
suivi d'une lettre, puis éventuellement d'un ou plusieurs autres caractères.

 Exemple

1 $x = 10; //Une variable numérique (entière)


2 $poid = 10.6; //Une variable numérique (réelle)
3 $present = false; //Une variable booléenne
4 $nom = "Alice"; //Une variable chaîne de caractères.
5 $ville = 'Rome'; //Une variable chaîne de caractères.

Comme JavaScript, le PHP n'est pas vraiment strict quant aux types des variables,

Les opérateurs restent les même que ceux du JavaScript, à part pour la concaténation de chaînes de caractères qui
devra se faire avec l'opérateur . (point).

 Remarque

Remarquez que les variables peuvent être insérées directement dans une chaîne de caractères et y être interpolés à
condition que la chaîne de caractères soit entourée par des guillemets.

 Exemple

1 $age = 30;
2 echo "Bob a $age ans"; // Affiche Bob a 30 ans
3 echo 'Bob a $age ans'; // Affiche Bob a $age ans

4.2. Les types en PHP


Un peu comme JavaScript, PHP dispose de quelques types tels que les Strings, les entiers, les réels, les booléens,
les tableaux, les objets, etc.

Nous venons de voir les chaînes de caractères, les nombres, et les booléens. Passons à présent à une structure de
données tout aussi importante: les tableaux.

6
Les structures de contrôle

Les tableau en PHP peuvent être séquentiels comme ceux du C, du JavaScript, et d'autres langages, ou associatifs
(dictionnaires en Python par exemple)

 Exemple

1 // Ceci est un tableau séquentiel, indexé par des entiers


2 // en commençant par 0.
3 $tab = [1, 2, 3, 4];
4 // Accès
5 echo "La valeur à l'index 0 est " . $tab[0];
6 // Ajouter un élément à la fin du tableau
7 $tab[] = 5;
8 // Les tableaux peuvent contenir des valeurs mixtes
9 $tab[] = "six";
10 // $tab contient désormais: [1, 2, 3, 4, 5, "six"];
11

Outre ces tableaux indexés par des entiers commençant par 0, nous avons aussi des tableaux associatifs (ou
HashMaps), et qui sont indexés par des chaînes de caractères.

 Exemple

1 // Alice a 14, et Bob 12


2 $notes = ['Alice' => 14 , 'Bob' => 12];
3 echo $notes["Alice"]; //affiche 14.

 Remarque

Plusieurs fonctions vous sont offertes pour traiter les tableaux. En effet, l'on peut citer count() pour calculer le
nombres d'éléments du tableau, max() ou min() pour le max et le min respectivement. sort() pour le tri, etc.

4.3. Les structures de contrôle


Comme tout autre langage impératif, le PHP nous offre quelques structures de contrôle traditionnelles telles que le if
/else, le for, le while, etc.

Ci-dessous quelques exemple:

 Exemple

1 $a = 1;
2 $b = 5;
3 if($a < $b){
4 echo 'a est inférieur à b';
5 } else {
6 echo "$a est supérieur à b";
7}
8
9 // Un tableau séquentiel
10 $tab = [1, 4, 5];
11 for($i = 0; $i < 3; i++){
12 echo "La case $i contient la valeur $tab[i]";
13 }
14
15 // Une autre syntaxe pour déclarer des tableaux.

7
Les fonctions
15
16 $couts = array(
17 'tomates' => 60,
18 'oranges' => 100,
19 'cerises' => 600
20 )
21
22 //Afficher une liste des produits avec leurs prix.
23 echo '<ul>';
24 foreach($couts as $produit => $prix){
25 echo "<li>Le prix de $produit est de $prix</li>";
26 }
27 echo '</ul>';
28

4.4. Les fonctions


PHP offre une syntaxe pour les fonction assez similaire à JavaScript et d'autres langages. Une fonction pouvant avoir
zéro ou plusieurs paramètres en entrée, et zéro ou une sortie.

 Exemple

1 // Fonction simple
2 function max($a, $b){
3 if($a > $b)
4 return $a;
5 else
6 return $b;
7}
8
9 echo "Entre 5 et 3, " . max(3, 5) . ' est le plus grand';
10
11 // Fonction avec paramètres optionnels comme le C++
12 // Cette fonction nous permet de créer un <li> avec
13 // comme contenu la valeur $contenu, et comme classe
14 // $classe. Cette classe pouvant être omise lors de l'appel
15 // et aura par conséquent la valeur 'menu'.
16
17 function make_li($contenu, $classe='menu'){
18 echo '<li class="'.$classe.'">'.$contenu.'</li>'
19 }
20
21 // Afficher <li class="menu">Présentation</li>
22 make_li('Présentation');
23
24 // Afficher <li class="fruit">Orange</li>
25 make_li('Orange', 'fruit');
26
27

 Remarque

Comme vous avez pu le remarquer des les exemples précédents, une fonction peut retourner une valeur, ou pas.

4.5. Structuration des programmes PHP


Un programme PHP, comme tout autre programme d'ailleurs, peut vite devenir long et difficile à maintenir. Par
ailleurs, le développeur pourrait souhaiter découper son programme en parties fonctionnelles indépendantes, et
extraire les blocs redondants et les réutiliser à travers son application web.

8
Gestion des formulaires

PHP offre justement la possibilité d'inclure des scripts dans d'autres avec 4 fonctions principales:

- include($fichier): cette fonction permet d'inclure le fichier $fichier à l'endroit où cette fonction est
appelée. Et si le fichier $fichier n'existe pas, produire un avertissement (warning) et continuer l'exécution
du programme.
- require($fichier): cette fonction permet d'inclure le fichier $fichier à l'endroit où cette fonction est
appelée. Et si le fichier $fichier n'existe pas, produire une erreur (error) et arrêter l'exécution du programme.

Ces deux fonctions ont une autre variante chacune et qui est suffixée par _once, à savoir include_once
($fichier) et require_once($fichier). Ces deux versions de ces fonctions font la même chose que leurs
correspondantes, mais n'incluent pas le fichier s'il a été déjà inclus avant. D'où le once dans leurs noms.

 Exemple

1 // Fichier a-inclure.php:
2 $a = 10;

1 // Fichier appelant.php
2 // a-inclure.php se trouve dans le même dossier que celui-ci.
3 include(./a-inclure.php);
4 $b = 2;
5 echo "La somme de a et b est $a+$b"; //12

4.6. Gestion des formulaires


Soumettre des données depuis le client vers le serveur pour qu'elles soient traitées et avoir un résultat de ces
traitements en retour est la raison d'être des formulaires.

Pour rappel, un formulaire en HTML est déclaré en utilisant la balise <form>. Cette dernière a justement deux
attributs intéressants: method et action.

- method: désigne quelle méthode (ou verbe HTTP) le client devrait utiliser pour soumettre le contenu du
formulaire au serveur. En l'occurrence, cet attribut peut être égal à POST ou GET.
- action: désigne l'adresse où les données du formulaire sont envoyées pour être traitées.

 Attention : Champs des formulaires

Pour distinguer les champs d'un formulaire donnée, et contrairement à JavaScript (pour qui l'attribut id suffit), la
soumission d'un formulaire compte sur la présence d'un attribut name pour les champs à soumettre.

 Exemple

1 <form method="POST" action="/traiter.php">


2 <input type="text" name="nom" value="" />
3 <input type="text" name="prenom" value="" />
4 <input type="submit"/>
5 </form>
6

Le formulaire précédent contient deux champs dont les attributs name sont nom et prenom.

Ce formulaire est soumis en POST à l'adresse /traiter.php

9
Gestion des formulaires

La question que l'on se poserait maintenant, c'est comment pourrait le script traiter.php récupérer les valeurs
saisies dans ces champs input?

La réponse est simple. PHP définit plusieurs variables dites super-globales telles que $_POST, $_GET, $_SERVER,
etc.

Ces variables sont souvent sous forme de tableaux associatifs qui contiennent justement l'information dont nous
avons besoin. En effet, si le formulaire précédent venait à être soumis, alors le script pourrait récupérer la valeur du
champ nom dans $_POST['nom'], et la valeur du champs prenom dans $_POST['prenom'].

 Exemple

1 // Fichier traiter.php
2 // Récupérer les valeurs postées.
3 $nom = $_POST['nom'];
4 $prenom = $_POST['prenom'];
5 echo "Bonjour $prenom $nom";

 Remarque

Remarquez que si le formulaire avait GET comme valeur pour son attribut method, alors ces champs devraient être
récupérés dans le tableau associatif $_GET.

10

Vous aimerez peut-être aussi