Écrire des scripts d’accès aux données
Connexion à une base de données MySQL avec PDO
Introduction
On appelle base de données une collection de données stockées dans des
fichiers particuliers ;
Les bases de données vont nous permettre de stocker de grandes quantités
de données sans date d’expiration. Nous allons ensuite pouvoir manipuler
ces données ;
Le langage des bases de données est le SQL. C’est un langage de requêtes
qui va nous permettre d’accéder aux bases de données et de les manipuler ;
Nous n’allons pas pouvoir communiquer directement en SQL avec nos
bases de données. Pour se faire, nous devrons utiliser un système de gestion
de bases de données comme le MySQL ;
Écrire des scripts d’accès aux données
Connexion à une base de données MySQL avec PDO
le MySQL va nous servir à envoyer nos requêtes écrites en SQL standard à
nos bases de données.
Nous allons pouvoir envoyer nos requêtes SQL via le MySQL de deux
façons :
soit dans nos fichiers de code PHP,
soit en passant par l’interface phpMyAdmin qui est un logiciel
également codé en PHP;
Nous allons utiliser phpMyAdmin lorsque nous voudrons effectuer des
actions manuelles directes sur nos bases de données. Dès que les appels à la
base de données seront conditionnés par l’utilisateur, il faudra plutôt utiliser
nos fichiers de code PHP.
Écrire des scripts d’accès aux données
Connexion à une base de données MySQL avec PDO
Se connecter à une base de données MySQL en PHP
Pour pouvoir manipuler nos bases de données MySQL en PHP (sans passer
par phpMyAdmin), nous allons déjà devoir nous connecter à MySQL.
Pour cela, le PHP met à notre disposition deux API (Application
Programming Interface) :
L’extension MySQLi ;
L’extension PDO (PHP Data Objects).
Pour se connecter en utilisant PDO, nous allons devoir instancier la
classe PDO en passant au constructeur la source de la base de données
(serveur + nom de la base de données) ainsi qu’un nom d’utilisateur et un
mot de passe.
Écrire des scripts d’accès aux données
Connexion à une base de données MySQL avec PDO
Notez également qu’avec PDO il est véritablement indispensable que votre
script gère et capture les exceptions (erreurs) qui peuvent survenir durant la
connexion à la base de données. Nous utilisons la méthode setAttribute() en
lui passant deux arguments
PDO::ATTR_ERRMODE et PDO::ERRMODE_EXCEPTION.
Une fois la connexion à la base de données ouverte, celle-ci reste active
jusqu’à la fin de l’exécution de votre script.
Pour fermer la connexion avant cela, nous allons devoir utiliser différentes
méthodes selon la méthode d’ouverture choisie.
Écrire des scripts d’accès aux données
Connexion à une base de données MySQL avec PDO
Si on utilise PDO, il faudra détruire l’objet représentant la connexion et effacer toutes
ses références. Nous pouvons faire cela en assignant la valeur NULL à la variable
gérant l’objet.
Écrire des scripts d’accès aux données
Connexion à une base de données MySQL avec PDO
Sur la page d’accueil de phpMyAdmin, vous pouvez soit cliquer sur
« Nouvelle base de données » dans la colonne de gauche, soit sur l’onglet
« Bases de données en haut ».
Une fois arrivé ici, renseignez le nom de la base de données que vous
souhaitez créer (on peut par exemple l’appeler « pdodb2 ») et cliquez sur «
créer ».
Écrire des scripts d’accès aux données
Connexion à une base de données MySQL avec PDO
phpMyAdmin crée la BD et vous amène sur une page vous permettant déjà
de créer une première table. Vous pouvez revenir sur cette même page en
cliquant sur le nom de la base de données créée dans la liste des bases à
gauche de votre page.
Écrire des scripts d’accès aux données
Insérer des données dans une table
Pour insérer des données dans une table, nous allons utiliser l’instruction
SQL INSERT INTO suivie du nom de la table dans laquelle on souhaite insérer une
nouvelle entrée avec sa structure puis le mot clef VALUES avec les différentes
valeurs à insérer.
INSERT INTO nom_de_table (nom_colonne1, nom_colonne2,
nom_colonne3, …)
VALUES (valeur1, valeur2, valeur3, …)
Écrire des scripts d’accès aux données
Insérer des données dans une table
Nous pouvons ajouter les méthodes beginTransaction(), commit() et rollBack() dans
notre code.
La méthode beginTransaction() permet de démarrer ce qu’on appelle une transaction
et de désactiver le mode autocommit. Concrètement, cela signifie que toutes les
manipulations faites sur la base de données ne seront pas appliquées tant qu’on ne
mettra pas fin à la transaction en appelant commit().
La méthode commit() sert donc à valider une transaction, c’est-à-dire à valider
l’application d’une ou d’un ensemble de requêtes SQL. Cette méthode va aussi
replacer la connexion en mode autocommit.
La méthode rollBack() sert à annuler une transaction si l’on s’aperçoit d’une erreur.
Cette méthode restaure le mode autocommit après son exécution.
Écrire des scripts d’accès aux données
Insérer des données dans une table
Écrire des scripts d’accès aux données
Modifier les données d’une table MySQL
Nous allons utiliser l’instruction SQL UPDATE suivie du nom de la table
pour mettre à jour des données dans une table.
Cette instruction va toujours être accompagnée de SET qui va nous servir à
préciser la colonne à mettre à jour ainsi que la nouvelle valeur pour la
colonne.
Écrire des scripts d’accès aux données
Supprimer les données d’une table MySQL
Pour supprimer des données d’une table, nous allons utiliser l’instruction
SQL DELETE FROM. Pour préciser quelles entrées doivent être
supprimées, nous allons accompagner DELETE FROM d’une
clause WHERE nous permettant de cibler des données en particulier dans
notre table.
Écrire des scripts d’accès aux données
Sélectionner les données d’une table MySQL
Pour sélectionner des données dans une base de données, nous allons
utiliser l’instruction SQL SELECT… FROM
Écrire des scripts d’accès aux données
Sélectionner les données d’une table MySQL
Une fois les valeurs sélectionnées, nous utilisons la méthode fetchAll() qui
est une méthode de la classe PDOStatement qui va retourner un tableau
contenant toutes les lignes de résultats.
Ici, nous passons un argument (facultatif) à fetchAll() qui est le «
fetch_style ». La valeur FETCH_ASSOC va faire que le tableau retourné
sera un tableau multidimensionnels contenant des tableaux indexés avec le
nom des colonnes dont on récupère les données en index.
Écrire des scripts d’accès aux données
Sélectionner les données d’une table MySQL
Écrire des scripts d’accès aux données
Les requêtes MySQL préparées avec PDO
Les requêtes préparées correspondent à une façon de créer et d’exécuter nos
requêtes selon trois étapes : une étape de préparation, une étape de
compilation et finalement une dernière étape d’exécution.
Préparer ses requêtes comporte des avantages notables notamment dans le
cas où l’on doit insérer des données envoyées par les utilisateurs.
Tout d’abord, une première phase de préparation dans laquelle nous allons
créer un Template ou schéma de requête, en ne précisant pas les valeurs
réelles dans notre requête mais en utilisant plutôt des marqueurs nommés
(sous le forme :nom) ou des marqueurs interrogatifs (sous la forme ?).
Écrire des scripts d’accès aux données
Les requêtes MySQL préparées avec PDO
Une fois le template créé, la base de données va analyser, compiler, faire
des optimisations sur notre template de requête SQL et va stocker le
résultat sans l’exécuter.
Finalement, nous allons lier des valeurs à nos marqueurs et la base de
données va exécuter la requête. Nous allons pouvoir réutiliser notre
template autant de fois que l’on souhaite en liant de nouvelles valeurs à
chaque fois.
Pour exécuter une requête préparée, nous allons cette fois-ci devoir
utiliser la méthode execute() et non plus exec() comme on utilisait depuis
le début de cette partie.
Écrire des scripts d’accès aux données
Les requêtes MySQL préparées avec PDO
En utilisant des marqueurs dans nos requêtes préparées, nous allons avoir
deux grandes options pour exécuter la méthode execute() :
On va pouvoir lui passer un tableau de valeurs de paramètres (uniquement
en entrée);
Écrire des scripts d’accès aux données
Les requêtes MySQL préparées avec PDO
Avec execute(array) et des marqueurs nommés
Écrire des scripts d’accès aux données
Les requêtes MySQL préparées avec PDO
Avec execute(array) et des marqueurs interrogatifs
Écrire des scripts d’accès aux données
Exercice d’applications
Créer une table stagiaire contenant les colonnes : id, cin, nom, prénom, age;
Créer un menu contenant les options suivantes:Ajouter | Modifier | Supprimer | Lister
En cliquant sur Ajouter vous serez rediriger vers la page [Link] qui contient un
formulaire permettant suite au clique sur le bouton ajouter d’ajouter les données
saisi à la BD et lister les données de la table stagiaire dans un tableau html;
En cliquant sur Modifier vous serez rediriger vers la page [Link] qui contient
un formulaire permettant suite au clique sur le bouton modifier de modifier la ligne
correspondant au cin saisi par les données saisi et lister les données de la table
stagiaire dans un tableau html;
En cliquant sur Supprimer vous serez rediriger vers la page [Link] qui
contient un formulaire permettant suite au clique sur le bouton supprimer de
supprimer la ligne correspondant au cin et lister les données de la table stagiaire
dans un tableau html;
Écrire des scripts d’accès aux données
Les requêtes MySQL préparées avec PDO
Écrire des scripts d’accès aux données
Récupération des résultats
Constantes PDO
PDO::FETCH_ASSOC (int) :Spécifie que la méthode de récupération doit retourner
chaque ligne dans un tableau indexé par les noms des colonnes comme elles sont
retournées dans le jeu de résultats correspondant. Si le jeu de résultats contient de
multiples colonnes avec le même nom, PDO::FETCH_ASSOC retourne une seule valeur
par nom de colonne.
PDO::FETCH_NAMED (int) : Spécifie que la méthode de récupération doit retourner
chaque ligne dans un tableau indexé par les noms des colonnes comme elles sont
retournées dans le jeu de résultats correspondant. Si le jeu de résultats contient de
multiples colonnes avec le même nom, PDO::FETCH_NAMED retourne un tableau de
valeurs par nom de colonne.
PDO::FETCH_COLUMN (int): Spécifie que la méthode de récupération doit retourner
uniquement une seule colonne demandée depuis la prochaine ligne du jeu de résultats.
Sécuriser les données
Utilisation des sessions et des cookies
Un cookie est un petit fichier texte qui ne peut contenir qu’une quantité limitée
de données.
Les cookies vont être stockés sur les ordinateurs de vos visiteurs. Ainsi, à tout
moment, un utilisateur peut lui même supprimer les cookies de son ordinateur.
De plus, les cookies vont toujours avoir une durée de vie limitée. On pourra
définir la date d’expiration d’un cookie.
Ainsi, dès qu’un utilisateur connu demande à accéder à une page de notre site,
les cookies vont également automatiquement être envoyées dans la requête de
l’utilisateur. Cela va nous permettre de l’identifier et de lui proposer une page
personnalisée.
Sécuriser les données
Utilisation des sessions et des cookies
Créer un cookie en PHP
Pour créer un cookie en PHP, nous allons utiliser la fonction setcookie().
Une particularité notable de cette fonction est qu’il va falloir l’appeler avant
d’écrire tout code HTML pour qu’elle fonctionne puisque les cookies
doivent être envoyés avant toute autre sortie. Pour information, cette
restriction provient du protocole HTTP et non pas de PHP.
Cette fonction peut accepter jusqu’à sept valeurs en arguments. Cependant,
seul la première (le nom du cookie créé) est obligatoire.
La syntaxe de base de setcookie() est la suivante :
Sécuriser les données
Utilisation des sessions et des cookies
< code>setcookie(name, value, expire, path, domain, secure, httponly).
Les paramètres ont la signification suivante :
Sécuriser les données
Utilisation des sessions et des cookies
Récupérer la valeur d’un cookie
Pour récupérer la valeur d’un cookie, nous allons utiliser la variable
superglobale $_COOKIE.
Cette superglobale est un tableau associatif qui utilise les noms des cookies
en clefs et associe leurs valeurs en valeurs du tableau.
On va donc pouvoir accéder à la valeur d’un cookie en particulier en
renseignant le nom du cookie en clef de ce tableau.
Sécuriser les données
Utilisation des sessions et des cookies
Sécuriser les données
Utilisation des sessions et des cookies
Modifier la valeur d’un cookie ou supprimer un cookie
Pour modifier la valeur d’un cookie, nous allons appeler à nouveau la
fonction setcookie() en lui passant le nom du cookie dont on souhaite
changer la valeur et changer l’argument de type valeur passé à la fonction
avec la nouvelle valeur souhaitée.
Pour supprimer un cookie, nous allons encore appeler setcookie() en lui
passant le nom du cookie qu’on souhaite supprimer et allons cette fois-ci
définir une date d’expiration se situant dans le passé pour le cookie en
question.
Sécuriser les données
Utilisation des sessions et des cookies
Sécuriser les données
Utilisation des sessions et des cookies
conserver des variables de page en pages
(rendre des variables accéssibles dans plusieurs pages)
Sécuriser les données
Utilisation des sessions et des cookies
Bonne solution :Les sessions
C’est un moyen qui permet de conserver les informations de façon simple
et de les réutiliser dans toutes les pages d’un site pour un même visiteur.
Aucun autre visiteur n’a accès à ces données.
Un des grands intérêts des sessions est qu’on va pouvoir conserver des
informations pour un utilisateur lorsqu’il navigue d’une page à une autre.
De plus, les informations de session ne vont cette fois-ci pas être stockées
sur les ordinateurs de vos visiteurs à la différence des cookies mais plutôt
côté serveur ce qui fait que les sessions vont pouvoir être beaucoup plus
sûres que les cookies.
Notez toutefois que le but des sessions n’est pas de conserver des
informations indéfiniment mais simplement durant une « session ».
Sécuriser les données
Utilisation des sessions et des cookies
Une fois un visiteur arrive sur votre site. On demande à créer une session
pour lui. PHP génère alors un numéro unique. Ce numéro est souvent très
gros et écrit en hexadécimal1,par exemple : a02bbffc6198e6e,
0cc2715047bc3766f.
Une fois la session générée, on peut créer une infinité de variables de
session pour nos besoins. Par exemple, on peut créer une variable
$_SESSION[’nom’] qui contient le nom du visiteur, $_SESSION[’prenom’]
qui contient le prénom, etc. Le serveur conserve ces variables même lorsque
la page PHP a fini d’être générée.
Lorsque le visiteur se déconnecte de votre site, la session est fermée et
PHP« oublie » alors toutes les variables de session que vous avez créées.
Sécuriser les données
Utilisation des sessions et des cookies
Utilisation en php
session_start() : pour démarrer(pour la premiere fois) ou récupérer une session. Vous
devez appeler cette fonction au tout début de chacune des pages où vous avez besoin
des variables de session.
unset() : pour désinscrire une variable de session spécifique, désactivez simplement
la clé correspondante du Tableau $_SESSION :
Sécuriser les données
Utilisation des sessions et des cookies
session_destroy() : ferme la session du visiteur. Cette fonction est
automatiquement appelée lorsque le visiteur ne charge plus de page de votre
site pendant plusieurs minutes (c’est le timeout), mais vous pouvez aussi
créer une page « Déconnexion »si le visiteur souhaite se déconnecter
manuellement.
Sécuriser les données
Utilisation des sessions et des cookies
Sécuriser les données
Sécurisation des données
Exemples d’attaques
Sécuriser les données
Utilisation des sessions et des cookies
Sécuriser les données
Utilisation des sessions et des cookies
Vous devez effectuer des recherches sur les différents types d'attaques et
comprendre comment sécuriser notre code.
Développer des sites dynamiques en MVC
Présentation du MVC
MVC (Modèle-Vue-Contrôleur) est un modèle de conception, il est donc
indépendant du langage de programmation. Il met l'accent sur la séparation
entre la logique métier et l'affichage du logiciel.
Les modèles et les contrôleurs sont généralement des classes.
Les vues sont généralement des Templates HTML.
Développer des sites dynamiques en MVC
Présentation du MVC
Avantages
Meilleure organisation du code.
Possibilité de réutiliser le code.
Meilleure gestion de temps pour la maintenance et l’évolution du site.
Plus de facilité pour les tests unitaires.
Conception claire et efficace
Développer des sites dynamiques en MVC
Présentation du MVC
Frameworks MVC pour PHP
L’utilisation de Framework peut s’avérer d’un grand avantage au développeur.
Il permet de faciliter le travail et réduire le temps de réalisation tout en
profitant des avantages qu’offre l’architecture.
Exemples de frameworks utilisant l’architecture MVC
• Lavarel : [Link]
• Lumen : [Link]
• Symfony : [Link]
• Cake PHP : [Link]
• Zend Framework : [Link]
Développer des sites dynamiques en MVC
Présentation du MVC
Architecture MVC
Développer des sites dynamiques en MVC
Présentation du MVC
Contrôleur
Développer des sites dynamiques en MVC
Présentation du MVC
Développer des sites dynamiques en MVC
Présentation du MVC
Vue
Découvrir les Web services et les API REST
Introduction aux Web services
Un Web Service est une application qui permet d’échanger des données
avec d’autres applications web. Même si ces dernières sont construites dans
des langages de programmation différents. Parmi les Web Services les plus
connus on peut citer SOAP, REST ou HTTP. Elles sont utilisées
généralement sur des infrastructure cloud, en cloud public, privé ou en
cloud hybride !
Découvrir les Web services et les API REST
Introduction aux Web services
Le fonctionnement d’un Web Service
Un Web Service fonctionne de la manière suivante :
1. Le client (en général un utilisateur sur un ordinateur ou un support
équivalent) effectue une requête dans un des langages suivants : XML, JSON
ou HTTP.
2. Cette requête est transmise à un serveur distant via les protocoles SOAP,
REST ou HTTP.
3. La réponse est ensuite délivrée sous le même format que sa demande :
XML, JSON ou HTTP.
Découvrir les Web services et les API REST
Introduction aux Web services
Un Web Service a plusieurs avantages :
Les services web permettent d’accéder à des fonctionnalités via internet
Le client peut recevoir des informations d’un serveur distant sans être obligé
de stocker toutes les données sur sa machine.
Le serveur distant peut être interrogé par un grand nombre de client de
manière simultanée.
Les services Web utilisent des standards et protocoles ouverts, ce qui permet
une grand compatibilité entre les services.
Les informations échangées peuvent être chiffrées. C’est le cas en utilisant
la technologie SSL présente dans le protocole HTTPS qui est devenue la
norme pour les sites web depuis quelques années.
Inconvénients
Un service web a toujours besoin d’un réseau (internet, intranet, …) pour
fonctionner.
Découvrir les Web services et les API REST
Manipulation de REST API
Une API (interface de programmation d'application) est un ensemble de
définitions et de protocoles qui facilite la création et l'intégration de logiciels
d'applications. l’API est l’intermédiaire permettant à deux systèmes
informatiques totalement indépendants d’interagir entre eux, de manière
automatique, sans intervention humaine. Elle est parfois considérée comme un
contrat entre un fournisseur d'informations et un utilisateur d'informations, qui
permet de définir le contenu demandé au consommateur (l'appel) et le contenu
demandé au producteur(la réponse). Par exemple, l'API conçue pour un service
de météo peut demander à l'utilisateur de fournir un code postal et au producteur
de renvoyer une réponse en deux parties : la première concernant la température
maximale et la seconde la température minimale.
Découvrir les Web services et les API REST
Manipulation de REST API
Avantages des APIs
Elle permet de pouvoir interagir avec un système sans se soucier de sa
complexité et de son fonctionnement. ...
Une API est souvent spécialisée dans un domaine et sur un use case
particulier ce qui simplifie son utilisation, sa compréhension et sa
sécurisation.
Les API constituent un moyen simplifié de connecter votre propre
infrastructure au travers du développement d'applications cloud-native.
Elles vous permettent également de partager vos données avec vos
clients et d'autres utilisateurs externes.
Découvrir les Web services et les API REST
Manipulation de REST API
l'API REST
Roy Fielding a défini REST comme un style architectural et une
méthodologie fréquemment utilisés dans le développement de services
Internet. La forme complète de l'API REST est l'interface de programmation
d'applications de transfert d'état représentationnelle, plus communément
appelée service Web API REST. Par exemple, lorsqu'un développeur
demande à l'API Twitter de récupérer l'objet d'un utilisateur (une ressource),
l'API renvoie l'état de cet utilisateur, son nom, ses abonnés et les
publications partagées sur Twitter. Cela est possible grâce aux projets
d'intégration d'API. Cette représentation d'état peut être au format JSON,
XML ou HTML.
Découvrir les Web services et les API REST
Manipulation de REST API
Comment fonctionne une API REST
REST détermine la structure d'un API. Les développeurs s'obligent à un
ensemble de règles spécifiques lors de la conception d'une API. Par exemple,
une loi stipule qu'un lien vers une URL doit renvoyer certaines informations.
Chaque URL est connue sous le nom de demande (request), tandis que les
données renvoyées sont appelées réponse (response).
L'API REST décompose une transaction pour générer une séquence de petits
composants. Chaque composant aborde un aspect fondamental spécifique d'une
transaction. Cette modularité en fait une approche de développement flexible.
Une API REST exploite les méthodes HTTP
Découvrir les Web services et les API REST
Manipulation de SOAP