Programmation web Avancée
Partie II: PHP
Chap1: Introduction
Par O. Boutkhoum
Faculté des Sciences – El Jadida SMI S6, 2020/2021
Programme
Partie II: PHP
Introduction à la programmation web en PHP
Eléments du langage I: Les variables, Les types, Les constantes, …
Eléments du langage II: Structures de contrôle & Fonctions
Formulaire
Expressions régulières en PHP
Fichiers
Interfaçage de MySql via le langage PHP
Sessions et Cookies
Les Objets en PHP
2
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
PHP : Hypertext Preprocessor
◼ Langage de script intégré à HTML/XHTML, côté serveur
◼ Sa syntaxe est largement inspirée du langage C, C++ et de Java.
◼ Le serveur parse les documents et interprète le code PHP
◼ Exécuté instruction par instruction
◼ Le client reçoit uniquement le résultat du script (une page “générée”)
◼ Fichiers d’extension .php
Code inséré dans une page HTML
Entre balises <?php et ?>
◼ Dernière version stable: PHP 7.4 (20 février 2020)
3
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
Utilisation
◼ Grand succès
◼ Utilisation par de très grands sites
◼ beaucoup de code libre disponible.
◼ des dizaines de millions de sites Web l’utilisent à travers le monde comme:
Zoom.us, http ://facebook.fr/, http ://yahoo.fr/, http://salesforce.com/, https://realtor.com/, …..
◼ Selon les données de W3Techs, PHP est utilisé par plus de 70% de tous les sites web avec un langage de
programmation côté serveur connu.
4
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
Utilisation
◼ Ce diagramme montre les positions du marché
en termes de popularité et de trafic des 5 langages
de programmation côté serveur les plus populaires.
5
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
CMS
Les grands CMS (Content Management Systems ou Systèmes de Gestion de Contenus) utilisent PHP, comme :
◼ Wordpress,
◼ Joomla,
◼ Drupal
Frameworks
De grands Frameworks de développement Web aussi sont disponibles en PHP :
Symfony,
Zend,
Laravel,
Phalcon,
CakePHP, Yii, Slim 6
Omar Boutkhoum –
[email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
Domaine d’application pratique
◼ Forums et Messageries
◼ Commerce électronique
◼ Banque / Comptes en ligne
◼ Publication en ligne
◼ Moteurs de recherche
◼ …..
7
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
Fonctionnement
◼ L’interpréteur: Lit un fichier source .php puis génère un flux de sortie avec les règles suivantes :
toute ligne située à l’extérieur d’un bloc PHP ( entre <?php et ?>) est recopiée inchangée dans le flux
de sortie
le code PHP est interprété et génère éventuellement des résultats intégrés
eux aussi au flux de sortie
les erreurs éventuelles donnent lieu à des messages d’erreurs qu’on
retrouve également dans le flux de sortie (selon la configuration du serveur)
une page html pure sauvegardée avec l’extension .php sera donc non
modifiée et renvoyée telle quelle . . .
8
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
Fonctionnement
2. Le serveur transmet la page au
moteur PHP pour le traitement
1. Demande d’une page
5. Envois du code
HTML de la page au
navigateur du client
3 et 4. Le moteur PHP traite les données puis
génère la page HTML qu’il retransmet au serveur
9
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
Fonctionnement
◼ Pourquoi les pages dynamiques?
▪ Sites à contenu fréquemment modifiable (articles à vendre, annonces, avis…)
▪ Mise à jour automatique (site web qui se gère lui-même)
▪ Sites exigeant une adhérence (utilisateurs multiples, sessions…)
▪ Forums de discussion
▪ Sites proposant des champs pour accueillir les avis des visiteurs (livres d’or)
▪ Sites de téléchargement
▪ Sites de messagerie électronique
10
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
Premier script PHP
Exemple de script PHP
Autre écriture du même script
Résultat coté navigateur
11
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Introduction à la programmation web en PHP
Installation PHP
◼ WAMP :
Windows
Apache
MySQL
PHP
◼ LAMP pour Linux et MAMP pour les Macs.
◼ XAMPP peut être utilisé pour n'importe quel système d'exploitation.
✓ Sous windows, installer WampServer qui est une plate-forme de développement Web sous Windows
pour des applications Web dynamiques à l’aide du serveur Apache2, du langage de scripts PHP et
d’une base de données MySQL. Il possède également PHPMyAdmin pour gérer plus facilement les
bases de données.
12
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Syntaxe de base
Affichage
Les variables
Les constantes
Les types
Les tableaux
13
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Syntaxe de base
◼ Insertion d’une commande PHP :
<?php code ?>
◼ Séparateur d’instructions : le point virgule “ ;”
<?php instruction1; instruction2; ... ?>
◼ Commentaires : syntaxe à la C, C++ ou Shell
// ...
/* ...
…
*/
# ...
14
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Affichage
On utilise les fonctions echo et print pour l’affichage de texte à l’écran.
◼ echo($machaine); echo $machaine; print "test vaut $test";
◼ echo("bonjour"); echo "bonjour"; print("Bonjour");
◼ echo(‘bonjour’); echo ‘bonjour’; print ‘bonjour’;
◼ Possibilité d'insérer des balises HTML :
<?php echo "<b>Ceci est un script PHP !</b>"; ?>
<?php print "<b>Ceci est un script PHP !</b>"; ?>
15
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les variables
◼ Déclaration simple: Variable de base
<?php
$variable = "une variable en PHP";
// Une autre variable :
$Variable = 1000;
?>
Un identificateur de variable :
◼ Est précédé toujours par le $
◼ Peut Commencer par (majuscule ou minuscule) ou un "_" (pas un chiffre)
◼ Peut comporter des lettres, des chiffres et le caractère _ , et les caractères accentués
◼ Est sensibles à la casse (PHP fait la différence entre majuscules et minuscules)
◼ assignation par valeur : $var1=$var2; ou par référence : $var1=&$var2;
16
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les variables
Exemple:
// Déclaration valide // Déclaration Invalide :
$var=1; // $var est à 1 $3var=5;
$Var=2; // $ Var est à 2 var=3;
$_toto='Salut'; // Ok
Une variable peut donc référencer une autre variable. On dit alors que la variable devient un alias, ou pointe sur une
autre variable. On assigne par référence en utilisant le signe « & » devant la variable assignée:
$var=2;
$var=2;
$ref=&$var; // $ref devient une référence de $var
$ref=$var;
echo $ref; // affiche 2
echo $ref; // affiche 2
$var=3;
Par contre: $ref=4;
echo $ref; // affiche 3
echo $var; // affiche 2
$ref=4;
echo $var; // affiche 4
17
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les variables
On peut forcer (cast) une variable à un type de données, ce qui s'appelle le transtypage.
Exemple:
// EX1
$var='2'; // Une chaîne 2
$var+=1; // $var est maintenant un entier 3
$var=$var+0.3; // $var est maintenant un réel 3.3
$var=5 + "3"; // $var est un entier qui vaut 8
//Ex2
$x="7 personnes";
$y=(integer) $x;
echo $y; // Affiche 7
18
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les variables
Portée des variables:
Une variable déclarée dans un script et hors d'une fonction est globale mais par défaut sa portée est limitée
au script courant, ainsi qu'au code éventuellement inclus (include, require) et n'est pas accessible dans les
fonctions ou d'autres scripts.
Exemple:
$a=1; // globale par défaut
function test() {
echo $a; // c'est une variable locale à la fonction : n'affiche rien
Pour accéder à une variable }
globale dans une fonction, il
$a=1; // globale par défaut
faut utiliser le mot-clé global $b=2; // idem
function test() { // on récupère les variables globales
global $a, $b;
$b=$a+$b; // ou: $GLOBALS["b"]=$GLOBALS["b"]+$GLOBALS["a"]
}
test();
echo $b; // affiche 3
19
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les variables
Variables superglobales : <?php phpinfo(); ?>
◼ $GLOBALS: tableau des variables globales. La clé est le nom de la variable
◼ $_SERVER : variables fournies par le serveur web, par exemple 'SERVER_NAME':
◼ $_SERVER["HTTP_HOST"]; //affiche l' hôte
◼ $_SERVER["SERVER_NAME"]; //le nom relatif du serveur
◼ $_SERVER["HTTP_REFERER"]; //provenance de votre visiteur
◼ $_SERVER["DOCUMENT_ROOT"]; // le répertoire racine
◼ $_SERVER["REMOTE_ADDR"]; //Adresse IP du visiteur
◼ $_GET et $_POST: variables transmises par les méthodes GET et POST du protocole HTTP
◼ $_COOKIE, $_FILES, $_REQUEST, $_SESSION,...
20
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les variables
Variables dynamiques
◼ Une variable dynamique utilise la valeur d'une variable comme nom d'une autre variable.
◼ On utilise les variables dynamiques en rajoutant un « $ » devant le nom de la première variable.
◼ Exemple:
$a="var";
$$a=1; // $$a=1 équivaut en fait à $var=1
echo $a; // affiche var
echo $$a; // affiche 1
echo $var; // affiche 1
21
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les variables
En résumé
◼ les variables en PHP n'ont pas besoin d'être déclarées,
◼ Il n'est pas nécessaire en PHP de typer les variables, c'est-à- dire de définir leur type, il suffit de leur
assigner une valeur pour en définir le type
◼ Il faut définir une variable avant toute utilisation:
➢ $a =$a+1; // Erreur : il faut définir/donner une valeur à $a
➢ $a=2; puis $a =$a+1; //utilisation correcte de la variable
22
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les constantes
Syntaxe : define ("NOM_DE_LA_CONSTANTE", valeur)
Les constantes :
◼ ne commencent pas par $
◼ sont définies et accessibles globalement dans tout le code
◼ ne peuvent pas être redéfinies
◼ ne peuvent contenir que des booléens, des entiers, des flottants et des chaînes de caractères
◼ Exemple:
define ("PHP","PHP Hypertext Preprocessor ");
echo PHP; // Notez l'absence de $ ici
◼ PHP propose ses propres constantes dont:
echo PHP_VERSION; // qui contient le numéro de version de PHP (ex. : "7.2.10").
echo PHP_OS; // contient le nom du système d’exploitation sous lequel PHP tourne.
23
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les types
On peut classer les différents types possibles en trois catégories :
4 types simples :
entiers : integer
réels : float, double
booléens : boolean (TRUE ou FALSE)
chaînes de caractères : string
2 types complexes :
tableaux : array // type tableau (ensemble de valeurs)
objets : object // Désigne un type objet (variable possédant ses propres propriétés, attributs et méthodes).
2 types spéciaux :
ressources : resource (ex : identifiant de connexion à une base de données)
absence de valeur : null
✓ La fonction gettype() permet de renvoyer le type de la valeur stockée dans une variable:
echo gettype($var); // affiche soit integer, string, …
24
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les types
Exemple:
Booléens : TRUE et FALSE
$var=FALSE; // FALSE, False, false, ... if($var==true) echo "ok";
$var2=True; // TRUE, True, true, ... if($var) echo "ok"; // Identique
Entiers : Réels:
$b = 123; $c = 1.33;
String: délimitée par des simples quotes (‘) ou des doubles quotes (‘‘).
$maVariable = "SMI S6"; $var = ‘SMI S6 parcours (BD)’;
Les doubles quottes permettent l’évaluation des variables et caractères spéciaux contenus dans
la chaîne alors que les simples ne le permettent pas:
echo " $maVariable "; // affiche SMI S6
echo ‘$maVariable’; // affiche $maVariable
echo ‘filière: ’.$maVariable; // affiche filière SMI S6 (concaténation avec ‘.’ )
25
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les tableaux
Principe : associations ordonnées de type clé => valeur
Déclaration : array([clé =>] valeur, ...) || array(val1, val2, …)
▪ la clé est facultative, elle est de type entier ou chaîne de caractères ; Si la clé est absente alors c'est la
dernière clé entière plus 1 qui est choisie. Si c'est la première, c'est 0 zéro.
▪ la valeur peut être de n’importe quel type
▪ On accède aux éléments d'un tableau à l'aide des crochets « [ et ] ». On place entre ces crochets la clé
entière ou la chaîne.
26
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les tableaux
L'utilisation de la fonction array n'est pas obligatoire et on peut déclarer un tableau à la volée.
$tab2[1]=2;
$tab2[]=6; // equivaut $tab2[2]=6 (dernière clé entière plus 1)
$tab2['test']='Ma chaîne';
On peut aussi créer des tableaux multidimensionnels à l'aide des deux méthodes précédentes.
$tab=array("un"=>array("smia", 1=>"smi", 2=>’sma’), 2=>array(1,2,3), array('un', 'deux', 'trois'));
echo $tab['un'][0]; // smia Indices: 0, 1, 2
echo $tab[2][1]; // 2
echo $tab[3][2]; // trois
$tab2['un']['deux']='test'; // créé un tableau à deux dimensions
27
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les tableaux: Opérations sur les tableaux
◼ count($array) : nombre d’éléments
◼ sort($array) : trie le tableau
◼ array_pop($array) : récupère et supprime le dernier élément d’une liste (i.e. fonctionne comme une pile)
◼ array_push($array, $elem1, ...) : ajoute des éléments à la fin d’une liste (i.e. fonctionne comme une pile)
◼ array_shift($array) : récupère et supprime le premier élément d’une liste
◼ array_unshift($array, $elem1, ...) : ajout d’éléments en début de liste
◼ array_merge($array1, $array2, ...) : fusionne plusieurs tableaux
◼ in_array($elem, $array) : recherche d’un élément (valeur d’une clé) dans un tableau
◼ array_key_exists ($key, $array) : recherche une clé dans un tableau
◼ array_flip($array) : inverse les clé et les valeurs d’un tableau
28
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les tableaux
◼ Exemple: Vérifier si une clé existe dans l'array (array_key_exists)
on a un array, mais on ne sait pas si la clé qu'on cherche s'y trouve.
Pour vérifier ça, on va utiliser la fonction array_key_exists comme suit:
29
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Les tableaux
◼ Exemple: Vérifier si une valeur existe dans l'array (in_array)
Le principe est le même que array_key_exists… mais cette fois on recherche dans les valeurs.
in_array renvoie true si la valeur se trouve dans l'array, false si elle ne s'y trouve pas:
30
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Eléments du langage I
Opérateurs
Opérateurs identiques à ceux du C/C++/Java :
◼ opérateurs arithmétiques : + - * / %
◼ in/décrémentation : var++ var-- ++var --var
◼ opérateurs logiques : && || !
◼ comparaisons : == != <= >= < >
◼ concaténation de chaînes de caractères : .
◼ affectation : = += -= *= . . .
31
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Exercice
◼ Exercice1:
Parmi les variables suivantes, lesquelles ont un nom valide :
mavar, $mavar, $var5, $_mavar, $_5var, $__élément1, $hotel4* ?
◼ Exercice2:
Donner les valeurs de $x, $y, $z à la fin du script suivant :
$x="PostgreSQL";
$y="MySQL";
$z=&$x;
$x="PHP 5";
$y=&$x;
32
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Exercice
◼ Exercice1: correction
• Les noms $mavar, $var5, $_mavar, $_5var, $__élément1 respectent les conventions.
• Les autres ne sont pas valides : mavar ne commence pas par le caractère $ et $hotel4* se termine par
le caractère *
◼ Exercice2: correction
• les variables $x, $y et $z valent toutes "PHP 5"
33
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Exercice
◼ Exercice 3:
Donner la valeur de chacune des variables pendant et à la fin du script suivant et vérifier l’évolution
du type de ces variables :
$x="PHP5";
$a[0]=&$x;
$y="5";
$z=$y*10;
$x.=$y;
$y*=$z;
$a[0]="MySQL";
34
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida
Exercice
◼ Exercice 3: Correction
Résultats d’affichage:
35
Omar Boutkhoum – [email protected] Prog. web Avancée – SMI S6 / F.S El Jadida