Vous êtes sur la page 1sur 12

LivrePHP&MSQL.book Page I Mardi, 25.

novembre 2008 1:02 13

PHP
& MySQL
4e édition

Luke Welling & Laura Thomson


LivrePHP&MSQL.book Page 1 Mardi, 25. novembre 2008 1:02 13

Introduction

Vous vous intéressez au développement web avec PHP et MySQL ? Ce livre est fait
pour vous ! Vous y trouverez nos expériences les plus utiles sur PHP et MySQL, deux
des plus passionnants outils de développement web du moment.

Les points forts de ce livre


Ce livre vous expliquera comment créer des sites web interactifs, de leur expression la
plus simple à des sites interactifs du Web 2.0 en passant par les sites de commerce élec-
tronique sécurisés et complexes. Vous apprendrez également à vous servir des technologies
open-source.
Ce livre est destiné aux lecteurs qui connaissent déjà au minimum les bases du
langage HTML et ont l’habitude de programmer dans un langage de programmation
moderne, mais qui ne connaissent pas nécessairement la programmation sur Internet
ou les bases de données relationnelles. Si vous êtes un programmeur débutant, ce
livre devrait également vous intéresser, mais il vous faudra peut-être un peu plus de
temps pour l’assimiler. Nous avons essayé de n’oublier aucun concept fondamental,
toutefois, certains d’entre eux seront présentés assez rapidement. Ce livre est donc
principalement destiné aux lecteurs qui souhaitent maîtriser PHP et MySQL pour
implémenter un site web commercial ou de qualité professionnelle. Si vous utilisez
déjà un langage de développement pour le Web, cet ouvrage devrait vous mettre rapi-
dement sur la bonne voie.
Nous avons écrit la première édition de ce livre lorsque nous nous sommes rendu
compte que tous les ouvrages existants consacrés à PHP se limitaient à une simple
énumération de ses fonctions. Ces livres sont naturellement très utiles, mais ils ne sont
d’aucune aide lorsque votre patron ou un client vous demande : "Implémentez-moi un
panier virtuel pour mon site de commerce électronique." Nous avons fait de notre
mieux pour que tous nos exemples soient aussi utiles que possible. La plupart des
programmes peuvent être utilisés directement sur votre site web ; les autres ne nécessi-
teront que quelques modifications mineures.
LivrePHP&MSQL.book Page 2 Mardi, 25. novembre 2008 1:02 13

2 PHP & MySQL

Ce que vous apprendrez en lisant ce livre


Si vous avez déjà implémenté des sites web en HTML pur, vous avez déjà compris les
limites de cette approche : ils sont tout simplement trop statiques. Ils restent identiques
jusqu’à ce que vous les mettiez à jour vous-même. En outre, les utilisateurs ne peuvent
pas interagir avec ce type de site, en tout cas de manière intéressante.
L’utilisation d’un langage comme PHP et d’une base de données comme MySQL
permet de rendre vos sites dynamiques : ils pourront alors être personnalisés et mis à
jour en temps réel.
Dès les premiers chapitres, nous nous sommes délibérément concentrés sur des applications
réelles et pratiques. Nous commencerons par étudier un système simple de commande en
ligne, et nous continuerons avec les différentes parties de PHP et de MySQL.
Nous aborderons ensuite différents aspects du commerce électronique et de la sécurité,
puisqu’il s’agit de deux composants importants des sites web, et nous montrerons
comment les implémenter avec PHP et MySQL.
Dans la dernière section de ce livre, nous verrons comment attaquer le développement
de projets réels et passerons en revue la conception, la planification et l’implémentation
des projets suivants :
m authentification des utilisateurs et personnalisation d’un site ;
m paniers virtuels ;
m systèmes de messagerie web ;
m gestionnaires de listes de diffusion ;
m forums web ;
m production de documents PDF ;
m services web avec XML et SOAP ;
m applications web 2.0 avec Ajax.
Tous ces projets sont utilisables tels quels ou peuvent être modifiés en fonction de vos
besoins. Nous les avons choisis parce que nous pensons qu’ils sont représentatifs des
applications web auxquelles les programmeurs sont le plus souvent confrontés. Si vos
besoins sont différents, ce livre devrait toutefois vous aider à atteindre vos objectifs.

Présentation de PHP
PHP est un langage de script côté serveur qui a été conçu spécifiquement pour le Web.
Le code PHP est inclus dans une page HTML et sera exécuté à chaque fois qu’un visiteur
LivrePHP&MSQL.book Page 3 Mardi, 25. novembre 2008 1:02 13

