Table des matières. 2012 Pearson France PHP & MySQL, 4e éd. Luke Welling, Laura Thomson



Documents pareils
Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

Programmation Web. Madalina Croitoru IUT Montpellier

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

PHP 5.4 Développez un site web dynamique et interactif

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

Groupe Eyrolles, 2005,

Réussir. son site e-commerce. avecoscommerce

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

les techniques d'extraction, les formulaires et intégration dans un site WEB

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Formation : WEbMaster

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Groupe Eyrolles, 2004, ISBN :

Vulnérabilités et sécurisation des applications Web

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Les outils de création de sites web

avast! EP: Installer avast! Small Office Administration

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

Architectures web/bases de données

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Formation en Logiciels Libres. Fiche d inscription

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Introduction à. Oracle Application Express

CRM & DATA SOLUTIONS VENTES SFA & MARKETING

Développement des Systèmes d Information

Hébergement de site web Damien Nouvel

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

L3 informatique TP n o 2 : Les applications réseau

L art d ordonnancer. avec JobScheduler. François BAYART

Diffuser un contenu sur Internet : notions de base... 13

Stockage du fichier dans une table mysql:

L identité numérique. Risques, protection

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Gestion collaborative de documents

Formation Webmaster : Création de site Web Initiation + Approfondissement

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

Devenez un véritable développeur web en 3 mois!

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

PHP et les Bases de données - Généralités

Configuration de plusieurs serveurs en Load Balancing

Base de Connaissances SiteAudit. Utiliser les Rapports Planifiés. Sommaire des Fonctionnalités. Les Nouveautés

ANALYSTE PROGRAMMEUR DIPLÔME D ÉTABLISSEMENT

Informations générales. Technologies. css3-html5-php-ajax-j-query-mootools-action-script3

Vulnérabilités et solutions de sécurisation des applications Web

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

Gestion d identités PSL Exploitation IdP Authentic

Introduction à MATLAB R

Joomla! Création et administration d'un site web - Version numérique

Installation d un serveur virtuel : DSL_G624M

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

FileMaker Server 12. publication Web personnalisée avec XML

E.N.T. Espace Numérique de Travail

Hébergement WeboCube. Un système performant et sécurisé. Hébergement géré par une équipe de techniciens

Hébergement de sites Web

FileMaker Server 14. Guide de démarrage

Système de Gestion de Ressources

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Principales Evolutions Version

Petite définition : Présentation :

Installation et Mise en œuvre de MySQL

JAB, une backdoor pour réseau Win32 inconnu

//////////////////////////////////////////////////////////////////// Administration bases de données

Les services de la PLM Mathrice. Et quelques outils de web-conférence

PHP. PHP et bases de données

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

RÉALISATION D UN SITE DE RENCONTRE

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Groupe Eyrolles, 2006, ISBN : X

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

The Mozilla Art Of War. David Teller. 20 septembre Laboratoire d Informatique Fondamentale d Orléans. La sécurité des extensions.

En date du 11 décembre 2008

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

PHP 5. avancé. 3 e édition. Eric Daspet. Cyril Pierre de Geyer. Préface de Damien Seguy

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

as Architecture des Systèmes d Information

Manuel du composant CKForms Version 1.3.2

Retour d expérience sur Prelude

SERVEUR DE MESSAGERIE

Configurer la supervision pour une base MS SQL Server Viadéis Services

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Mise à jour : Octobre 2011

Catalogue des Formations Techniques

Oracle Maximum Availability Architecture

SPIP 1.9. Créer son site avec des outils libres. Michel-Marie Maudet Anne-Laure Quatravaux Dominique Quatravaux. Avec la contribution de Perline

Configurer Thunderbird sur clé USB

Tel : Fax :

Single Sign-On open source avec CAS (Central Authentication Service) Vincent Mathieu Pascal Aubry Julien Marchal

Zabbix. Solution de supervision libre. par ALIXEN

Transcription:

Introduction... 1 Les points forts de ce livre... 1 Ce que vous apprendrez en lisant ce livre... 1 Présentation de PHP... 2 Présentation de MySQL... 3 Pourquoi utiliser PHP et MySQL?... 3 Quelques avantages de PHP... 4 Performances... 5 Adaptabilité... 5 Intégration avec les bases de données... 5 Bibliothèques intégrées... 5 Coût... 6 Facilité d apprentissage de PHP... 6 Support orienté objet... 6 Portabilité... 6 Souplesse dans le processus de développement... 6 Code source... 7 Disponibilité du support et de la documentation... 7 Nouveautés de PHP 5... 7 Quelques avantages de MySQL... 8 Performances... 8 Coût réduit... 8 Simplicité d emploi... 9 Portabilité... 9 Code source... 9 Disponibilité du support... 9 Nouveautés de MySQL 5... 9 Organisation de ce livre... 10 Encore un mot... 11

