PHP Course1
PHP Course1
Langage Script
ZH
• Pour consulter un site Web sur Internet, il suffit de taper l'adresse correcte du site dans la barre d'adresse d'un navigateur Web,
et le site s'affiche (si l'accès au réseau fonctionne).
Serveur Web : Pour être accessible, un site Web doit être publié sur un serveur.
Un serveur est un type particulier d'ordinateur dont le rôle est d'attendre les demandes de clients, et d'y répondre.
Un serveur rend un service à ses clients.
Il existe de nombreux types de serveurs, en fonction du service rendu : serveur de fichiers, de messagerie, d'authentification...
Un serveur qui permet de publier des sites Web est appelé serveur Web.
Note : une même machine peut rendre différents services (exemple : serveur Web et serveur de fichiers).
Plus précisément, une machine serveur Web embarque et exécute un logiciel serveur, capable de répondre aux demandes
de consultations de sites Web. Les logiciels serveurs Web les plus populaires sont Apache, Microsoft IIS et nginx.
Fonctionnement web ZH
Client Web: La machine qui permet la consultation du site Web demandé est appelé client Web.
Il s'agit d'un abus de langage : en réalité, le véritable client est un logiciel qui s'exécute sur cette machine
et réalise l'opération de consultation. Ce logiciel est le plus souvent un navigateur Web (browser).
Les navigateurs Web les plus populaires sont Internet Explorer, Mozilla Firefox, Chrome, Safari et Opera.
D'autres types de logiciels que les navigateurs peuvent jouer le rôle de clients Web en se connectant à des serveurs Web.
La compréhension des échanges ayant lieu entre un client et un serveur Web lors de la consultation d'un site est essentielle.
Il s'agit d'un mécanisme de type requête/réponse:
1. L'échange est initié par le client, qui envoie au serveur une requête pour consulter une ressource Web.
2. Le serveur prépare la page HTML associée.
3. Le serveur renvoie la page HTML au client, qui l'affiche.
Afin de se comprendre, client et serveur Web utilisent pendant leurs échanges un protocole commun : HTTP.
Protocoles HTTP ZH
HTTP (HyperText Transfert Protocol) est le protocole de transfert du Web. Créer en 1989 au CERN de Genève, en même temps que le
langage HTML, qui a conduit à l'apparition du World Wide.
HTTP est fondamentalement un protocole très simple, basé sur des commandes textuelles.
Le fonctionnement du HTTP peut être expliqué très simplement à travers la consultation d’un site Internet :
Si le fichier a été trouvé et si le client demande à l’obtenir (c’est-à-dire si le client ne souhaite pas uniquement savoir s’il existe), après
l’en-tête, le serveur envoie le corps du message, à savoir le contenu à proprement parler. Dans notre exemple, il s’agit du
fichier index.html.
Le navigateur reçoit le fichier et l’affiche sous forme de site Internet.
ZH
Code de retours HTTP ZH
Ce code est destiné au client HTTP (et non à l'utilisateur) pour lui indiquer le statut de sa requête. Les codes
HTTP sont séparés en 5 familles, qui se distinguent par le premier digit du code retour :
•1xx : Informations
•2xx : Succès
•3xx : Redirections
•4xx : Erreur du client
Il existe plusieurs dizaines de code HTTP, mais certains sont plus utilisés que d'autres, en voici quelques-uns :
•401 Unauthorized: « Vous n'avez pas le droit d'accéder à cette ressource, il faut une authentification »,
GET POST
Source :
https://www.w3schools.com/tags/ref_httpmethods.asp
GET VS POST ZH
❑ POST est presque toujours favorisé lorsque l’utilisateur doit soumettre des données ou des fichiers au serveur, par exemple pour remplir
des formulaires ou télécharger des photos.
❑ GET est particulièrement bien adapté pour personnaliser les sites Web : les recherches des utilisateurs, les paramètres de filtrage et le
tri des listes peuvent être mis en marque-page avec l’URL, de sorte qu’à la prochaine visite du site, l’utilisateur retrouvera la page telle
qu’il l’a laissée.
❑ GET pour les paramètres d’un site Web (filtres, tri, saisies de recherche, etc.).
Les tous premiers sites Web créés dans les années 1990 étaient composés uniquement de pages HTML
(pour le contenu) et de fichiers CSS (pour la mise en forme du contenu), et éventuellement d'autres
types de ressources comme par exemple des images.
Lorsqu'un client envoie une requête au serveur Web hébergeant un site statique, le serveur se contente
de renvoyer la ressource demandée. Les pages HTML affichées ne peuvent pas évoluer
automatiquement, d'où le terme "statique".
La mise à jour d'un site Web statique nécessite l'édition des fichiers sources, puis la mise en ligne des
modifications (publication sur le serveur Web).
PHP ZH
L'explosion de la popularité du Web au début des années 2000 a provoqué l'appatition de nouveaux
besoins et conduit à l'émergence des sites Web dynamiques. A l'inverse d'un site statique, un site
dynamique est un type de site Web dans lequel le contenu des pages est construit au moment de la
requête du client.
Lorsqu'un client envoie une requête au serveur Web hébergeant un site dynamique, le serveur prépare
la page HTML correspondant à cette requête, puis la renvoie au client pour affichage. Les pages Web
affichées au visiteur ne sont pas figées comme dans le cas d'un site statique, mais générées au moment
de leur consultation.
PHP ZH
Pour créer un site Web dynamique. il faut obligatoirement utiliser un langage capable de générer des
pages HTML. Le diagramme ci-dessous rassemble les principaux langages capables de réaliser cette
tâche.
source : https://w3techs.com/technologies/details/pl-php
Balises Php (tags) ZH
PHP (PHP Hypertext Preprocessor) est un langage de scripts généraliste et Open Source, spécialement conçu pour le développement
d'applications web. Il peut être intégré facilement au HTML.
<!DOCTYPE html>
<html>
<head>
<title>Exemple</title>
</head>
<body>
<?php
echo "Bonjour, je suis un script PHP !";
?>
</body>
</html>
Le code PHP est inclus entre une balise de début <?php et une balise de fin ?> qui permettent au serveur web de passer en mode PHP.
Balises Php ZH
Lorsque PHP traite un fichier, il cherche les balises d'ouverture et de fermeture (<?php et ?>) qui
délimitent le code qu'il doit interpréter. cela permet à PHP d'être intégré dans toutes sortes de
documents.
Tout ce qui se trouve en dehors des balises de PHP est ignoré.
On peut inclure aussi une balise ouvrante courte echo : <?= qui est un raccourci au code plus verbeux
<?php echo.
Les balises courtes sont disponibles par défaut, mais peuvent être désactivées soit via l'option
short_open_tag du fichier de configuration php.ini, ou sont désactivées par défaut si PHP est compilé
avec l'option --disable-short-tags.
En terme de compatibilité, il est conseillé d’utiliser les balises normales du script php
Commentaire ZH
PHP supporte les commentaires de type C, C++ et Shell Unix (aussi appelé style Perl).
<?php
echo 'Ceci est un test'; // Ceci est un commentaire sur une seule ligne, style c++
/* Ceci est un commentaire sur
plusieurs lignes */
echo 'Ceci est un autre test';
echo 'Et un test final'; # Ceci est un commentaire style shell sur une seule ligne
?>
Séparation des instructions ZH
PHP requiert que les instructions soient terminées par un point-virgule à la fin de chaque
instruction.
La balise fermante d'un bloc de code PHP implique automatiquement un point-virgule ; pas besoin
d'utiliser un point-virgule pour terminer la dernière ligne d'un bloc PHP.
La balise fermante d'un bloc inclue le caractère de nouvelle ligne suivi immédiatement si un est
présent.
<?php
echo 'This is a test';
?>
4 types composés :
• array (tableau)
• Object ( poo)
• Callable (fonctions)
• Iterable (boucles)
2 types spéciaux :
• Resource ( exemple d’un appel de base de données )
• NULL (Une variable de type NULL est une variable à laquelle aucune valeur n'est attribuée).
Affichage ZH
• Sensible à la case
• Nom : $ suivit de lettres, chiffres et le underscore (_)
• Les alphabets et les alphanumériques
• Le type s'ajuste au contenu de la variable ( affectation dynamique)
Types de données ZH
• Fonction gettype(nom)
• Connaître le type d'une variable
• $test = 5;
• echo gettype( $test ); // integer
• settype(variable, type)
• Modifier le type d'une variable.
• $test = 8.54;
• settype($test, integer); //$test<=8
• Transtypage/ cast
• $test1 = 8.5;
• $test2 = (int) $test1;
Types de données ZH
Exemple:
<?php
$a_bool = TRUE; // un booléen
$a_str = "foo"; // une chaîne de caractères
$a_str2 = 'foo'; // une chaîne de caractères
$an_int = 12; // un entier
str_replace() 🡺 remplace certains caractères par d'autres dans une chaîne de caractères.
min() , max() 🡺 la valeur la plus basse ou la plus haute dans une liste d'arguments.
.= Concaténation $x .= $y
affectation
Les opérateurs ZH
or OU $x or $y
&& ET $x && $y
|| OU $x || $y
! NOT !$x
Les opérateurs ZH
Opérateurs de comparaison
Opérateur Nom Exemple Explication
?: Ternaire $x = expr1 ? expr2 : expr3 Renvoie la valeur de $x.
La valeur de $x est expr2 si expr1 = VRAI.
La valeur de $x est expr3 si expr1 = FALSE.
?? Coalescence nulle $x = expr1 ?? expr2 Renvoie la valeur de $x.
La valeur de $x est expr2 si expr1 = VRAI.
La valeur de $x est expr3 si expr1 = FALSE.
Les structures de contrôle ZH
<?php
if ($x > $y)
echo "x est plus grand que y";
?>
<?php
if ($x > $y) {
echo "x est plus grand que y";
$y = $x;
}
?>
Les structures de contrôle ZH
<?php
if ($x > $y) {
echo "x est plus grand que y";
} else {
echo "x est plus petit que y";
} <?php
?> if ($x > $y) {
echo "x est plus grand que y";
} elseif ($x == $y) {
echo "x est égal à y";
} else {
echo "x est plus petit que y";
}
?>
Les structures de contrôle ZH
<?php
if ($x == 9):
echo "x égale 9";
echo "...";
elseif ($x == 13):
echo "x égale 13";
echo "!!!";
else:
echo "a ne vaut ni 9 ni 19";
endif;
?>
Les structures de contrôle ZH
While et do\while
<?php <?php
/* exemple 1 */ $i = 0;
do {
$i = 1; echo $i;
while ($i <= 10) { } while ($i > 0);
echo $i++; /* La valeur affichée est $i ?>
avant l'incrémentation */
} <?php
do {
/* exemple 2 */ if ($i < 5) {
echo "i n'est pas suffisamment grand";
break;
$i = 1;
}
while ($i <= 10): $i *= $factor;
echo $i; if ($i < $minimum_limit) {
$i++; break;
endwhile; }
?> echo "i est bon";
/* ...traitement de i... */
} while (0);
?>
Les structures de contrôle ZH
While et do\while
<?php <?php
/* exemple 1 */ $i = 0;
do {
$i = 1; echo $i;
while ($i <= 10) { } while ($i > 0);
echo $i++; /* La valeur affichée est $i ?>
avant l'incrémentation */
} <?php
do {
/* exemple 2 */ if ($i < 5) {
echo "i n'est pas suffisamment grand";
break;
$i = 1;
}
while ($i <= 10): $i *= $factor;
echo $i; if ($i < $minimum_limit) {
$i++; break;
endwhile; }
?> echo "i est bon";
/* ...traitement de i... */
} while (0);
?>
Les structures de contrôle ZH
for et foreach
<?php <?php
$arr = array(1, 2, 3, 4); /* exemple 1 */
foreach ($arr as &$value) {
for ($i = 1; $i <= 10; $i++) {
$value = $value * 2;
echo $i;
} }
// $arr vaut maintenant array(2, 4,
6, 8) /* exemple 2 */
unset($value); // Détruit la
référence sur le dernier élément for ($i = 1; ; $i++) {
?> if ($i > 10) {
break;
}
echo $i;
}
L'instruction break permet de sortir d'une structure for, foreach, while, do-while ou switch
Les structures de contrôle ZH
for et foreach
<?php <?php
$arr = array(1, 2, 3, 4); /* exemple 1 */
foreach ($arr as &$value) {
for ($i = 1; $i <= 10; $i++) {
$value = $value * 2;
echo $i;
} }
// $arr vaut maintenant array(2, 4,
6, 8) /* exemple 2 */
unset($value); // Détruit la
référence sur le dernier élément for ($i = 1; ; $i++) {
?> if ($i > 10) {
break;
}
echo $i;
}
L'instruction break permet de sortir d'une structure for, foreach, while, do-while ou switch le contraire de continue qui permet de
commencer la prochaine itération.
Les structures de contrôle ZH
switch -case
Switch-case est l'équivalent de plusieurs instructions if et l'exécution se fait par ordre.
<?php
// Ce switch:
switch ($i) {
if ($i == 0) {
case 0: echo "i égal 0";
echo "i égal 0"; } elseif ($i == 1) {
break; echo "i égal 1";
case 1: } elseif ($i == 2) {
echo "i égal 1"; echo "i égal 2";
break; }
case 2: ?>
echo "i égal 2";
break;
}
ZH
TP1
ZH
EX1: vérifier dans une expression conditionnelle si une variable est multiple de 7 et 9. (if / else)
Ex2: Effectuer une suite de tirages de nombres aléatoires jusqu’à obtenir une suite composée d’un nombre pair suivi de
deux nombres impairs. ( do / while)
Ex3: Créer un tableau dont les indices varient de 10 à 50 et dont les valeurs sont des lettres de A à Z. Lire ensuite ce tableau
avec une boucle for puis une boucle foreach et afficher les indices et les valeurs ( indice : fonction chr(n) )
Ex4: Utiliser une boucle while pour déterminer le premier entier obtenu par tirage aléatoire qui soit un multiple d’un nombre
donné. Écrire la variante utilisant la boucle do…while
Ex5: En utilisant la fonction strlen() écrivez une boucle qui affiche chaque lettre de la chaîne Hello world sur une ligne
différente.
Ex6: Écrivez un tableau multidimensionnel associatif dont les clés sont des noms de personne et les valeurs des tableaux
indicés contenant le prénom, la ville de résidence et l'âge de la personne , afficher les valeurs du tableaux avec une boucle
while.
*
**
Ex7: En utilisant deux boucles for, écrire un script qui produit le triangle d’or: ***
****
*****
******
*******
********
*********
**********
ZH
Ex 8: En utilisant la fonction rand(), remplir un tableau avec 10 nombres aléatoires. Puis, trier les valeurs dans deux
tableaux distincts. Le premier contiendra les valeurs inférieures à 30 et le second contiendra les valeurs supérieures ou
égales à 30. Enfin, afficher le contenu des deux tableaux.
Ex 9: Écrivez un programme PHP pour supprimer les doublons d’un tableau triée.( on utilise la fonction array_unique)
Ex 10: Écrivez un programme PHP pour afficher la table de multiplication jusqu’à 3 * 5. ( on utilise la fonction str_pad)