,
Programmation Web
Coté serveur : PHP, PDO, MVC, DAL, Front Controller
Rémy Malgouyres
LIMOS UMR 6158, IUT, département info Université Clermont 1
B.P. 86
63172 AUBIERE cedex http://malgouyres.org/
Tous mes cours sur le Web sont sur le Web :
Cours de programmation WEB sur les documents hypertexte HTML/CSS : http://malgouyres.org/programmation-html-css
Tutoriel sur le CMS Drupal :
http://malgouyres.org/tutoriel-drupal
Cours de programmation WEB côté serveur en PHP :
http://malgouyres.org/programmation-php
Cours de programmation WEB côté client en JavaScript :
http://malgouyres.org/programmation-javascript
Cours sur l’administration de serveurs (ServeursWEBavecapache,SSL,LDAP...) : http://malgouyres.org/administration-reseau
Table des matières
Table des matières 1
I Bases du langage PHP 4
1 PHP procédural 7
1.1 Notion deCGI . . . 7
1.2 Générer du codeHTML avec un CGI enPHP . . . 8
1.3 Exemple de fonction en PHP . . . 9
1.4 Inclure un fichier PHP dans un autre . . . 10
1.5 Arithmétique : typesint etfloat . . . 11
1.6 Tableaux indexés : avec une clé de type int . . . 12
1.7 Tableaux associatifs : avec une clé de type String . . . 13
1.8 Passage de paramètre à un script PHP . . . 15
1.9 Variables Locales ou Globales, Références . . . 18
2 Les classes en PHP 21 2.1 Conception Objet, Modularité et Interopérabilité . . . 21
2.2 Exemples de classes PHP . . . 23
2.3 Validation en entrée et gestion d’une exception . . . 31
2.4 Classe Employehéritant de la classe Personne . . . 41
II Formulaires et Filtrage des Données Utilisateur 46
3 Formulaires HTML/PHP 49 3.1 FormulairesHTML . . . 493.2 Exemple de styleCSS pour formulaire . . . 50
3.3 Validation pour la sécurité : Appel defilter_var. . . 55
3.4 Appel des vues . . . 57
3.5 Tableaux $_POST $_GET $_REQUEST . . . 58
3.6 Formulaires dynamiques an javascript . . . 60
4 Injection, Filtrage, Expressions Régulières 63 4.1 Injections HTML et échappement . . . 63
4.2 Injections SQL . . . 70
4.3 La fonctionfilter_var . . . 76
4.4 Expressions régulières . . . 80
TABLE DES MATIÈRES
5 Formulaires PHP/HTML, filtrage, exceptions 82
5.1 Modélisation : Diagrammes de Classes . . . 82
5.2 La ClasseAdresse . . . 84
5.3 Filtrage des attributs . . . 85
5.4 Fabrique d’Adresse . . . 90
5.5 Génération de formulaires et classeAdresseFormView . . . 91
5.6 Enchaînement de la saisie à la vue . . . 97
III Persistance 102
6 Cookies 107 6.1 Création d’uncookie . . . 1076.2 Récupération d’un cookie. . . 109
6.3 Suppression d’un cookie . . . 110
6.4 Mise à jour d’un cookie . . . 111
7 Sessions 112 7.1 Concept de Session et Problèmes de Sécurité . . . 112
7.2 Créer une session . . . 113
7.3 Création d’une session commune à tous les utilisateurs . . . 113
7.4 Durée et SID d’une session . . . 114
7.5 Destruction d’une Session . . . 115
7.6 Exemple de Session avecSID aléatoire transmis par GET . . . 116
7.7 Exemple de Session avecSID aléatoire transmis par COOKIE . . . 119
7.8 Login/Password : Exemple de Politique de Sécurité . . . 120
8 Bases de Données et PHP Data Objects 130 8.1 Créer un Base de Données dansphpmyadmin . . . 130
8.2 Initiation àPDO : connexion, query, destruction . . . 134
8.3 Requêtes Préparées . . . 141
9 Couche d’Accès aux données 146 9.1 Diagrammes de Conception . . . 146
9.2 Classe de Connexion à une Base de Données . . . 146
9.3 Classes Gateway : Persistance des Objets Métiers . . . 151
IV Conception d’Architectures Avancées 159
10 Analyse Fonctionnelle 163 10.1 Storyboards . . . 16310.2 Diagrammes de Cas d’Utilisations . . . 164
11 Organisation des Répertoires et Configuration 165 11.1 Organisation des Répertoires . . . 165
11.2 Autoload . . . 166
11.3 La classeConfig : éviter lesURL en dûr . . . 168
TABLE DES MATIÈRES
12 Architectures MVC 172
12.1 Le Contrôleur . . . 172
12.2 Le Modèle . . . 176
12.3 Les Vues . . . 180
13 Utilisateurs et Front Controller 182 13.1 Storyboards . . . 182
13.2 Diagramme de Cas d’Utilisation . . . 183
13.3 Le Front-Controller . . . 183
13.4 Gestion de l’Authentification . . . 190
13.5 Gestion de plusieurs classes métier . . . 193