IV PHP & MySQL Partie I Utilisation de PHP 1. PHP : les bases... 15 Utilisation de PHP... 16 Formulaires HTML... 16 Code du formulaire... 16 Traitement du formulaire... 18 Incorporation de code PHP dans du code HTML... 18 Balises PHP... 19 Styles des balises PHP... 20 Instructions de PHP... 20 Espaces... 21 Commentaires... 22 Ajout de contenu dynamique... 22 Appel de fonctions... 23 Fonction date()... 24 Accès aux variables des formulaires... 24 Variables des formulaires... 24 Concaténation de chaînes... 28 Variables et littéraux... 28 Identificateurs... 29 Création de variables... 30 Affectation de valeurs à des variables... 30 Types des variables... 30 Types de données du PHP... 31 Intérêt du typage... 31 Transtypage... 32 Variables dynamiques... 32 Constantes... 33 Portée des variables... 34 Opérateurs... 35 Opérateurs arithmétiques... 35 Opérateur de chaînes... 36 Opérateurs d affectation... 37 Opérateurs de comparaison... 39 Opérateurs logiques... 41 Opérateurs sur les bits... 41 Autres opérateurs... 42 Utilisation des opérateurs : calcul des totaux d un formulaire... 44

V Priorité et associativité des opérateurs : ordre d évaluation des expressions... 46 Fonctions sur les variables... 48 Test et définition des types de variables... 48 Test de l état d une variable... 49 Réinterprétation des variables... 50 Structures de contrôle... 51 Prise de décision avec des structures conditionnelles... 51 Instructions if... 51 Blocs de code... 52 Instructions else... 52 Instructions elseif... 53 Instructions switch... 54 Comparaison des différentes structures conditionnelles... 56 Structures de répétition : itérations... 56 Boucles while... 58 Boucles for et foreach... 59 Boucles do while... 60 Interruption de l exécution d une structure de contrôle ou d un script... 61 Employer l autre syntaxe des structures de contrôle... 61 Utiliser declare... 62 Prochaine étape : enregistrement de la commande du client... 62 2. Stockage et récupération des données... 63 Stockage des données en vue d un usage ultérieur... 63 Stockage et récupération des commandes de Bob... 64 Présentation des fonctions de traitement des fichiers... 64 Ouverture d un fichier... 65 Modes d ouverture des fichiers... 65 Utilisation de fopen() pour ouvrir un fichier... 66 Ouverture de fichiers via FTP ou HTTP... 69 Problèmes d ouverture de fichiers... 70 Écriture dans un fichier... 72 Paramètres de la fonction fwrite()... 73 Formats de fichiers... 73 Fermeture d un fichier... 74 Lecture dans un fichier... 76 Ouverture d un fichier en lecture : fopen()... 77 Détermination du moment où doit s arrêter la lecture : feof()... 77 Lecture d une ligne à la fois : fgets(), fgetss() et fgetcsv()... 78 Lecture de l intégralité du contenu d un fichier : readfile(), fpassthru() et file()... 79

