Chapitre 1 Introduction... 25 À quoi sert PHP?... 27 Présentation, rôle et fonctionnement d un langage de script... 27 Les version 1à4dePHP... 29 Rasmus Lerdorf... 29 Naissance et évolution de PHP... 30 La création de la communauté... 34 La communauté du libre... 35 Historique... 35 La machine en marche... 36 Cathédrale et bazar... 36 La scission : l Open Source... 37 Le droit et les logiciels libres... 38 PHP et le libre... 39 PHP face à ses concurrents (ASP, JSP, etc.)... 40 PHP face aux autres langages de script web... 40 Comparatif PHP/Perl... 40 Comparatif PHP/ASP... 41 Comparatif PHP/JSP... 41 Perspectives... 43 En bref... 44 Pourquoi ont-ils choisi PHP?... 45 Ils ont choisi PHP... 45 PHP à l assaut du Net... 46 Chapitre 2 Prise en main... 49 Installation... 51 Avec Apache... 51 AvecIIS... 74 Avec iplanet... 76
Le fichier de configuration php.ini... 81 Options PHP de base... 83 Sécurité... 83 Gestion des erreurs et récupération des messages d erreur... 85 Gestion des fichiers... 87 Gestion des données... 88 Les magic quotes... 89 Sessions... 89 Mails... 91 Génération du document... 92 Gestion de l affichage... 93 Extensions dynamiques... 93 Configuration des extensions... 94 Divers... 97 Les éditeurs et débogueurs PHP... 98 L artillerie lourde... 99 Les spécialistes... 102 Dreamweaver et GoLive... 111 Chapitre 3 Le langage PHP... 113 Intégrer le code PHP au HTML... 115 Les balises... 115 Mon premier script... 116 Les commentaires... 118 Les constantes... 119 Les variables... 120 Définition et syntaxe... 120 Les variables dynamiques... 121 Les types... 122 Les variables externes... 132 Les opérateurs... 142 Arithmétiques... 142 Binaires... 143 Chaînes de caractères... 144 Affectation... 144 Incrémentation et décrémentation... 145 Comparaison... 146
Logique... 147 Contrôles d erreur... 147 Exécution... 149 Priorités... 149 Les structures de contrôle... 150 If, else, elseif... 150 While, do... while... 154 For, foreach... 155 Switch... 158 Break, continue... 159 Les fonctions... 160 La syntaxe... 161 La portée des variables... 162 Le passage des paramètres... 165 Les paramètres par défaut... 165 Le passage de paramètres par référence... 168 Retourner une valeur... 169 Manipuler des fonctions... 170 La récursivité des fonctions... 175 Les tableaux... 176 Les valeurs d un tableau... 177 Initialisation d un tableau... 177 Les subtilités d initialisation d un tableau... 178 Remplissage d un tableau... 179 Les fonctions de manipulation des tableaux... 180 Les classes, les objets... 207 Définir une classe... 210 Les attributs... 211 Les constructeurs... 211 Les méthodes... 212 L héritage... 216 Les méthodes statiques... 218 Mémoriser des objets... 219 Les inclusions de fichiers... 227 Inclusions multiples... 230 Les noms des fichiers inclus... 231 Les fichiers insérés distants... 231 Le passage de paramètres... 232
Les chemins relatifs... 232 Cas d erreur et code retour... 234 Un cas d utilisation pratique mais potentiellement dangereux... 235 Chapitre 4 Les en-têtes HTTP... 239 Principe général... 241 Gestion personnalisée del en-tête HTTP... 246 Redirection... 247 Déclaration du type MIME... 248 Gestion des caches (des navigateurs)... 248 Cookies... 249 Généralités... 249 EnPHP... 251 Exemple utilisant des cookies... 254 Sessions... 258 Exemple utilisant des sessions... 261 Stockage personnalisé des variables de sessions... 265 Clore une session... 270 Les autres fonctions... 271 Les fonctions historiques... 274 Mise en cache avant émission des données... 274 Les fonctions de base... 274 Compression des données... 276 Optimisation des temps de réponse... 277 Gestion du cache interne... 279 Les autres fonctions... 280 Chapitre 5 Les techniques de programmation... 283 Règles de codage... 285 Présentation du code... 285 Programmation... 287 Noms de classes, fonctions, variables et constantes... 287 Commentaires... 289 Séparation du code et de la mise en page... 296 Utilisation des objets et de l instruction include... 296 Utilisation des modèles avec la bibliothèque PEAR... 298
Chapitre 6 Les fonctions mathématiques... 305 Les fonctions mathématiques et les constantes... 307 Constantes... 307 Fonctions... 308 Calculs de précision... 328 Installation... 328 Utilisation... 329 Chapitre 7 La manipulation des chaînes de caractères... 333 Généralités... 335 Afficher du texte... 337 Manipuler les caractères... 343 Fonctions de gestion des chaînes de caractères... 343 Extraction et substitution... 343 Fonctions statistiques (longueur et nombre d occurrences)... 350 Fonctions de position... 355 Comparaison de chaînes de caractères... 356 Comparaison par ordre alphabétique... 356 Comparaison orthographique... 361 Comparaison phonique... 363 Gestion des caractères spéciaux... 364 Ajout du caractère d échappement... 364 Suppression du caractère d échappement... 366 Conversion des caractères en code HTML... 367 Conversion d un alphabet à un autre... 374 Manipulation des balises HTML... 375 Suppression des espaces... 377 Modification de casse... 379 Insertion de motifs... 380 Fusion et découpe... 382 Autres...... 384 Somme de contrôle et cryptage... 386 Expressions régulières... 388 Perl... 388 Posix... 400 Adapter le texte à la langue du visiteur... 410
Chapitre 8 La gestion des dates et des calendriers... 413 Les fonctions de date et heure... 415 Récupérer une date au "format informatique"... 415 Effectuer des opérations sur les dates... 416 Afficher des dates... 417 Les heures GMT... 422 Les microsecondes... 422 Autres fonctions... 423 Les dates et calendriers particuliers... 424 Installation... 424 Pâques... 424 Conversion d une date d un calendrier à l autre... 426 Les gestionnaires d événements... 429 Chapitre 9 La gestion des fichiers et des répertoires... 465 Accéder au système de fichiers du serveur... 467 Le système de fichiers POSIX... 467 Lire et écrire le contenu d un fichier... 470 Lister le contenu d un dossier... 496 Manipulation de fichiers et répertoires... 502 Upload de fichiers... 509 Encore plus de fonctions d accès au système de fichiers du serveur... 514 Modification de l environnement... 514 Statistiques sur les fichiers... 518 Informations sur le disque... 539 Exemple d application... 541 Lecture sur un "pipe"... 551 Compression... 552 Compression Zlib... 553 Checksum... 569 Chapitre 10 L utilisation des bases de données... 571 Introduction aux bases de données... 573 Introduction au langage SQL... 573
Le typage... 574 Les contraintes... 574 Les relations entre tables... 574 Clés primaires et compteurs... 577 Index... 577 Le langage SQL... 577 Création/suppression d une base de données... 578 Les types... 578 Création/suppression d une table... 581 Ajouter des données... 583 Mettre à jour des données... 584 Supprimer des données... 585 Lire des données... 586 Récupérer des informations sur une base... 589 Accéder à une base de donnéesviaphp... 590 Introduction... 590 Couches d abstraction... 592 ODBC... 592 Access (MS)... 592 Installation... 592 Utilisation... 595 DB2 (IBM)... 595 Installation... 596 Utilisation... 599 MySQL... 599 Installation... 599 Utilisation... 605 Exemples d applications... 619 Création/suppression d une base... 652 En savoir plus...... 653 ODBC... 659 Installation... 659 Utilisation... 660 Exemples d applications... 673 En savoir plus...... 707 Oracle 8i... 714 Installation... 714
Utilisation... 727 Mise à profit des requêtes préparées... 741 Utilisation des objets de grande taille (BLOB, CLOB)... 743 Gestion des erreurs... 748 Exemples d application... 750 En savoir plus...... 784 SQL Server (MS)... 787 Installation... 787 Utilisation... 794 Exemples d applications... 809 En savoir plus...... 841 Les couches d abstraction... 843 Pear DB... 844 Chapitre 11 Les annuaires LDAP... 883 Le schéma LDAP... 887 Installation... 887 Installation du serveur OpenLDAP... 887 Installation du module LDAP pour PHP... 889 L interrogation de LDAP avec PHP... 890 Connexion, authentification et déconnexion sur le serveur LDAP... 890 Opérations sur un annuaire LDAP... 892 Recherche dans un annuaire LDAP... 900 Gestion des erreurs... 914 Opération sur le Distinguished Name (DN)... 915 Opération sur les options... 917 Exemple d application... 920 L authentification sur l annuaire... 920 L ajout d une nouvelle entrée... 925 Recherche dans l annuaire... 928 Modification d une entrée... 930 Réalisation d un arbre de navigation LDAP... 933 Chapitre 12 La messagerie : envoi et lecture de mails... 939 E-mail... 941 Installation... 941
Envoyer un e-mail simple... 942 Type MIME... 945 Envoyer un e-mail au format HTML... 945 Envoyer un e-mail avec fichiers attachés... 946 Envoyer un e-mail multi-part... 948 Envoyer un e-mail HTML avec des images... 952 Accéder à son compte messagerie IMAP, POP3 ou NNTP... 954 Installation... 955 Connexion et déconnexion à un serveur... 956 Sélection d une boîte à lettres... 959 Aperçu du contenu de la boîte à lettres... 963 Lecture des en-têtes... 966 Lecture des messages... 975 Recherche et tri des messages... 980 Modification des drapeaux et suppression des messages... 982 Ajout et déplacement de messages... 984 Inscription/désinscription à un serveur de nouvelles... 986 Identifiants... 986 Composition et décomposition d adresses e-mail... 987 Génération et envoi de mails... 988 Coder / décoder... 990 Gérer les erreurs... 992 Application d exemple : le webmail... 993 Administration des boîtes à lettres... 998 Chapitre 13 Les images et les animations Flash... 1001 Images (utilisation de la bibliothèquegd)... 1003 Installation... 1003 Définition de l image de base... 1006 Du texte dans les images... 1020 Dessiner des formes géométriques... 1032 Utiliser les couleurs... 1044 Copier des parties d image... 1045 Taille d une image... 1051 Un exemple : l histogramme... 1052 Récupérer des informations sur un fichier image... 1056 Récupérer des informations EXIF sur un fichier image... 1057
Les animations Flash... 1060 Installation... 1061 Utilisation... 1062 Chapitre 14 La création de documents PDF... 1115 Installation... 1117 Créer la base d un document PDF... 1118 Préciser les attributs (mots-clés) du document... 1122 Préciser les paramètres de la page... 1122 Afficher du texte... 1124 Dessiner des formes géométriques... 1129 Modifier les paramètres du tracé... 1134 Inclure une image... 1140 Ajouter des liens et des annotations... 1143 Ajouter des fichiers attachés et aperçus (thumbnails)... 1147 Modifier le système de coordonnées... 1148 Lire, sauvegarder et restaurer les paramètres courants... 1150 Créer un modèle... 1155 Chapitre 15 L utilisation de XML... 1163 Introduction... 1165 Présentation du langage XML... 1165 Le format XML... 1165 Exemple de document XML... 1167 Utilisation des documents XML... 1169 Les parseurs... 1169 Le parseur expat... 1169 XSLT... 1192 Présentation... 1192 Les transformations de documents XML... 1193 Génération de messages XML... 1200 Les messages WDDX... 1200
Chapitre 16 La gestion des protocoles HTTP, FTP, SOAP, etc.... 1209 Fonctions réseau (de base)... 1211 Réseau... 1211 Adresses IP et DNS... 1211 Protocoles et services... 1215 Les sockets... 1216 FTP... 1221 Installation... 1221 Les fonctions de base... 1221 Exemple d application... 1226 Autres fonctions... 1231 curl (client URL Library)... 1233 Installation... 1233 Utilisation... 1234 Exemples d applications... 1240 SOAP... 1243 Installation... 1247 Utiliser les classes PEAR... 1248 Interroger Google via PHP... 1249 Chapitre 17 Les processus et les identifiants... 1255 Exécution d un programme... 1257 POSIX... 1259 Chapitre 18 L interconnectivité avec COM... 1271 Installation... 1273 Utilisation... 1273 Chapitre 19 L optimisation des temps de réponse... 1283 Introduction... 1285 Environnement de test des solutions "bas niveau" (modules PHP)... 1286 Configuration matérielle... 1286
Pages testées... 1286 Instrument de mesure... 1289 Présentation des mesures... 1289 En l absence de solution d optimisation... 1290 Mesures... 1290 Avec Zend Optimizer... 1292 Description... 1293 Installation... 1293 Mesures... 1297 Conclusion... 1300 Avec Alternative PHP Cache (APC)... 1300 Description... 1300 Installation... 1300 Mesures... 1302 Conclusion... 1304 Avec PHP Accelerator (PHPA)... 1305 Description... 1305 Installation... 1305 Mesures... 1306 Conclusion... 1308 Avec Zend Accelerator... 1309 Description... 1309 Installation... 1309 Mesures... 1314 Conclusion... 1316 Conclusion sur les solutions "bas niveau" (modules PHP)... 1317 Les solutions "haut niveau" (programmation PHP)... 1318 Conclusion... 1319 Chapitre 20 L obfuscation : Distribuer ses scripts sans dévoiler son code... 1321 Introduction... 1323 Avec Zend Encoder... 1323 Installation... 1324 Utilisation... 1328 Conclusion... 1330 Avec ioncube PHP Encoder... 1330
Avec PHP guardian... 1331 Avec POBS... 1331 Installation... 1331 Utilisation... 1332 Conclusion... 1334 Autres... 1334 Chapitre 21 Annexe A : des exemples d applications... 1335 Administration de bases de données... 1337 phpmyadmin... 1337 Autres... 1342 Création de sites... 1342 PHPNuke... 1342 SPIP... 1345 Autres... 1347 Forums de discussion... 1347 PHPbb... 1347 Phorum : un moteur de forums... 1349 Autres... 1351 Annuaires de liens... 1352 Netref... 1352 Autres... 1353 Solutions de travail collaboratif... 1353 Moregroupware... 1353 Autres... 1355 Graphiques... 1356 JPGraph... 1356 Chapitre 22 Annexe B : les en-têtes HTTP et les variables externes... 1359 Chapitre 23 Annexe C : les erreurs HTTP... 1365 Chapitre 24 Index... 1369