Nnées Génie Informatique: Pr. Abdelali El Gourari
Nnées Génie Informatique: Pr. Abdelali El Gourari
PHP
En général, on peut regrouper les sites Web en deux catégories: les sites statiques et les sites dynamiques.
• Un site statique renferme un contenu figé qui ne change pas automatiquement et qui reste le même tant que le
Webmaster n'est pas intervenu pour le modifier manuellement.
• Les sites dynamiques, quant-à eux, sont des sites Web dont le contenu change d'une manière autonome. Celui ci peut
changer en fonction de la date, le navigateur utilisé par le client, la position géographique de celui-ci, les privilèges
attribués à chaque utilisateur suite à une authentification par exemple, l'historique de navigation etc...
Les sites dynamiques reposent sur des langages dits CGI (pour Common Gateway
Interface) dont PHP fait parti.
2
Généralités
PHP – De quoi aura-t-on besoin pour coder en PHP?
3
Introduction PHP
De quoi aura-t-on besoin pour coder en PHP?
Préparation du poste
• WampServer, XAMP, MAMP…
• VS code, VS, Notepad++,…
1. Installation XAMP.
5
Introduction
6
Integration du code PHP
Les commentaires
• En PHP on peut intégrer des commentaires
qui seront ignorés lors de l’exécution du
script par le serveur. Comme pour JavaScript
(ou pour le langage C) les commentaires en
PHP peuvent avoir deux formes: Commentaire
de fin de ligne: il s'agit d'un commentaire qui
s'étend jusqu'à la fin de la ligne à partir du
symbole double slash (//).
• Commentaire sur plusieurs lignes: il s'agit
d'un bloc qui peut contenir plusieurs lignes
comprises entre les symboles /* et */.
7
Integration du code PHP
Les variables
Une variable peut avoir un nom court (comme $x et $y) ou un nom plus descriptif ( $age, $carname, $total_volume).
Règles pour les variables PHP :
8
Integration du code PHP
Les variables scalaires
$txt = “Abdelali"; $txt = “Abdelali";
echo " My name is $txt!"; echo " My name is" .$txt. "!";
• L'exemple suivant affichera la • PHP n'a pas de commande pour déclarer une variable, et le type de
somme de deux variables : données dépend de la valeur de la variable.
$x = 5; $x = 5; // $x is an integer
$y = 4; $y = “Abdelali"; // $y is a string
echo $x + $y; echo $x;
echo $y
• La var_dump() fonction renvoie le type • Vous pouvez attribuer la même valeur à plusieurs variables sur une
de données et la valeur : seule ligne :
$x = 5;
$x = $y = $z = “Abdelali";
var_dump($x);
9
Integration du code PHP
L'instruction echo PHP
• L' echoinstruction peut être utilisée avec ou sans parenthèses : echoou echo().
L'exemple suivant montre comment générer du texte avec la echo commande (notez que le texte peut contenir du
balisage HTML) :
L'exemple suivant montre comment générer du texte et des variables avec l' echo instruction :
$txt1 = “The best names in the world"; $txt1 = “The best names in the world";
$txt2 = "Abdelali"; $txt2 = "Abdelali";
echo "<h2>$txt1</h2>"; echo "<h2>" .$txt1. "</h2>";
echo "<p> My name is $txt2</p>"; echo "<p> My name is" .$txt2. "</p>"; 10
Integration du code PHP
L'instruction d'impression PHP
• L' print instruction peut être utilisée avec ou sans parenthèses : print ou print().
L'exemple suivant montre comment générer du texte avec la print commande (notez que le texte peut contenir du
balisage HTML) :
L'exemple suivant montre comment générer du texte et des variables avec l' print instruction :
$txt1 = “The best names in the world"; $txt1 = “The best names in the world";
$txt2 = "Abdelali"; $txt2 = "Abdelali";
print "<h2>$txt1</h2>"; print "<h2>" .$txt1. "</h2>";
print "<p> My name is $txt2</p>"; print "<p> My name is" .$txt2. "</p>"; 11
Integration du code PHP
les constantes PHP
Les constantes servent aussi à stocker des valeurs dans un programme, mais à
l'inverse des variables, leurs valeurs ne changent pas.
12
Integration du code PHP
les opérateurs
Les opérateurs sont des symboles qui permettent de faire des opérations sur les
variables. Les opérateurs sont souvent les mêmes dans la plupart des langages de
programmation et ils sont représentés par des symboles similaires dans la plupart des cas.
Opérateurs arithmétiques.
Opérateurs d'incrémentation.
Opérateurs assignement (affectation).
Opérateurs de comparaison.
Opérateurs logiques.
13
Les structures de contrôle
Les structures conditionnelles et boucles
Une structure conditionnelle permet d'exécuter ou non une série d'instructions en fonction
d'une condition d'origine (appellée aussi expression ou prédicat). Si le calcul de cette condition
retourne TRUE alors le bloc d'instructions concerné est exécuté. Les expressions évaluées
peuvent être plus ou moins complexes, c'est à dire qu'elles peuvent être constituées d'une
combinaison d'opérateurs de comparaison, d'opérateurs logiques et même de fonctions.
14
Les structures de contrôle
Les structures conditionnelles et boucles
15
Les Les
structuresstructures
de de
contrôle
Les structures de contrôle
contrôle
Les structures conditionnelles et boucles
16
Les structures répétitives
Les boucles
17
Lesrépétitives
Les structures structures de contrôle
Les boucles
18
Les structures de contrôle
Exercices
Exercice 1:
Écrivez un programme pour effectuer la somme ou l'addition de deux nombres en
programmation PHP. Vous pouvez utiliser des variables et des opérateurs PHP
Exercice 2:
Ecrire un programme PHP pour calculer la facture d'électricité en utilisant des conditions if-else.
Conditions:
19
Les structures de contrôle
Exercices
Exercice 3:
Ecrire un programme qui lit au clavier les valeurs de trois résistances et de trois
capacités et calcule leur résistance et leur capacité équivalente, respectivement, dans
les deux cas :
Les trois résistances et les trois capacités sont placées en série
Les trois résistances et les trois capacités sont placées en parallèle
Les résultats doivent être affichés dans chaque cas.
Exercice 4:
Ecrire un programme permettant de calculer la valeur de l'expression E,
20
Les structures de contrôle
Les tableaux
En PHP, un tableau est une structure de données qui peut contenir une collection de valeurs, telles que
des nombres, des chaînes de caractères, des objets, ou même d'autres tableaux.
Tableaux indexés:
Les tableaux indexés sont des tableaux où chaque élément est associé à un indice numérique,
commençant généralement par zéro.
21
Les structures de contrôle
Les tableaux
Tableaux associatifs:
Les tableaux associatifs sont des tableaux où chaque élément est associé à une clé.
22
Les structures de contrôle
Les tableaux
Ajout et modification d'éléments dans un tableau Parcourir un tableau avec foreach
Ces exemples illustrent quelques notions de base sur les tableaux en PHP. Les tableaux sont des
structures de données extrêmement polyvalentes et sont utilisés très fréquemment dans le
développement web avec PHP.
23
Les structures de contrôle
Les tableaux
Fonctions utiles pour les tableaux
PHP dispose de nombreuses fonctions intégrées pour travailler avec les tableaux, telles que count,
array_push, array_pop, array_shift, array_unshift, sort, rsort, array_keys, array_values, etc.
function direBonjour() {
direBonjour(); // Affiche "Bonjour !"
echo "Bonjour !";
}
Fonctions avec des arguments Fonctions avec une valeur de retour
Fonctions récursives:
function factorielle($n) {
if ($n == 0 || $n == 1) {
return 1; }
else {
return $n * factorielle($n - 1);
}
}
echo factorielle(5); // Affiche 120 (car 5! = 5*4*3*2*1)
26
Les
Les fonctions structures de contrôle
Fonctions anonymes (fonctions lambda)
Les fonctions anonymes sont des fonctions sans nom qui peuvent être assignées à une variable ou utilisées
comme argument de fonction.
$saluer = function($nom) {
echo "Bonjour, $nom !";
};
$saluer("Ali"); // Affiche "Bonjour, Ali !"
Ces exemples illustrent quelques notions de base sur les fonctions en PHP. Les fonctions sont des
éléments fondamentaux du langage qui permettent d'organiser et de réutiliser le code de manière efficace.
27
Les structures de contrôle
Les fonctions
Exercice : Calculer la moyenne des notes
Dans cet exercice, vous allez créer un script PHP qui prend un tableau de notes et calcule leur moyenne.
1. Créez un tableau contenant des notes (par exemple, [10, 15, 12, 18]).
2. Écrivez une fonction en PHP pour calculer la moyenne des notes.
3. Utilisez cette fonction pour afficher la moyenne des notes.
28
Les structures de contrôle
Les chaînes de caractères
En PHP, les chaînes de caractères sont utilisées pour représenter du texte. Voici quelques opérations de
base que vous pouvez effectuer sur les chaînes de caractères :
29
Les structures de contrôle
Les chaînes de caractères
Remplacement dans une chaîne de caractères Extraction d'une sous-chaîne
Conversion de cas
$texte = "Bonjour";
$texte_majuscule = strtoupper($texte);
// $texte_majuscule vaut "BONJOUR"
$texte_minuscule = strtolower($texte);
// $texte_minuscule vaut "bonjour"
Ces exemples couvrent certaines opérations courantes que vous pouvez effectuer sur les chaînes de
caractères en PHP. Les chaînes de caractères sont utilisées très fréquemment dans le développement web
pour manipuler et afficher du texte sur les pages web.
30
Les structures de contrôle
Les chaînes de caractères
Comparaison de chaînes de caractères
$chaine1 = "Bonjour";
$chaine2 = "bonjour"; ‘BONJOUR’ >’bonjour’ Dans le code ASCII
$resultat = strcmp($chaine1, $chaine2);
// $resultat vaut ‘‘-1’’ OU bien ‘’true’’ (différentes, mais pas sensibles à la casse)
<?php <?php
// Démarre la session
// Démarre la session session_start();
session_start(); // Accède aux variables de session
// Définit des variables de session $utilisateur = $_SESSION['utilisateur'];
$_SESSION['utilisateur'] = ‘Abdelali'; $role = $_SESSION['role'];
$_SESSION['role'] = ‘Teacher'; echo 'Utilisateur : ' . $utilisateur . '<br>';
echo 'Session créée et variables définies.'; echo 'Rôle : ' . $role;
?> ?>
32
Les structures de contrôle
les sessions
Dans cet exemple, la première page définit des variables de session pour l'utilisateur, puis la deuxième
page y accède pour afficher les informations stockées. Assurez-vous d'appeler session_start() au début
de chaque script PHP où vous souhaitez accéder aux variables de session.
Exemple 1: Authentification d'utilisateur
<?php
session_start();
<?php session_start();
?>
34
Les
les sessions structures de contrôle
Exemple 3: Gestion de panier d'achat
<?php session_start();
// Ajout d'un produit au panier
if (isset($_GET['add_to_cart'])) {
$product_id = $_GET['add_to_cart'];
if (!isset($_SESSION['cart'][$product_id])) { $_SESSION['cart'][$product_id] = 1; }
else { $_SESSION['cart'][$product_id]++; }
echo 'Produit ajouté au panier.';
}
// Affichage du panier
echo '<h2>Panier d\'achat</h2>';
if (!empty($_SESSION['cart'])) {
foreach ($_SESSION['cart'] as $product_id => $quantity) {
echo 'Produit #' . $product_id . ' - Quantité: ' . $quantity . '<br>';
}
}
else { echo 'Le panier est vide.'; }
?> 35
Les structures de contrôle
les sessions
Ces exemples illustrent différentes façons d'utiliser les sessions en PHP, notamment pour
l'authentification, le stockage de préférences utilisateur et la gestion d'un panier d'achat. Assurez-vous
toujours de démarrer la session avec session_start() au début de chaque script où vous souhaitez
utiliser les sessions.
Dans cet exemple, nous allons créer un formulaire de connexion où l'utilisateur doit saisir un nom
d'utilisateur et un mot de passe. Si les identifiants sont corrects, l'utilisateur sera redirigé vers une
page de bienvenue, sinon un message d'erreur sera affiché. Il peut également se déconnecter en
cliquant sur le lien de déconnexion, ce qui le ramènera à la page de connexion.
36
Les structures de contrôle
Les fonctions prédéfinies en PHP
En PHP, il y a de nombreuses fonctions prédéfinies qui facilitent le développement d'applications web
et d'autres types de logiciels. Voici quelques-unes des fonctions prédéfinies les plus couramment
utilisées :
37
Les structures de contrôle
Les fonctions prédéfinies en PHP
39
Les structures de contrôle
Les fonctions prédéfinies en PHP
Ce ne sont là que quelques exemples parmi les nombreuses fonctions prédéfinies disponibles en PHP.
40
Les structures de contrôle
Les fonctions prédéfinies en PHP
En PHP, pour interagir avec une base de données, notamment les bases de données MySQL, il existe
plusieurs fonctions prédéfinies qui permettent de réaliser des opérations telles que la connexion à la
base de données, l'exécution de requêtes SQL, la récupération des résultats, etc. Voici quelques-
unes des fonctions de gestion de base de données les plus couramment utilisées en PHP avec MySQL
:
Connexion à la base de données :
mysqli_connect() : Établit une connexion à la base de données MySQL.
mysqli_select_db() : Sélectionne une base de données spécifique sur le serveur MySQL.
mysqli_close() : Ferme la connexion à la base de données.
41
Les structures de contrôle
Les fonctions prédéfinies en PHP
Exemple de connexion à la base de données :
$servername = "localhost";
$username = "utilisateur";
$password = "motdepasse";
$database = "basededonnees";
// Connexion
$conn = mysqli_connect($servername, $username, $password, $database);
// Vérifier la connexion
if (!$conn) {
die("Connexion échouée : " . mysqli_connect_error());
}
echo "Connexion réussie"; 42
Les structures de contrôle
Les fonctions prédéfinies en PHP
Exécution des requêtes SQL :
mysqli_query() : Exécute une requête SQL sur la base de données.
Exemple d'exécution d'une requête SELECT :
Ces fonctions de gestion de base de données en PHP vous permettent de réaliser des opérations de
base comme la connexion, l'exécution de requêtes SQL, la récupération et l'affichage des résultats, et
la gestion des erreurs. 44
Les structures de contrôle
Les fonctions prédéfinies en PHP
En PHP, il est crucial de mettre en place des mesures de sécurité pour protéger votre application web
contre les attaques et les failles de sécurité. Voici quelques-unes des fonctions et bonnes pratiques de
sécurité couramment utilisées en PHP :
Validation des données :
filter_var() : Valide et filtre les données selon différents filtres (par exemple,
FILTER_VALIDATE_EMAIL pour valider une adresse email).
htmlspecialchars() : Convertit les caractères spéciaux en entités HTML pour éviter les attaques
XSS (Cross-Site Scripting).
strip_tags() : Supprime toutes les balises HTML et PHP d'une chaîne pour éviter les injections
de code.
45
Les structures de contrôle
Les fonctions prédéfinies en PHP
Exemple de validation d'une adresse email :
$email = "contact@[Link]";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Adresse email valide";
}
else {
echo "Adresse email invalide";
}
46
Les structures de contrôle
Les fonctions prédéfinies en PHP
Prévention des injections SQL :
Utilisation de requêtes préparées avec mysqli_prepare() et mysqli_stmt_bind_param() pour
échapper les valeurs et éviter les injections SQL.
$stmt = mysqli_prepare($conn, "INSERT INTO utilisateurs (nom, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $nom, $email);
mysqli_stmt_execute($stmt);
47
Les structures de contrôle
Les fonctions prédéfinies en PHP
Gestion des sessions :
session_start() : Démarre une session PHP sécurisée pour stocker des variables de session.
Utilisation de session_regenerate_id() pour régénérer l'identifiant de session afin de prévenir
les attaques de fixation de session.
Exemple de démarrage de session :
session_start();
$_SESSION['utilisateur'] = ‘Ali';
48
Les structures de contrôle
Les fonctions prédéfinies en PHP
Cryptographie :
password_hash() : Permet de hasher les mots de passe de manière sécurisée en utilisant
l'algorithme bcrypt.
password_verify() : Vérifie si un mot de passe correspond au hash stocké en base de données.
$mot_de_passe = "motdepasse123";
$hash = password_hash($mot_de_passe, PASSWORD_DEFAULT);
49
Les structures de contrôle
Les fonctions prédéfinies en PHP
Protection contre les attaques CSRF (Cross-Site Request Forgery) :
Utilisation de jetons CSRF (tokens CSRF) dans les formulaires et vérification de ces jetons
côté serveur pour valider les requêtes.
Exemple de génération et de vérification de jetons CSRF :
En utilisant ces fonctions et bonnes pratiques de sécurité en PHP, vous pouvez renforcer la sécurité de
votre application web et réduire les risques d'attaques et de failles de sécurité.
51
Les cookies
52
53
54
Objectif :
L’authentification avec les sessions
Afin de protéger les pages web et de s’assurer que l’utilisateur est authentifié, nous allons
utiliser les sessions.
Pour répondre à ce besoin il faut noter que :
• Lors de l’authentification, les login et mots de passe seront mémorisés dans des variables de
sessions
• A chaque page accédée, la vérification de la connaissance de ces variables de session sera
vérifiée.
• En cas d’accès à une page avec des variables de session incorrectes, l’utilisateur sera
redirigé automatiquement vers la page d’authentification
4 Récupération des
informations
utilisateur
à ESMA
Étape 3 : Stocker et récupérer des informations sur les véhicules à l'aide des sessions
Démarrez une session et stockez le tableau des véhicules dans une variable de session.
Affichez les informations des véhicules stockés dans la session.
Étape 4 : Gérer les préférences utilisateur à l'aide des cookies
Créez un cookie pour stocker la préférence utilisateur pour le type de véhicule (par exemple, « BM",
"Berline", etc.) avec une durée de vie de 30 jours.
Vérifiez si le cookie est défini et affichez sa valeur. Sinon, définissez le cookie et affichez un
message indiquant que la préférence a été enregistrée.
Ajoutez une option pour supprimer le cookie en définissant sa durée de vie dans le passé et affichez
un message indiquant que le cookie a été supprimé.
PHP
Exercice_2
Vous allez créer une petite application de gestion de produits pour un magasin en ligne. Cette application
doit permettre de :
Définir une fonction pour calculer le prix total des produits.
Gérer une liste de produits à l'aide d'un tableau.
Stocker et récupérer des informations sur les produits à l'aide des sessions.
Gérer les préférences utilisateur (comme la devise préférée) à l'aide des cookies.
Étape 1 : Définir une fonction de calcul
Créez une fonction prixTotal qui prend un tableau de produits et retourne le prix total de tous les
produits.
Chaque produit est représenté par un tableau associatif contenant les clés nom et prix.
PHP
Exercice_2
Étape 2 : Gérer une liste de produits avec un tableau
• Créez un tableau contenant trois produits, chaque produit étant représenté par un tableau associatif
avec les clés nom et prix.
• Affichez la liste des produits en utilisant une boucle foreach.
Étape 3 : Stocker et récupérer des informations sur les produits à l'aide des sessions
• Démarrez une session et stockez le tableau des produits dans une variable de session.
• Affichez les informations des produits stockés dans la session.
Étape 4 : Gérer les préférences utilisateur à l'aide des cookies
• Créez un cookie pour stocker la devise préférée de l'utilisateur (par exemple, "EUR" ou "USD")
avec une durée de vie de 30 jours.
• Vérifiez si le cookie est défini et affichez sa valeur. Sinon, définissez le cookie et affichez un
message indiquant que la préférence a été enregistrée.
PHP
Exercice_2
• Ajoutez une option pour supprimer le cookie en définissant sa durée de vie dans le passé et affichez
un message indiquant que le cookie a été supprimé.