VI PHP & MySQL Lecture d un caractère : fgetc()... 80 Lecture d une longueur arbitraire : fread()... 81 Autres fonctions utiles pour la manipulation des fichiers... 81 Vérification de l existence d un fichier : file_exists()... 81 Détermination de la taille d un fichier: filesize()... 81 Suppression d un fichier : unlink()... 81 Navigation dans un fichier : rewind(), fseek() et ftell()... 82 Verrouillage des fichiers... 83 Une meilleure solution : les systèmes de gestion de base de données... 84 Problèmes posés par l usage de fichiers plats... 84 La solution apportée par les SGBDR à ces problèmes... 85 Pour aller plus loin... 86 Pour la suite... 86 3. Utilisation de tableaux... 87 Qu est-ce qu un tableau?... 87 Tableaux à indices numériques... 88 Initialisation des tableaux à indices numériques... 89 Accès au contenu des tableaux... 90 Utilisation de boucles pour accéder au contenu d un tableau... 91 Tableaux avec des indices différents... 91 Initialisation d un tableau... 91 Accès aux éléments du tableau... 92 Utilisation de boucles... 92 Opérateurs sur les tableaux... 94 Tableaux multidimensionnels... 95 Tri de tableaux... 99 Utilisation de la fonction sort()... 99 Utilisation des fonctions asort() et ksort() pour trier des tableaux... 100 Tri dans l ordre inverse... 100 Tri de tableaux multidimensionnels... 100 Tris définis par l utilisateur... 101 Tris définis par l utilisateur, dans l ordre inverse... 103 Réordonner des tableaux... 103 Utilisation de la fonction shuffle()... 103 Utilisation de la fonction array_reverse()... 105 Chargement de tableaux à partir de fichiers... 105 Autres manipulations de tableaux... 109 Parcours d un tableau : each, current(), reset(), end(), next(), pos() et prev().. 109 Application d une fonction donnée à chaque élément d un tableau : array_walk()... 110

VII Comptage des éléments d un tableau : count(), sizeof() et array_count_values()... 111 Conversion de tableaux en variables scalaires : extract()... 112 Pour aller plus loin... 114 Pour la suite... 114 4. Manipulation de chaînes et d expressions régulières... 115 Application modèle : formulaire intelligent de saisie d un message (Smart Form Mail)... 115 Mise en forme de chaînes... 118 Élagage des chaînes : chop(), Itrim() et trim()... 118 Mise en forme des chaînes en vue de leur présentation... 119 Mise en forme de chaînes en vue de leur enregistrement : addslashes() et stripslashes()... 123 Fusion et scission de chaînes au moyen des fonctions de traitement de chaîne... 125 Utilisation des fonctions explode(), implode() et join()... 125 Utilisation de la fonction strtok()... 126 Utilisation de la fonction substr()... 127 Comparaison de chaînes... 128 Comparaison des chaînes : strcmp(), strcasecmp() et strnatcmp()... 128 Longueur d une chaîne : la fonction strlen()... 129 Recherche et remplacement de sous-chaînes avec les fonctions de traitement de chaînes... 129 Recherche de sous-chaînes dans des chaînes : strstr(), strchr(), strrchr() et stristr()... 130 Détermination de la position d une sous-chaîne dans une chaîne : strpos() et strrpos()... 131 Substitution de sous-chaînes : str_replace() et substr_replace()... 132 Introduction aux expressions régulières... 134 Notions de base... 134 Ensembles et classes de caractères... 135 Répétition... 136 Sous-expressions... 137 Dénombrement de sous-expressions... 137 Ancrage au début ou à la fin d une chaîne... 137 Branchement... 138 Recherche littérale de caractères spéciaux... 138 Récapitulatif sur les caractères spéciaux... 138 Application au cas du formulaire "intelligent" de courrier électronique... 139 Recherche de sous-chaînes au moyen d expressions régulières... 141

VIII PHP & MySQL Remplacement de sous-chaînes au moyen d expressions régulières... 141 Découpage de chaînes au moyen d expressions régulières... 142 Pour aller plus loin... 143 Pour la suite... 143 5. Réutilisation de code et écriture de fonctions... 145 Avantages de la réutilisation du code... 145 Coût... 145 Fiabilité... 146 Cohérence... 146 Utilisation des instructions require() et include()... 146 Extensions des noms de fichiers et require()... 147 Utilisation require() pour créer des modèles de site web... 149 Utilisation des options de configuration auto_prepend_file et auto_append_file... 154 Utilisation de fonctions en PHP... 155 Appel de fonctions... 155 Appel d une fonction indéfinie... 157 Casse et noms des fonctions... 158 Définir ses propres fonctions?... 158 Structure de base d une fonction... 159 Attribution d un nom à une fonction... 160 Paramètres... 161 Portée... 163 Passer des paramètres par référence et par valeur... 166 Utilisation du mot-clé return... 167 Retour de valeurs des fonctions... 169 Récursivité... 170 Pour aller plus loin... 172 Pour la suite... 172 6. PHP orienté objet... 173 Concepts de la programmation orientée objet... 173 Classes et objets... 173 Polymorphisme... 175 Héritage... 176 Création de classes, d attributs et d opérations en PHP... 176 Structure d une classe... 176 Constructeurs... 177 Destructeurs... 177 Instanciation des classes... 178

