Documente Academic
Documente Profesional
Documente Cultură
Développement
web dynamique
Évaluation
● Rappels du web
● Pourquoi PHP ?
● Mise en place d’un environnement
● Bases de la programmation PHP
● TP Introductif
Rappels du Web
Le Web, c’est quoi ?
● Une ressource du web est accessible via une adresse appelée URL
● Uniform Resource Locator
● La structure d’une URL est divisée en trois blocs:
https://bthouverez.fr/blog/article1.html
Les technologies - URL
● Une ressource du web est accessible via une adresse appelée URL
● Uniform Resource Locator
● La structure d’une URL est divisée en trois blocs:
https://bthouverez.fr/blog/article1.html
Le protocole
Les technologies - URL
● Une ressource du web est accessible via une adresse appelée URL
● Uniform Resource Locator
● La structure d’une URL est divisée en trois blocs:
https://bthouverez.fr/blog/article1.html
Le nom du serveur
Les technologies - URL
● Une ressource du web est accessible via une adresse appelée URL
● Uniform Resource Locator
● La structure d’une URL est divisée en trois blocs:
https://bthouverez.fr/blog/article1.html
La ressource
Les technologies - HTML
Prenons un exemple
de code HTML pour un
fichier article1.html:
Les technologies - HTTP
<!DOCTYPE html>
<html>
<head>
<title>Mon blog</title>
</head>
<body>
<h1>Article 1</h1>
<p>Bla bla bla</p>
</body>
</html>
Requête HTTP - affichage du navigateur
PHP Hypertext Processor *
● Apache
● PHP
● un SGBD
Serveur
Serveur
Le DNS permet d’obtenir
l’adresse IP: 213.186.33.16:80
INTERNET Serveur
Filezilla
1. Informations de
connexion
2. Arborescence locale
3. Contenu du dossier
local
4. Arborescence
distante
5. Contenu du dossier
distant
6. Informations de
partage de fichiers
Développer en PHP sur les machines de l’IUT
http://iutdoua-web.univ-lyon1.fr/~pXXXXXXX
La documentation PHP
● http://php.net/manual/fr/
● En français, très bien faite
● Description des fonctions
● Exemples d’utilisation
● Encore une fois, attention à la version utilisée phpversion()
Programmation PHP
La programmation PHP
Affiche:
integer
string
Les types de variable
● boolean ● array
● integer ● object
● float
● string 2 types spéciaux:
● resource
● NULL
Les types scalaires
boolean float
integer string
Affichage des chaînes de caractère
Fonction var_dump() à
utiliser sans modération
Les tableaux associatifs
Les opérateurs de comparaison
$a && $b Idem
$a || $b Idem
$a XOR $b TRUE si $a OU $b est TRUE, mais pas les deux en même temps.
$a ^ $b Idem
++$a Idem
$a-- Retire 1 à $a
--$a Idem
Que va afficher
ce code ?
Les opérateurs d'incrémentation et de
décrémentation
$a++ Ajoute 1 à $a
++$a Idem
$a-- Retire 1 à $a
--$a Idem
boucle for
la ternaire
Parcourir un tableau
Comment le parcourir ?
Affiche Kile, Eric, Kenny, puis une erreur car il n’y a rien dans la
case à l’indice 3. On utilise la boucle foreach pour les tableaux.
La boucle foreach
ou la forme rétrécie:
La boucle foreach
La boucle foreach
Les opérateurs arithmétiques
Possibilité de combiner ces opérateurs avec l’affectation Source: Doc PHP officielle
● $a += $b ↔ $a = $a + $b
● $a .= $b ↔ $a = $a . $b
Les fonctions
● Rappels du web
● Pourquoi PHP ?
● Mise en place d’un environnement
● Bases de la programmation PHP
● TP Introductif
Séance 2
● Transmission de données
● Méthodes GET et POST
● Méfiez-vous des utilisateurs
● TP introductif, fin
Transmettre des données
GET et POST
Transmettre des données d’une page à l’autre
Deux méthodes:
● GET
● POST
Transmettre avec GET
https://site.fr/fichier.php?param1=valeur1¶m2=valeur2
● ? marque le début des paramètres
● Chaque paramètre a un nom et une valeur optionnelle
● & permet de séparer les paramètres
Dans le fichier.php, on récupère ces informations dans le
tableau $_GET
Transmettre avec GET
127.0.0.1/bWeb/index.php?coucou&user=bthouverez
● 2 paramètres:
○ coucou : n’a pas de valeur
○ user : qui a la valeur bthouverez
Transmettre avec GET
Transmettre avec GET - les formulaires
● Brider l’utilisateur
● Protéger les données en amont
○ Vérifier à la volée la saisie de l’utilisateur
○ Javascript, plus tard au programme
● Protéger les données en aval
○ Vérifier la taille des données, le type
○ Redemander à l’utilisateur tant qu’il n’a pas saisi ce
que vous voulez réellement
L’utilisateur vicieux
→
L’utilisateur vicieux - Faille XSS
L’utilisateur vicieux, y remédier
● Faire très attention dès que l’on affiche des données utilisateur
● Utiliser la méthode htmlspecialchars()
● Transmission de données
● Méthodes GET et POST
● Méfiez-vous des utilisateurs
● TP introductif, fin
Séance 3/4
● Le système de sessions
● Les cookies
● TP Roulette 1
● TP Roulette 2
Développons le nouveau gmail
index.php
inbox.php settings.php
Développons le nouveau gmail
inbox.php settings.php
Développons le nouveau gmail
inbox.php settings.php
Vérif données
Développons le nouveau gmail
connexion
navigation libre
inbox.php settings.php
Vérif données
Développons le nouveau gmail
déconnexion
Je vous montre comment coder
ceci avec ce que nous avons vu
jusqu’à présent
navigation libre
inbox.php settings.php
Vérif données
Contourner l’identification
déconnexion
Entrée visiteur
navigation libre
inbox.php settings.php
Vérif données
Contourner l’identification
déconnexion
La vérification des données
étant effectuée dans inbox.php,
tout devrait bien se passer ici et
Entrée visiteur l’utilisateur ne devrait avoir
navigation libre accès à aucun contenu
inbox.php settings.php
Vérif données
Contourner l’identification
connexion
déconnexion
Entrée visiteur
navigation libre
inbox.php settings.php
Vérif données
Contourner l’identification
connexion
Entrée visiteur
navigation libre
inbox.php settings.php
Vérif données
Retenir des données
connexion
déconnexion
navigation libre
inbox.php settings.php
Vérif données
Solution à notre problème
navigation libre
inbox.php settings.php
Vérif données
Remplir session
Solution à notre problème
navigation libre
inbox.php settings.php
Remplir session
Solution à notre problème
navigation libre
inbox.php settings.php
Remplir session
Sessions et cookies
Session Cookie
echo $_COOKIE[‘id’];
$_SESSION[‘id’] = 42;
echo $_SESSION[‘id’];
Projet
Roulette
La roulette
1. Architecture HTML
2. Transmission de données, sessions
3. Gestion de bases de données
4. Modèle MVC
5. Espace membre
6. Se passer d’une BDD
Fin séance 3/4
● Le système de sessions
● Les cookies
● TP Roulette 1
● TP Roulette 2
Séance 5
● Bases de données
● phpmyadmin
● TP Roulette 3
Les bases de données
● Un ensemble de tables
● Une table regroupe plusieurs champs
● Chaque champs à un type
Système de Gestion de Base de Données
Source: OpenClassRoom
Rappels SQL
Création de table
http://iutdoua-web.univ-lyon1.fr/phpMyAdmin/
● Login : pxxxxxxx
● Mot de passe : Numéro BIP
Interface de phpMyAdmin
Interpréteur SQL
Créer une base
● INT : entier
● VARCHAR : chaîne de caractère “courte” (un nom d’utilisateur)
● TEXT : chaîne de caractère “longue” (un chapitre d’un roman)
● DATE : date
id_parent id_enfant
1 3
1 4
Import/export
Parcourir la réponse
Faire une requête avec variables
Mauvaise pratique!
● Assemblage brouillon des “” et ‘’, ou besoin de les échapper \”
● Faille de sécurité, un utilisateur vicieux pourrait injecter du code
SQL en changeant ses informations ...
On va préparer les requêtes puis les exécuter
Faire une requête avec variables sécurisée
Préparation de la requête
Attention à l’ordre
Faire une requête avec variables sécurisée
● Bases de données
● phpmyadmin
● TP Roulette 3
Séance 6
● Intro POO
● POO PHP
● TP Roulette 4
La POO en PHP
La programmation orientée objet
● classe ● constructeurs
● objet ● accesseurs
● instance ● héritage
● encapsulation ● abstraction
● visibilité ● polymorphisme
● attribut statique
Cf Intro POO
Classe PHP
Classe PHP
Héritage PHP, variable de classe et abstraction
TP Roulette 4
POO PHP
● POO
● POO PHP
● TP Roulette 4
Séance 7/8
● MVC
● TP Roulette 5
MVC
Model View Controller
MVC, kézako?
Pattern MVC
MVC: le Modèle
Pour une table SQL, nous aurons deux classes PHP, le DTO et le DAO
DTO DAO
View
Pattern MVC
MVC: la Vue
Model
View
Pattern MVC
MVC: le Contrôleur
Model
View
Pattern MVC
Requête
HTTP
Controller
Navigateur client
Model
View
Pattern MVC
Requête
HTTP
Controller
Navigateur client
Demande
données
Model
View
Pattern MVC
Requête
HTTP
Controller
Navigateur client Fournit
données
Demande
données
Model
View
Pattern MVC
Requête
HTTP
Controller
Navigateur client Fournit
données
Demande
données
Transfère
données
Model
View
Pattern MVC
Requête
HTTP
Controller
Navigateur client Fournit
données
Demande
données
Transfère
données
Met en forme
le résultat
Model
View
Pattern MVC
Avantages de MVC
Un framework:
● Ensemble de fonctions servant à créer les fondations d’un site web
● “Cadre de travail” , plus qu’une simple bibliothèque
● Nécessité de respecter l’architecture du framework
● Il faut connaître PHP, puis connaître le framework
● Mais gain de temps considérable quand on sait le manier
Ne pas confondre: framework et CMS
Vision après installation Une page blanche Un site internet prêt à l’emploi
Un design pattern fournit des idées, des façons de faire, des bonnes
pratiques mais pas de façon d’implémenter concrète.
Cependant, pour MVC en PHP :
● Diviser les trois modules dans trois dossiers
● Découper pour avoir le maximum de vues
● Aucun code HTML en dehors du dossier des vues
● Toutes les requêtes traitées par le contrôleur
MVC en pratique
● MVC
● TP Roulette 5
Séance 9/10
Les balises:
● Vous choisissez le nom
● Écrites entre chevrons
● Peuvent être par paires <balise></balise> ou uniques <balise />
● Peuvent contenir:
○ une valeur (chaîne de caractère)
○ une autre balise (arborescence), pas de chevauchement
XML: règles de nommage des balises
Un nom de balise:
● peut contenir des lettres et des chiffres
● ainsi que des caractères spéciaux (on préfère tout de même éviter)
● ne peut pas débuter par un chiffre ou un caractère de ponctuation
● ne peut pas commencer par les lettres XML
● ne peut pas contenir d'espaces
XML: les éléments du langage
Les attributs:
● Conformes aux mêmes règles de nommage
● Information secondaire/cachée apportée à la balise
● Optionnels, peuvent être multiples
Bien former son fichier XML
ATTENTION
Avec ce choix, les données sont stockées en clair dans un fichier texte
On évite, par exemple, de stocker des mots de passe en clair ...
SimpleXML: gestion de XML en PHP