Vous êtes sur la page 1sur 35

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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma 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 – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Exercice
◼ Exercice 3: Correction

Résultats d’affichage:

35
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida

Vous aimerez peut-être aussi