IX Utilisation des attributs de classe... 178 Contrôler l accès avec private et public... 181 Appel des opérations d une classe... 181 Implémentation de l héritage en PHP... 182 Contrôler la visibilité via l héritage avec private et protected... 183 Redéfinition (overriding)... 184 Empêcher l héritage et les redéfinitions avec final... 186 Héritage multiple... 186 Implémentation d interfaces... 187 Conception de classes... 188 Implémentation d une classe... 189 Comprendre les fonctionnalités orientées objet avancées de PHP... 198 Constantes de classe... 198 Méthodes statiques... 198 Vérification du type de classe et indication de type... 198 Clonage d objets... 199 Classes abstraites... 200 Surcharge de méthodes avec call()... 200 Utiliser autoload()... 201 Implémentation des itérateurs et itérations... 202 Conversion de classes en chaînes... 204 Utiliser l API d introspection... 204 Pour la suite... 205 7. Gestion des exceptions... 207 Notions relatives à la gestion des exceptions... 207 La classe Exception... 209 Exceptions définies par l utilisateur... 209 Exceptions dans le garage de Bob... 212 Exceptions et autres mécanismes de gestion des erreurs en PHP... 215 Lectures complémentaires... 216 Prochaine étape... 216 Partie II Utilisation de MySQL 8. Conception d une base de données web... 219 Concepts des bases de données relationnelles... 220

X PHP & MySQL Tables... 220 Colonnes... 221 Lignes... 221 Valeurs... 221 Clés... 221 Schémas... 223 Relations... 223 Conception d une base de données web... 224 Penser aux objets réels que vous modélisez... 224 Éviter d enregistrer des informations redondantes... 226 Utiliser des valeurs de colonne atomiques... 227 Choisir des clés pertinentes... 228 Penser aux questions que vous poserez à votre base de données... 228 Éviter les architectures ayant beaucoup d attributs vides... 229 Récapitulatif sur les types de tables... 230 Architecture d une base de données web... 230 Architecture... 230 Pour aller plus loin... 232 Pour la suite... 232 9. Création d une base de données web... 233 Note sur l utilisation du moniteur MySQL... 234 Comment ouvrir une session MySQL... 235 Création des bases de données et des utilisateurs... 237 Configuration des utilisateurs et des privilèges... 237 Introduction au système de privilèges de MySQL... 237 Principe des privilèges minimaux... 238 Configuration des utilisateurs : la commande GRANT... 238 Types et niveaux des privilèges... 240 La commande REVOKE... 243 Exemples d utilisation de GRANT et de REVOKE... 243 Configurer un utilisateur pour le Web... 244 Utiliser la bonne base de données... 245 Création des tables de la base de données... 246 Signification des autres mots-clés... 247 Analyse des types de colonnes... 248 Examiner la base de données avec SHOW et DESCRIBE... 250 Création d index... 251 Identificateurs MySQL... 252 Types des colonnes... 253 Types numériques... 253

XI Types de dates et d heures... 255 Types de chaînes... 256 Pour aller plus loin... 258 Pour la suite... 258 10. Travailler avec une base de données MySQL... 259 Qu est-ce que SQL?... 259 Insertion de données dans une base de données... 260 Récupération des données dans la base de données... 262 Récupérer des données ayant des critères spécifiques... 264 Récupérer des données dans plusieurs tables... 266 Récupérer les données dans un ordre particulier... 272 Groupement et agrégation des données... 273 Choisir les lignes à renvoyer... 275 Utiliser des sous-requêtes... 275 Mise à jour des enregistrements de la base de données... 278 Modification des tables après leur création... 279 Supprimer des enregistrements de la base de données... 281 Supprimer des tables... 282 Supprimer une base de données entière... 282 Pour aller plus loin... 282 Pour la suite... 282 11. Accès à une base de données MySQL à partir du Web avec PHP... 283 Fonctionnement des architectures de bases de données web... 283 Principales étapes dans l interrogation d une base de données à partir du Web.. 287 Vérifier et filtrer les données saisies par l utilisateur... 287 Établissement de la connexion... 288 Choisir une base de données à utiliser... 290 Interroger la base de données... 290 Récupérer les résultats de la requête... 291 Déconnexion de la base de données... 292 Ajouter des informations dans la base de données... 293 Utiliser des instructions préparées... 296 Autres interfaces PHP pour les bases de données... 298 Utilisation d une interface de base de données générique : PEAR::MDB2... 298 Pour aller plus loin... 301 Pour la suite... 301 12. Administration MySQL avancée... 303 Les détails du système des privilèges... 303 La table user... 305