Introduction 3

affichera la page. Le code PHP est interprété au niveau du serveur web et génère du
code HTML ou toute autre donnée affichable dans le navigateur de l’utilisateur.
PHP a été conçu en 1994 par Rasmus Lerdorf. Il a ensuite été adopté par d’autres
personnes talentueuses et réécrit quatre fois avant de devenir le produit abouti que nous
connaissons aujourd’hui. En novembre 2007, il était installé sur plus de 21 millions de
domaines et sa croissance est rapide. Vous trouverez des statistiques plus récentes sur le
site http://www.php.net/usage.php.
PHP est un projet open-source, ce qui signifie que vous pouvez vous procurer son code,
l’utiliser, le modifier et le redistribuer gratuitement.
PHP signifiait à l’origine Personal Home Page, mais ce nom a été changé en un acro-
nyme récursif comme GNU (Gnu’s Not Unix) : il signifie maintenant PHP Hypertext
Preprocessor.
La dernière version principale de PHP est la version 5. Elle bénéficie d’une réécriture
complète du moteur Zend et de quelques améliorations importantes au niveau du
langage.
La page d’accueil de PHP est accessible à l’adresse http://www.php.net.
La page de Zend Technologies, l’entreprise des fondateurs de PHP, se trouve à l’adresse
http://www.zend.com.

Présentation de MySQL
MySQL est un système de gestion de bases de données relationnelles (SGBDR) robuste
et rapide. Une base de données permet de manipuler les informations de manière effi-
cace, de les enregistrer, de les trier, de les lire et d’y effectuer des recherches. Le serveur
MySQL contrôle l’accès aux données pour s’assurer que plusieurs utilisateurs peuvent
se servir simultanément d’une même base de données pour y accéder rapidement et
pour garantir que seuls les utilisateurs autorisés peuvent accéder aux données. MySQL
est donc un serveur multi-utilisateur et multithread. Il utilise SQL (Structured Query
Language), le langage standard des requêtes de bases de données. MySQL est disponi-
ble depuis 1996, mais son développement remonte à 1979. Il s’agit de la base de
données open-source la plus employée au monde et elle a reçu le Linux Journal
Readers’ Choice Award à plusieurs reprises.
MySQL est désormais disponible sous une double licence. Vous pouvez l’utiliser
gratuitement sous licence open-source (GPL) à condition de respecter les termes de
cette licence. Si vous souhaitez distribuer une application non GPL incluant MySQL,
vous pouvez aussi acheter une licence commerciale.
LivrePHP&MSQL.book Page 4 Mardi, 25. novembre 2008 1:02 13

4 PHP & MySQL

Pourquoi utiliser PHP et MySQL ?


Lors de l’implémentation d’un site web, vous avez le choix entre de nombreux produits.

Vous devez notamment choisir :

m la plate-forme matérielle du serveur web ;

m un système d’exploitation ;

m un logiciel de serveur web ;

m un système de gestion de base de données ;

m un langage de programmation ou de script.

Certains de ces choix dépendent directement des autres. Tous les systèmes d’exploitation
ne fonctionnent pas sur toutes les plates-formes ; par exemple, tous les serveurs web ne
reconnaissent pas tous les langages de programmation, etc.

Dans ce livre, nous ne nous intéresserons pas particulièrement au matériel, à votre


système d’exploitation ou à votre logiciel de serveur web. Nous n’en avons pas besoin
car l’une des caractéristiques intéressantes de PHP et de MySQL tient à ce qu’ils fonc-
tionnent avec tous les systèmes d’exploitation les plus connus et avec la plupart des
autres.

Un script PHP peut, dans la plupart des cas, être écrit de façon à être portable entre les
systèmes d’exploitation et les serveurs web. Certaines fonctions sont directement liées
aux spécificités d’un système de fichiers particulier, mais elles sont clairement identifiées
comme telles dans le manuel de référence et dans ce livre.

Quels que soient votre plate-forme, votre système d’exploitation ou votre serveur web,
nous pensons que PHP et MySQL sont des options très intéressantes.

Quelques avantages de PHP


Les principaux concurrents de PHP sont Perl, ASP.NET de Microsoft, Ruby (avec ou
sans Rails), Java Server Pages (JSP) et ColdFusion.
Par rapport à tous ces produits, PHP possède plusieurs avantages significatifs :
m les performances ;
m l’adaptabilité ;
m des interfaces vers différents systèmes de bases de données ;
LivrePHP&MSQL.book Page 5 Mardi, 25. novembre 2008 1:02 13