XII PHP & MySQL Les tables db et host... 307 Les tables tables_priv, columns_priv et procs_priv... 309 Contrôle d accès : utilisation des tables de privilèges par MySQL... 310 Mise à jour des privilèges : à quel moment les modifications prennent-elles effet?... 311 Sécuriser une base de données MySQL... 311 MySQL du point de vue du système d exploitation... 312 Mots de passe... 312 Privilèges des utilisateurs... 313 Problèmes relatifs au Web... 314 Obtenir plus d informations sur les bases de données... 314 Obtenir des informations avec SHOW... 315 Obtenir des informations sur les colonnes avec DESCRIBE... 318 Comprendre le fonctionnement des requêtes avec EXPLAIN... 318 Astuces générales d optimisation... 324 Optimisation de l architecture... 324 Permissions... 324 Optimisation des tables... 324 Utilisation des index... 325 Utiliser des valeurs par défaut... 325 Autres astuces... 325 Sauvegarder votre base de données MySQL... 325 Restauration de votre base de données MySQL... 326 Implémenter la réplication... 327 Configurer le maître... 327 Réaliser le transfert de données initial... 328 Configurer l esclave ou les esclaves... 329 Pour aller plus loin... 329 Pour la suite... 330 13. Programmation MySQL avancée... 331 L instruction LOAD DATA INFILE... 331 Les moteurs de stockage... 331 Les transactions... 333 Comprendre la définition des transactions... 333 Utiliser des transactions avec InnoDB... 334 Les clés étrangères... 336 Les procédures stockées... 336 Un exemple simple... 337 Variables locales... 340 Curseurs et structures de contrôle... 340

XIII Pour aller plus loin... 344 Pour la suite... 344 Partie III Sécurité 14. Sécurité des applications web... 347 Stratégies de sécurité... 347 Partir du bon pied... 347 Trouver un équilibre entre la sécurité et la facilité d utilisation... 348 Surveiller la sécurité... 348 Une approche de base... 349 Identifier les menaces auxquelles nous devrons faire face... 349 Accès ou modification de données confidentielles... 349 Perte ou destruction des données... 350 Déni de service... 350 Injection de code malicieux... 351 Compromission d un serveur... 351 Savoir à qui l on a affaire... 352 Les pirates... 352 Utilisateurs victimes de machines infectées... 352 Employés mécontents... 352 Voleurs de matériel... 353 Nous-mêmes... 353 Sécuriser son code... 353 Filtrage des données fournies par les utilisateurs... 353 Protéger les sorties... 358 Organiser le code... 360 Contenu du code... 361 Considérations sur le système de fichiers... 362 Stabilité du code et bogues... 363 Apostrophes d exécution et exec... 364 Sécuriser le serveur web et PHP... 365 Garder les logiciels à jour... 365 Lire le fichier php.ini... 366 Configurer le serveur web... 367 Applications web chez des hébergeurs... 368 Sécuriser le serveur de base de données... 370

XIV PHP & MySQL Utilisateurs et système de permissions... 370 Envoi de données au serveur... 371 Connexion au serveur... 371 Exécution du serveur... 372 Protéger le réseau... 372 Installation de pare-feux... 373 Utilisation d une DMZ... 373 Préparation contre les attaques DoS et DDoS... 374 Sécurité des ordinateurs et du système d exploitation... 374 Maintenir à jour le système d exploitation... 374 Ne lancer que ce qui est nécessaire... 375 Sécuriser physiquement le serveur... 375 Se préparer aux désastres... 376 Pour la suite... 377 15. Authentification avec PHP et MySQL... 379 Identification des visiteurs... 379 Implémenter un contrôle d accès... 380 Stockage des mots de passe... 383 Chiffrement des mots de passe... 385 Protéger plusieurs pages... 386 Authentification de base... 387 Utiliser l authentification de base avec PHP... 389 Utiliser l authentification de base avec les fichiers.htaccess d Apache... 391 Utiliser l authentification mod_auth_mysql... 395 Installation de mod_auth_mysql... 395 Utilisation de mod_auth_mysql... 396 Création d une authentification personnalisée... 397 Pour aller plus loin... 397 Pour la suite... 398 16. Transactions sécurisées avec PHP et MySQL... 399 Transactions sécurisées... 399 L ordinateur de l utilisateur... 400 Internet... 402 Votre système... 403 Utilisation de SSL... 404 Filtrer les données saisies... 407 Stockage sécurisé... 408 Stockage des numéros de cartes de crédit... 410 Utilisation du chiffrement avec PHP... 410

XV Installation de GPG... 411 Pour aller plus loin... 419 Pour la suite... 420 Partie IV Techniques PHP avancées 17. Interaction avec le système de fichiers et le serveur... 423 Introduction au dépôt de fichiers... 423 Code HTML d un formulaire de dépôt de fichiers... 425 Écriture du code PHP pour le traitement du fichier... 426 Problèmes fréquents... 430 Utilisation des fonctions de manipulation des répertoires... 431 Lecture du contenu de répertoires... 431 Obtention d informations sur le répertoire courant... 435 Création et suppression de répertoires... 435 Interaction avec le système de fichiers... 436 Obtention d informations sur les fichiers... 436 Modification des propriétés d un fichier... 439 Création, suppression et déplacement de fichiers... 440 Utilisation de fonctions d exécution de programmes... 441 Interaction avec l environnement : getenv() et putenv()... 443 Pour aller plus loin... 444 Pour la suite... 444 18. Utilisation des fonctions de réseau et de protocole... 445 Vue d ensemble des protocoles réseau... 445 Envoi et réception de courriers électroniques... 446 Utilisation des données d autres sites web... 446 Utilisation de fonctions de recherche réseau... 449 Utilisation de FTP... 453 Sauvegarde d un fichier ou création d un enregistrement miroir d un fichier... 454 Téléchargement de fichiers vers un serveur... 461 Éviter les dépassements de délai... 461 Autres fonctions FTP... 461 Pour aller plus loin... 462 Pour la suite... 462

XVI PHP & MySQL 19. Gestion de la date et de l heure... 463 Obtention de la date et de l heure à partir d un script PHP... 463 Utilisation de la fonction date()... 463 Utilisation des étiquettes temporelles Unix... 466 Utilisation de la fonction getdate()... 468 Validation de dates avec checkdate()... 469 Formatage des étiquettes temporelles... 469 Conversion entre des formats de date PHP et MySQL... 471 Calculs de dates avec PHP... 473 Calculs de dates avec MySQL... 474 Utiliser des microsecondes... 476 Utilisation des fonctions PHP de calendrier... 477 Pour aller plus loin... 478 Pour la suite... 478 20. Génération d images via PHP... 479 Configuration du support des images dans PHP... 479 Formats graphiques... 480 JPEG... 481 PNG... 481 WBMP... 481 GIF... 482 Création d images... 482 Canevas de l image... 483 Dessin ou impression de texte dans une image... 484 Production de l image finale... 486 Nettoyage final... 487 Utilisation d images produites automatiquement dans d autres pages... 487 Utilisation de texte et de polices pour créer des images... 488 Définition du canevas de base... 491 "Faire tenir" le texte sur le bouton... 492 Positionnement du texte... 495 Écriture du texte sur le bouton... 496 Fin du traitement... 496 Représentation graphique de données numériques... 497 Autres fonctions de création et de manipulation d images... 505 Pour aller plus loin... 505 Pour la suite... 505 21. Utilisation du contrôle de session en PHP... 507

XVII Qu est-ce que le contrôle de session?... 507 Fonctionnalité de base d une session... 508 Qu est-ce qu un cookie?... 508 Création de cookies à partir d un script PHP... 509 Utilisation des cookies avec des sessions... 509 Stockage de l ID de session... 510 Implémentation d un contrôle de session simple... 510 Démarrage d une session... 510 Enregistrement des variables de session... 511 Utilisation de variables de session... 511 Suppression des variables et destruction de la session... 512 Un exemple de session simple... 512 Configuration du contrôle de session... 514 Authentification avec le contrôle de session... 516 Pour aller plus loin... 522 Pour la suite... 522 22. Autres fonctions et possibilités offertes par PHP... 523 Évaluation de chaînes : eval()... 523 Achèvement de l exécution : die() et exit()... 524 Sérialisation de variables et d objets... 525 Obtention d informations sur l environnement PHP... 526 Liste des extensions chargées... 526 Identification du propriétaire d un script... 527 Détermination de la date de dernière modification d un script... 527 Modification temporaire de l environnement d exécution... 527 Colorisation du code source... 528 Utiliser PHP en ligne de commande... 529 Pour la suite... 530 Partie V Créer des projets avec PHP et MySQL 23. Utilisation de PHP et de MySQL dans des projets importants... 533 Appliquer les règles du génie logiciel au développement web... 533 Planification et mise en œuvre d un projet d application web... 534 Réutilisation du code... 535 Écrire du code facile à maintenir... 536