Introduction 5

m des bibliothèques intégrées pour la plupart des tâches web ;


m un faible coût ;
m la simplicité d’utilisation et d’apprentissage ;
m un bon support orienté objet ;
m la portabilité ;
m la souplesse dans le processus de développement ;
m la disponibilité de son code source ;
m la disponibilité du support et de la documentation.

Performances
PHP est très rapide. Avec un seul serveur d’entrée de gamme, vous pouvez servir des
millions de requêtes par jour. Les tests de performances publiés par Zend Technologies
(http://www.zend.com) montrent que PHP dépasse tous ses concurrents.

Adaptabilité
PHP utilise ce que Rasmus Lerdorf désigne souvent comme une architecture "sans
partage". Cela signifie que vous pouvez implémenter de façon efficace et à peu de frais
une ferme de serveurs en ajoutant des machines en fonction de vos besoins.

Intégration avec les bases de données


PHP dispose de connexions natives vers la plupart des systèmes de bases de données.
Outre MySQL, vous pouvez vous connecter directement aux bases de données
PostgreSQL, Oracle, dbm, FilePro, DB2, Informix, InterBase et Sybase, pour ne citer
qu’elles. PHP 5 possède également une interface SQL intégrée, SQLite, pour gérer les
fichiers plats.
En fait, grâce au standard ODBC (Open Database Connectivity), vous pouvez vous
connecter à n’importe quelle base de données possédant un pilote ODBC, ce qui est le
cas des produits Microsoft, notamment.
Outre ces bibliothèques natives, PHP dispose d’une couche d’abstraction pour l’accès
aux bases de données : PDO (PHP Database Objects) autorise ainsi une certaine cohé-
rence et facilite la prise en compte de la sécurité lors de l’accès aux bases.

Bibliothèques intégrées
PHP ayant été conçu pour être utilisé sur le Web, il possède de nombreuses fonc-
tions intégrées permettant d’effectuer la plupart des tâches de programmation web.
LivrePHP&MSQL.book Page 6 Mardi, 25. novembre 2008 1:02 13

6 PHP & MySQL

Vous pouvez ainsi générer des images en temps réel, vous connecter à des services
web et à d’autres services réseaux, analyser des documents XML, envoyer du courrier
électronique, manipuler les cookies et produire des documents PDF avec seulement
quelques lignes de code.

Coût
PHP est gratuit. Vous pouvez vous procurer la dernière version du langage sur le site
http://www.php.net, sans payer quoi que ce soit.

Facilité d’apprentissage de PHP


La syntaxe de PHP repose sur celle d’autres langages de programmation, essentiel-
lement C et Perl. Si vous savez déjà programmer en C, en Perl ou en un autre
langage analogue, comme C++ ou Java, l’apprentissage de PHP sera quasiment
immédiat.

Support orienté objet


PHP 5 possède des fonctionnalités orientées objet bien conçues. Si vous avez appris à
programmer en Java ou en C++, vous disposerez en PHP des fonctionnalités (et, géné-
ralement, de la syntaxe) dont vous avez l’habitude : l’héritage, les attributs et les métho-
des privés et protégés, les classes et les méthodes abstraites, les interfaces, les
constructeurs et les destructeurs, notamment. Vous découvrirez également des mécanis-
mes moins courants, comme les itérateurs. Certaines de ces fonctionnalités étaient
disponibles dans PHP 3 et 4, mais le support orienté objet de la version 5 est bien plus
complet.

Portabilité
PHP est disponible sur de nombreux systèmes d’exploitation. Vous pouvez écrire votre
code PHP pour des systèmes d’exploitation Unix libres et gratuits, comme Linux ou
FreeBSD, pour des versions commerciales d’Unix comme Solaris, IRIX, OS-X ou pour
les différentes versions de Windows.
Un code PHP bien écrit pourra donc généralement être utilisé sans modification sur un
autre système.

Souplesse dans le processus de développement


PHP permet d’implémenter simplement les traitements simples, mais vous pouvez tout
aussi facilement implémenter de grosses applications à l’aide d’un framework reposant
sur les patrons de conception, comme Modèle-Vue-Contrôleur (MVC).
LivrePHP&MSQL.book Page 7 Mardi, 25. novembre 2008 1:02 13

Introduction 7

Code source
Le code source de PHP est disponible gratuitement. Contrairement aux produits
commerciaux, dont les sources ne sont pas distribués, vous avez donc la possibilité de
modifier le langage ou d’y ajouter de nouvelles caractéristiques.
Vous n’avez par conséquent plus besoin d’attendre que les concepteurs distribuent des
correctifs logiciels et n’avez plus à craindre la disparition de la société ou l’arrêt du
support du produit que vous utilisez.

Disponibilité du support et de la documentation


Zend Technologies (www.zend.com), l’entreprise qui est à l’origine du moteur de PHP,
finance son développement en offrant des services de support et des logiciels liés sous
forme commerciale.
La documentation et la communauté PHP fournissent un grand nombre de ressources et
d’informations complètes sur le langage.

Nouveautés de PHP 5
Il se peut que vous soyez récemment passé de l’une des versions PHP 4.x à PHP 5.
Comme on est en droit de l’attendre dans une nouvelle version majeure, d’importantes
modifications ont vu le jour et le moteur Zend de PHP a été réécrit pour cette version.
Voici les principales nouvelles fonctionnalités :
m un meilleur support orienté objet construit autour d’un modèle objet entièrement
nouveau (voir Chapitre 6) ;
m la gestion des exceptions pour un traitement évolutif des erreurs, facilitant la main-
tenance (voir Chapitre 7) ;
m SimpleXML pour une gestion simplifiée des données XML (voir Chapitre 31).
Parmi les autres modifications, notons encore le déplacement de certaines extensions de
l’installation PHP par défaut dans la bibliothèque PECL, l’amélioration de la gestion
des flux et l’ajout de SQLite.
Au moment où nous écrivons ce livre, la version courante de PHP est la 5.2 et la
version 5.3 se profile à l’horizon. PHP 5.2 ajoute un certain nombre de fonctionnalités
intéressantes :
m une nouvelle extension pour filtrer les entrées, afin d’améliorer la sécurité ;
m l’extension JSON pour améliorer l’interopérabilité avec JavaScript ;
m le suivi de la progression des dépôts de fichiers ;
LivrePHP&MSQL.book Page 8 Mardi, 25. novembre 2008 1:02 13

8 PHP & MySQL

m une meilleure gestion des dates et des heures ;


m de nombreuses bibliothèques clientes améliorées et des performances encore
accrues (le moteur Zend utilise une meilleure gestion de la mémoire) ;
m de nombreux bogues corrigés.

Quelques avantages de MySQL


Les principaux concurrents de MySQL sont PostgreSQL, Microsoft SQL Server et Oracle.
MySQL possède sur eux plusieurs avantages :
m des performances élevées ;
m un coût réduit ;
m une simplicité de configuration et d’apprentissage ;
m sa portabilité ;
m l’accessibilité de son code source ;
m la disponibilité du support.

Performances
MySQL est indéniablement un système rapide. Vous pouvez consulter les statistiques
de ses performances sur le site http://web.mysql.com/why-mysql/benchmark.html.
La plupart des tests montrent que MySQL est bien plus rapide que ses concurrents, de
plusieurs ordres de grandeur. En 2002, eWeek a publié un banc d’essais qui comparait
cinq bases de données alimentant une application web. Le meilleur résultat a placé ex
æquo MySQL et Oracle, qui est pourtant un produit bien plus cher.

Coût réduit
MySQL est disponible gratuitement sous une licence open-source ou, pour un prix très
raisonnable, sous licence commerciale. Vous devez vous procurer une licence si vous
souhaitez redistribuer MySQL dans une application et que vous ne souhaitiez pas que
l’application se trouve sous licence open-source. Si vous ne comptez pas distribuer
votre application (ce qui est généralement le cas de la plupart des applications web) ou
si vous travaillez sur un logiciel open-source, il n’est pas nécessaire d’acheter une
licence.

Simplicité d’emploi
La plupart des bases de données modernes utilisent SQL. Si vous connaissez déjà
d’autres SGBDR, vous ne devriez pas avoir de problème pour vous adapter. En outre,
LivrePHP&MSQL.book Page 9 Mardi, 25. novembre 2008 1:02 13

Introduction 9

MySQL est plus simple à installer que la plupart des produits similaires. La courbe
d’apprentissage nécessaire à l’acquisition des compétences d’un administrateur de base
de données (DBA, ou DataBase Administrator) est bien plus courte que celle des autres
bases de données.

Portabilité
MySQL peut être utilisé sur un grand nombre de systèmes Unix, ainsi qu’avec
Windows.

Code source
Comme pour PHP, vous pouvez vous procurer le code source de MySQL. Pour la
plupart des utilisateurs, ce point n’est pas important, mais il doit vous tranquilliser
l’esprit en vous assurant une continuité future et en vous offrant des possibilités en cas
d’urgence.

Disponibilité du support
Tous les produits open-source n’ont pas une entreprise parente qui propose des services
de support, de formations, de consultation et de certification : vous pouvez obtenir tout
cela de la part de MySQL AB (www.mysql.com).

Nouveautés de MySQL 5
Parmi les modifications majeures introduites par MySQL 5, nous citerons les suivantes :
m les vues ;
m les procédures stockées (voir Chapitre 13) ;
m un support minimal des triggers ;
m le support des curseurs.
On peut également noter une meilleure compatibilité avec le standard ANSI et des
améliorations en matière de vitesse.
Si vous utilisez toujours une ancienne version 4.x ou 3.x du serveur MySQL, vous
devez savoir que les fonctionnalités suivantes ont été ajoutées aux différentes versions
depuis la version 4.0 :
m support des sous-requêtes ;
m types GIS pour stocker les données géographiques ;
m support amélioré pour l’internationalisation ;
LivrePHP&MSQL.book Page 10 Mardi, 25. novembre 2008 1:02 13

10 PHP & MySQL

m moteur de stockage transactionnel InnoDB inclus en standard ;


m cache de requêtes MySQL pour améliorer fortement la vitesse des requêtes répétitives
souvent produites par les applications web.
Ce livre utilise MySQL 5.1 (Beta Community Edition), qui ajoute les fonctionnalités
suivantes :
m partitionnement ;
m réplication par lignes ;
m programmation des événements ;
m tables de log ;
m améliorations de MySQL Cluster, du schéma d’informations, des processus de
sauvegarde ;
m nombreuses corrections de bogues.

Organisation de ce livre
Ce livre est découpé en cinq parties.
La première partie présente les différents éléments du langage PHP, ainsi que quelques
exemples. Tous ces exemples sont pratiques, issus de notre expérience dans l’implé-
mentation d’un site de commerce électronique, et non théoriques. La présentation de
PHP débute avec le Chapitre 1 : si vous connaissez déjà le langage, vous pouvez passer
directement au chapitre suivant. Si vous débutez en PHP ou en programmation, en
revanche, il peut être intéressant de vous y arrêter un peu plus longuement. Si vous
connaissez déjà PHP 4, consultez quand même le Chapitre 6 car les fonctionnalités
orientées objet ont sensiblement changé.
La deuxième partie aborde les concepts nécessaires à l’utilisation des systèmes de bases
de données relationnelles, comme MySQL, l’utilisation de SQL, l’interconnexion de
votre base de données MySQL avec le monde extérieur, en passant par PHP et certains
concepts avancés de MySQL, comme la sécurité et les optimisations.
La troisième partie est consacrée aux problèmes généraux qui peuvent survenir lors du
développement d’un site web dans n’importe quel langage. Les problèmes les plus
importants concernent la sécurité. Nous verrons ensuite comment vous pouvez tirer
profit de PHP et de MySQL pour authentifier vos utilisateurs et collecter, transmettre et
enregistrer vos données en toute sécurité.
La quatrième partie s’intéresse plus précisément aux principales fonctions intégrées dans
PHP. Nous avons sélectionné des groupes de fonctions qui vous intéresseront sûrement
LivrePHP&MSQL.book Page 11 Mardi, 25. novembre 2008 1:02 13

Introduction 11

lorsque vous implémenterez un site web. Vous y apprendrez notamment ce qu’est l’inte-
raction avec le serveur, l’interaction avec le réseau, la génération d’images, les manipu-
lations de date et d’heure et les variables de sessions.
La cinquième et dernière partie est notre préférée : nous y étudierons quelques problè-
mes réels, comme la gestion et le suivi de projets importants, ainsi que le débogage des
applications. Nous présenterons également quelques projets mettant en évidence la
puissance et la flexibilité de PHP et de MySQL.

Encore un mot
Nous espérons que ce livre vous satisfera et que vous serez aussi passionné par
l’apprentissage de PHP et de MySQL que nous l’avons été lorsque nous avons
commencé à nous servir de ces logiciels. Leur utilisation est un plaisir à part entière.
Vous serez bientôt à même de rejoindre les milliers de développeurs web qui se servent
de ces outils puissants et robustes pour construire des sites web dynamiques.

Vous aimerez peut-être aussi