XVIII PHP & MySQL Standards de programmation... 536 Décomposer le code... 540 Utiliser une structure standard pour vos répertoires... 541 Documenter et partager les fonctions développées en interne... 541 Implémenter un contrôle de versions... 542 Choisir un environnement de développement... 543 Documenter vos projets... 544 Prototypage... 545 Séparation de la logique et du contenu... 546 Optimisation du code... 547 Quelques optimisations simples... 547 Utilisation des produits de Zend... 547 Tests... 548 Pour aller plus loin... 549 Pour la suite... 550 24. Débogage... 551 Les erreurs de programmation... 551 Erreurs de syntaxe... 551 Erreurs en cours d exécution... 553 Erreurs de logique... 559 Aide au débogage des variables... 561 Les niveaux d erreur... 563 Modifier les paramètres d affichage des erreurs... 565 Déclencher vos propres erreurs... 566 Gérer correctement les erreurs... 567 Pour la suite... 570 25. Authentification des utilisateurs et personnalisation... 571 Composants de la solution... 572 Identification des utilisateurs et personnalisation... 572 Enregistrer les liens vers les sites favoris... 573 Sites suggérés... 573 Résumé de la solution... 574 Implémentation de la base de données... 576 Implémentation du site de base... 577 Implémentation de l authentification des utilisateurs... 580 Enregistrement... 580 Connexion... 586 Déconnexion... 590 Modifier les mots de passe... 591 Réinitialiser les mots de passe oubliés... 593

XIX Implémentation de l enregistrement et de la récupération des favoris... 598 Ajouter des liens... 598 Afficher les favoris... 601 Supprimer des favoris... 601 Implémentation de la suggestion de sites... 604 Pour aller plus loin... 607 Pour la suite... 608 26. Implémentation d un panier virtuel... 609 Les composants... 609 Implémenter un catalogue en ligne... 610 Conserver une trace des achats effectués par l utilisateur... 610 Implémenter un système de paiement... 611 Créer une interface d administration... 612 Présentation de la solution... 612 Implémentation de la base de données... 616 Implémentation du catalogue en ligne... 619 Liste des catégories... 621 Liste des livres d une catégorie... 623 Afficher les informations relatives à un livre... 625 Implémentation du panier virtuel... 626 Utiliser le script show_cart.php... 627 Afficher le panier virtuel... 630 Ajouter des articles dans le panier virtuel... 632 Enregistrer le panier virtuel modifié... 634 Afficher une barre d en-tête de résumé... 635 Règlement des achats... 635 Implémentation du paiement... 641 Implémentation d une interface d administration... 644 Pour aller plus loin... 652 Utilisation d un système existant... 652 Pour la suite... 653 27. Implémentation d un webmail... 655 Composants de la solution... 655 Les protocoles de courrier POP3 et IMAP... 656 Gestion de POP3 et IMAP en PHP... 656 Résumé de la solution... 658 Création de la base de données... 660 Architecture du script... 661 Connexion et déconnexion... 667

XX PHP & MySQL Configuration de comptes de courrier... 670 Création d un compte de courrier... 672 Modifier un compte de courrier existant... 673 Supprimer un compte de courrier... 674 Lecture du courrier... 674 Choisir un compte... 675 Consulter le contenu d une boîte aux lettres... 677 Lecture d un e-mail... 680 Afficher les en-têtes d un message... 684 Suppression des messages... 685 Envoyer du courrier... 685 Envoyer un nouveau message... 686 Répondre à un message ou le faire suivre... 687 Pour aller plus loin... 689 Pour la suite... 690 28. Implémentation d un gestionnaire de listes de diffusion... 691 Composants de la solution... 691 Configuration de la base de données... 692 Transfert des fichiers... 693 Envoyer des e-mails incluant des pièces jointes... 693 Présentation de la solution... 694 Configuration de la base de données... 696 Architecture du script... 698 Implémentation de la connexion... 706 Création d un nouveau compte... 706 Ouvrir une session... 709 Implémentation des fonctions de l utilisateur... 712 Consultation des listes... 712 Affichage des informations d une liste... 717 Affichage des archives d une liste... 719 Inscriptions et désinscriptions... 720 Modification des paramètres d un compte... 722 Changement des mots de passe... 722 Fermeture de session... 724 Implémentation des fonctions administratives... 724 Création d une nouvelle liste... 725 Transfert vers le serveur d un nouveau bulletin... 727 Gestion du transfert de plusieurs fichiers... 729 Prévisualisation du bulletin... 734 Envoi du bulletin... 735

XXI Pour aller plus loin... 740 Pour la suite... 741 29. Implémentation d un forum web... 743 Comprendre le processus... 743 Composants de la solution... 744 Présentation de la solution... 746 Conception de la base de données... 747 Afficher l arborescence des articles... 750 Ouverture et fermeture des fils de discussion... 753 Affichage des articles... 755 Utilisation de la classe treenode... 756 Afficher des articles particuliers... 763 Ajouter de nouveaux articles... 765 Extensions... 772 Utiliser un système existant... 772 Pour la suite... 772 30. Production de documents personnalisés en PDF... 773 Présentation du projet... 773 Évaluation des formats de documents... 774 Papier... 774 Texte ASCII... 774 HTML... 775 Formats des traitements de texte... 775 Rich Text Format... 776 PostScript... 777 Portable Document Format... 778 Les composants de la solution... 779 Système d évaluation... 779 Logiciel de génération des documents... 779 Présentation de la solution... 782 Poser les questions du QCM... 783 Évaluation des réponses... 785 Production du certificat RTF... 788 Production d un certificat PDF à partir d un modèle... 791 Production d un document PDF avec PDFlib... 794 Un script "Bonjour tout le monde" pour PDFlib... 795 Production d un certificat avec PDFlib... 800 Gestion des problèmes avec les en-têtes... 807 Pour aller plus loin... 808 La suite... 808

XXII PHP & MySQL 31. Connexion à des services web avec XML et SOAP... 809 Présentation du projet : manipuler XML et les services web... 809 Introduction à XML... 810 Introduction aux services web... 813 Composants de la solution... 815 Utilisation de l interface des services web d Amazon... 815 Analyse XML : réponses REST... 817 Utilisation de SOAP avec PHP... 817 Mise en cache... 817 Présentation de la solution... 817 Cœur de l application... 822 Affichage des livres d une catégorie... 829 La classe AmazonResultSet... 830 Utilisation de REST pour effectuer une requête et récupérer un résultat... 839 Utilisation de SOAP pour effectuer une requête et récupérer un résultat... 846 Mise en cache des réponses à une requête... 848 Construction du panier virtuel... 850 Passer la commande auprès d Amazon... 853 Installation du code du projet... 854 Extension du projet... 855 Pour aller plus loin... 855 32. Construction d applications web 2.0 avec Ajax... 857 Introduction à Ajax... 857 Requêtes et réponses HTTP... 858 DHTML et XHTML... 859 CSS... 860 Programmation côté client... 862 Programmation côté serveur... 862 XML et XSLT... 862 Présentation d Ajax... 862 L objet XMLHTTPRequest... 863 Communication avec le serveur... 865 Utilisation de la réponse du serveur... 867 Rassemblement des composants... 869 Ajouter des éléments Ajax à des projets existants... 872 Ajouter des éléments Ajax à PHPbookmark... 873 Pour aller plus loin... 886 En savoir plus sur le DOM (Document Object Model)... 886 Bibliothèques JavaScript pour les applications Ajax... 887 Sites consacrés au développement Ajax... 887

XXIII Partie VI Annexes Annexe A. Installation de PHP et de MySQL... 891 Installation d Apache, PHP et MySQL sous Unix... 892 Installation à partir de binaires... 892 Installation à partir des sources... 893 Installation de MySQL... 894 Installation de PHP... 896 Modification du fichier httpd.conf... 899 Test du fonctionnement de PHP... 900 Test du fonctionnement de SSL... 901 Installation d Apache, de PHP et de MySQL sous Windows... 902 Installation de MySQL sous Windows... 902 Installation d Apache sous Windows... 904 Installation de PHP sous Windows... 906 Installation de PEAR... 909 Autres configurations... 910 Annexe B. Ressources web... 911 Ressources PHP... 911 Ressources MySQL et SQL... 914 Ressources Apache... 914 Développement web... 914 Index... 915