php 5 - le guide complet - documentstranslate this pagedocuments.mx › documentscopyright © 2008...

Download PHP 5 - Le Guide Complet - DocumentsTranslate this pagedocuments.mx › DocumentsCopyright © 2008 Micro Application 20-22, rue des Petits-Hôtels 75010 Paris 1ère Édition - Mai

If you can't read please download the document

Upload: lycong

Post on 30-Jan-2018

236 views

Category:

Documents


2 download

TRANSCRIPT

PHP 5 - Le Guide Complet - [PDF Document]

Sign in Register

Hide

PHP 5 - Le Guide Complet

Category: Documents

DownloadReport copyright

Share:

Copy

Description

Copyright 2008 Micro Application 20-22, rue des Petits-Htels 75010 Paris 1re dition - Mai 2008 Auteurs Franois-Xavier BOIS Toute reprsentation ou reproduction,

Related documents

Linux Le Guide Complet

Joomla- Le Guide Complet

Dpannage PC - Le guide complet

PC Portable Le Guide Complet

Dpannage PC - Le guide complet

Dpannage PC - Le guide complet

52837669 Depannage PC Le Guide Complet

Facebook : le guide complet des nouveaux insights

PC Portable - Le Guide Complet - Micro Application

Le Guide Complet Open Office Org 3

Guide Complet

Apex - Le Magazine Exclusif de Gran Turismo 5 - Complet

Php Architectss Zend Php 5 Certification Study Guide

Le Massage Le guide complet, tape par tape, des techniques occidentales et orientales

Guide complet crateur_entreprise

ITIL V3 - Guide complet

Guide complet linux

HTML Guide Complet

Guide Complet MT4

Guide Complet MT4

View more

About us|Terms

out of

PHP 5 - Le Guide Complet

Convert error! Download to viewCopyright 2008 Micro Application20-22, rue des Petits-Htels75010 Paris

1re dition - Mai 2008

Auteurs Franois-Xavier BOIS

Toute reprsentation ou reproduction, intgrale ou partielle, faite sans leconsentement de MICRO APPLICATION est illicite (article L122-4 du codede la proprit intellectuelle).Cette reprsentation ou reproduction illicite, par quelque procd que cesoit, constituerait une contrefaon sanctionne par les articles L335-2 etsuivants du code de la proprit intellectuelle.Le code de la proprit intellectuelle nautorise aux termes de larticle L122-5que les reproductions strictement destines lusage priv et non destines lutilisation collective dune part, et dautre part, que les analyses et courtescitations dans un but dexemple et dillustration.

Avertissement Les informations contenues dans cet ouvrage sont donnes titre indicatifaux utilisateurs et nont aucun caractre exhaustif voire certain. A titre dexemple non

limitatif, cet ouvrage peut vous proposer une ou plusieurs adresses de sitesWeb qui ne seront plus dactualit ou dont le contenu aura chang aumoment o vous en prendrez connaissance.Aussi, ces informations ne sauraient engager la responsabilit de lEditeur.La socit MICRO APPLICATION ne pourra tre tenue responsable de touteomission, erreur ou lacune qui aurait pu se glisser dans ce produit ainsi quedes consquences, quelles quelles soient, qui rsulteraient des informa-tions et indications fournies ainsi que de leur utilisation.Tous les produits cits dans cet ouvrage sont protgs, et les marquesdposes par leurs titulaires de droits respectifs. Cet ouvrage nest ni dit,ni produit par le(s) propritaire(s) de(s) programme(s) sur le(s)quel(s) il porte etles marques ne sont utilises qu seule fin de dsignation des produits entant que noms de ces derniers.

ISBN : 978-2-300-014147

MICRO APPLICATION Support technique :20-22, rue des Petits-Htels galement disponible sur75010 PARIS www.microapp.comTl. : 01 53 34 20 20Fax : 01 53 34 20 00http://www.microapp.com

Retrouvez des informations sur cet ouvrage !

Rendez-vous sur le site Internet de Micro Applicationwww.microapp.com. Dans le module de recherche,sur la page daccueil du site, entrez la rfrence 4 chiffres indique sur le prsent livre.Vous accdez directement sa fiche produit.

1414

Avant-proposDestine aussi bien aux dbutants quaux utilisateurs initis, lacollection Guide Complet repose sur une mthode essentiellementpratique. Les explications, donnes dans un langage clair et prcis,sappuient sur de courts exemples. En fin de chaque chapitre, dcouvrez,en fonction du sujet, des exercices, une check-list ou une srie de FAQpour rpondre vos questions.Vous trouverez dans cette collection les principaux thmes de luniversinformatique : matriel, bureautique, programmation, nouvellestechnologies...

Conventions typographiquesAfin de faciliter la comprhension des techniques dcrites, nous avonsadopt les conventions typographiques suivantes :

j gras : menu, commande, bote de dialogue, bouton, onglet.j italique : zone de texte, liste droulante, case cocher, bouton

radio.j Police bton : Instruction, listing, adresse internet, texte

saisir.j : indique un retour la ligne volontaire d aux contraintes de

la mise en page.

Il sagit dinformations supplmentaires relatives au sujet trait.

Met laccent sur un point important, souvent dordre technique quilne faut ngliger aucun prix.

Propose conseils et trucs pratiques.

Donne en quelques lignes la dfinition dun terme technique ou duneabrviation.

Chapitre 1 Introduction 13

1.1. Les langages de programmation .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.2. Le PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.3. Internet, comment a marche ? .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311.4. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Chapitre 2 Lenvironnement de travail 47

2.1. WampServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Installation .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Premiers pas .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Le menu deWamp .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Lditeur Notepad++ .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

2.2. Paramtrage de PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602.3. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Chapitre 3 Les fondamentaux 65

3.1. Structure dun programme .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.2. Les commentaires .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723.3. Les variables .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743.4. Les constantes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783.5. Les types de donnes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Les donnes numriques .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Les chanes de caractres .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Le type NULL .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Changement de type .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

3.6. Les structures de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Les conditions .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

3.7. Organisation du code .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Les fonctions .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Inclusion de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

3.8. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

Chapitre 4 Les tableaux 115

4.1. Prsentation .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Les tableaux scalaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Les tableaux associatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Les tableaux multidimensionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

4.2. Parcours dun tableau .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Boucle foreach .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Utilisation du pointeur interne .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Utilisation des rfrences .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

4.3. Les fonctions .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125Suppression dune cellule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

Sommaire

4 LE GUIDE COMPLET

Affichage dun tableau .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126Taille dun tableau .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Conversion chanes / tableaux .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128Adjonction, soustraction dlments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131Prsence dune valeur dans un tableau .. . . . . . . . . . . . . . . . . . . . . . . . . . 134Srialisation .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

4.4. Les oprateurs sur les tableaux .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364.5. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

Chapitre 5 Dates et heures 139

5.1. La notion de timestamp .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140Cration dun timestamp .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141Conversion .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Comparaison de dates .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

5.2. Formatage dune date .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146Echappement de caractres .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Constantes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

5.3. Contrle de validit dune date .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1525.4. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

Chapitre 6 Les formulaires et transmissions de donnes 155

6.1. Quest-ce quun formulaire ? .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1566.2. Les diffrents widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

INPUT TEXT .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159TEXTAREA .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161SELECT .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162INPUT CHECKBOX .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164INPUT RADIO .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164INPUT BUTTON ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165INPUT HIDDEN .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

6.3. Passer des paramtres un script PHP .. . . . . . . . . . . . . . . . . . . . . . . . 166La variable $_GET .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Query String .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174La mthode POST .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Le mode register_globals on .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

6.4. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Chapitre 7 En tte HTTP et authentification 183

7.1. Requtes et rponses .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Extension LiveHTTPHeaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184La requte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186La rponse .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

7.2. Fonction header() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1887.3. Page derreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

Sommaire

5LE GUIDE COMPLET

7.4. Authentification .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1927.5. En bref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

Chapitre 8 JavaScript, contrle de formulaires et AJAX 197

8.1. Prsentation de JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Les fonctions .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Linteraction avec les widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205La bibliothque Prototype .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

8.2. Des vrifications simples en PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2168.3. Les expressions rgulires .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2228.4. Ajax .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

AJAX et Prototype .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226change de donnes au format JSON ... . . . . . . . . . . . . . . . . . . . . . . . . . 229

8.5. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

Chapitre 9 Lenvoi dun formulaire par courriel 235

9.1. Configuration requise .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369.2. Mail Texte .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2379.3. Mail HTML .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2429.4. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

Chapitre 10 Lenregistrement dans une base de donnes 249

10.1. Les bases de donnes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Quest ce quun SGBD ? .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Organisation dun SGBD .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Les requtes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

10.2. PHP et MySQL .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Premires requtes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Enregistrement dune fiche .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

10.3. Envoi de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277Modification de la structure dune table . . . . . . . . . . . . . . . . . . . . . . . . . . 277Envoi de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

10.4. Le couteau suisse du dveloppeur web : phpMyAdmin .. . . . . 28310.5. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Chapitre 11 La gestion dune base de donnes 291

11.1. Lauthentification .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29211.2. La mise jour dune table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

Linstruction input hidden .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300La commande UPDATE .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

11.3. La suppression : DELETE .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30811.4. La factorisation du code .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

La fonction include .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

6 LE GUIDE COMPLET

Sommaire

Lamlioration visuelle : les CSS .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32511.5. Recherche et tri au sein dune base .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

Dfinir la fonction de recherche .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331Dfinir la fonction de tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

11.6. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

Chapitre 12 La gestion des fichiers 339

12.1. Manipuler des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340Les fichiers de cache .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340Lcriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342La lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Les fichiers modles : templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

12.2. Crer des fichiers spciaux .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Les fichiers compresss .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Les fichiers Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356Les fichiers Flash .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358Les fichiers PDF .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363Les fichiers image .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

12.3. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

Chapitre 13 La programmation objet 383

13.1. Classes et objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385Classes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387Conversion .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390Constructeur et destructeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

13.2. Les mthodes magiques .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393__sleep() et __wakeup() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393__toString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394Surcharge des accesseurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

13.3. Polymorphisme .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398Principe gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398Visibilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

13.4. Les interfaces .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40113.5. Itrateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40313.6. Exceptions .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

Principe gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405La classe Exception .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

13.7. Rflexion .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40913.8. Version objet de la gnration de graphique .. . . . . . . . . . . . . . . . . . 41013.9. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

Chapitre 14 XML 417

14.1. Le format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

Sommaire

7LE GUIDE COMPLET

14.2. SimpleXML .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421Cration .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422Lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

14.3. Formats spciaux .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426RSS .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427XHTML .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434SVG .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

14.4. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

Chapitre 15 Les cookies et les sessions 439

15.1. Les cookies .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440Aspects techniques .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441Application : la mini-boutique FoxShop .. . . . . . . . . . . . . . . . . . . . . . . . . 444

15.2. Les sessions .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47215.3. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

Chapitre 16 La gestion de la scurit 483

16.1. La scurit avec PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485Le b-a ba .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485Mise jour de PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486Initialiser toutes les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486Utiliser les constantes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487Se mfier de la puissance de certaines fonctions .. . . . . . . . . . . . . . 488Dangers de la fonction mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489Les cookies et les sessions .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490Les transferts de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491Inclusion de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492

16.2. Scuriser les bases de donnes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493Les injections SQL .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493Les Cross Site Scripting .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

16.3. Scuriser le serveur web .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496Les directives PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497Les directives Apache .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500La scurit HTTPS .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503

16.4. Les outils danalyse .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50316.5. Check-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504

Chapitre 17 Les trucs et astuces 505

17.1. PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506Dfinir autrement une chane de caractres .. . . . . . . . . . . . . . . . . . . . . 506Raccourcir un if... else... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507Lautre syntaxe des structures de contrle . . . . . . . . . . . . . . . . . . . . . . . 508Raccourcir un simple bloc echo .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509Donner une valeur par dfaut un paramtre dune fonction .. 510Transmettre un nombre variable de paramtres une fonction . 511

8 LE GUIDE COMPLET

Sommaire

Utiliser un oprateur de comparaison de type .. . . . . . . . . . . . . . . . . . 512Les attributs __FILE__ et __LINE__ .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513Les variables variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Les oprateurs sur les tableaux .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Les techniques doptimisation en PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . 515Les fonctions include() et require() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516Laffichage tampon : output buffering .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 518Fin de bloc PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519Le paramtre cach de break et continue .. . . . . . . . . . . . . . . . . . . . . . . 519Chane de caractres sous forme de tableau de caractres .. . . 520Rendre disponible un site wamp sur internet . . . . . . . . . . . . . . . . . . . . . 521

17.2. MySQL .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523Rcuprer un enregistrement de manire alatoire . . . . . . . . . . . . . . 523Optimiser ses tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524Autres optimisations .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

17.3. HTML et Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525Empcher lautocompltion .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525Dfinir le rafrachissement automatique dune page .. . . . . . . . . . . 526

Chapitre 18 Les fonctions PHP 527

18.1. Les fonctions mathmatiques .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52918.2. Les chanes de caractres .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53818.3. Les expressions rgulires .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55918.4. Les tableaux .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56118.5. Les fonctions de dates et dheures .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58318.6. Les fichiers et les rpertoires .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58818.7. Linterface avec MySQL .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61118.8. Les images .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62218.9. Les variables .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63818.10. La configuration PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64218.11. Fonctions diverses .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645

Chapitre 19 Annexes 649

19.1. Webographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650MySQL .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652Apache .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652Internet et le Web .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653Et les blogs .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654

19.2. PHP .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654Les oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654Les variables prdfinies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657Les mots rservs .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668Les diffrences entre PHP 3 et PHP 4 .. . . . . . . . . . . . . . . . . . . . . . . . . . . 669Les diffrences entre PHP 4 et PHP 5 .. . . . . . . . . . . . . . . . . . . . . . . . . . . 672

Sommaire

9LE GUIDE COMPLET

19.3. MySQL .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673Les types .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673Les fonctions .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674

19.4. Les caractres HTML spciaux .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67919.5. Les feuilles de styles : CSS .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683

Chapitre 20 Index 693

10 LE GUIDE COMPLET

Sommaire

Ddicace

Laurence et Marie-Castille.

Introduction

Les langages de programmation ...................................................................................... 14Le PHP .................................................................................................................................... 20Internet, comment a marche ? ....................................................................................... 31Check-list ............................................................................................................................... 46

Tout en tant consacr un langage de programmation aussi pointuquavanc, cet ouvrage reste destin un large public. Quelquesconnaissances lmentaires dans le domaine du Web (HTML) mises part, aucune comptence informatique particulire nest indispensable la comprhension des diffrents sujets abords au sein du prsentouvrage. Il est de ce fait particulirement destin aux web designers etaux webmestres, aux tudiants et, plus gnralement, toute personneaspirant aller plus loin dans la cration de sites et dapplications web.

Tout au long des chapitres, nous nous attacherons illustrer lesdiffrents concepts tudis laide dexemples que nous enrichirons aufur et mesure des chapitres. Nous tudierons aussi bien les bases dulangage (syntaxe, variables, fonctions) que certains aspects plus avancs(envoi de courriels, manipulation de fichiers, interaction avec les basesde donnes, gestion des cookies et sessions, programmation objet).Nous profiterons galement de certains chapitres pour dcouvrircertaines technologies adjacentes PHP : le HTML (les formulaires), leSQL (le langage des bases de donnes), le XML (un format universeldchanges de donnes) et le langage Javascript (qui a vu sarhabilitation rcente avec lmergence du concept de Web 2.0).Dans le cadre de ce premier chapitre, nous nous intresserons toutdabord aux diffrents langages de programmation pour nous concentrerensuite sur le langage PHP, son histoire, son mode de fonctionnement,ses avantages et ses dfauts.

Nous profiterons aussi de ce chapitre introductif pour raliser un rapidetour dhorizon du Web et dInternet en gnral.

1.1. Les langages de programmationPHP est un langage de programmation. Il permet dcrire desprogrammes, tout comme les mathmatiques permettent de rsoudre desproblmes. Trs en vogue actuellement, il est cependant loin dtre leseul dans sa catgorie. Plusieurs centaines de langages ont ainsi vu lejour depuis la naissance de linformatique dans les annes 1950. Parmiles plus connus peuvent tre cits les langages C, C++, C#, Java, Perl,Python, Basic, ActionScript, etc.

Un programme informatique est compos de lignes dinstructions ;lensemble de ces lignes forme le code source (ou listing) du

14 LE GUIDE COMPLET

IntroductionChapitre 1

programme. Dans la vie courante, les instructions suivantes pourraienttre apparentes un programme :Listing 1-1 : un programme dans la vie courante1- insrer la carte2- composer le code secret3- renouveler ltape 2 en cas dchec4- composer le montant5- appuyer sur le bouton validez6- retirer les billets7- rcuprer la carte

Pour un mme objectif, le code source dun programme est diffrentselon le langage utilis.Listing 1-2 : Programme crit en PHPfor ($i = 1; $i Certains langages rcents trouvent ainsi leurs origines dans lesannes 1960. En analysant minutieusement sa syntaxe, nous pouvons ainsinous rendre compte que le langage de Microsoft C# (C Sharp) estdirectement issu dun langage aujourdhui compltement oubli : le BCPL.Vous devriez donc tre en mesure, lissue de cet ouvrage, de lire sansdifficult majeure un listing de code crit dans la plupart des langagesmodernes de haut niveau.

Langages interprts et langages compilsIl serait bien videmment inutile et fastidieux de connatre plusieurslangages si ces derniers proposaient tous les mmes fonctionnalits.Comme vous pouvez vous en douter, ce nest pas du tout le cas : chaquelangage dispose de ses particularits, de ses avantages et de ses dfauts.

La premire grande diffrence observer entre les diffrents langagescits prcdemment se situe dans leur mode de fonctionnement : certainssont classer parmi les langages interprts et dautres parmi leslangages compils.

Tableau 1.1 : Langages interprts et langages compils

Langages interprts Langages compils

PHP C

Perl C++

Python Java

JavaScript Pascal

DtailsRien ntant jamais simple en informatique, vous pourrez

effectivement lire quil est possible de compiler du Perl ou du PHP, queles excutables Java et C# sont en fait interprts par des machinesvirtuelles, que des processeurs Crusoe de Transmeta deviennent desinterprteurs de binaires. Ce ne sont toutefois que des dtails, et il estvident quaujourdhui toutes ces notions ont tendance se mler lesunes aux autres.

La diffrence entre ces deux types de langages se situe au niveau de leurmode dexcution.

16 LE GUIDE COMPLET

IntroductionChapitre 1

Pour excuter un programme crit dans un langage non interprt, il estncessaire de compiler le code source pour en faire un binaire. Lecompilateur est le programme qui se charge de cette opration. Chaquelangage dispose ainsi dun compilateur qui lui est propre : celui du Csappelle gcc, celui du Java se nomme javac. lissue de cette phasedite de compilation le binaire pourra tre excut par la machine. Lecompilateur sest en ralit charg de convertir toutes les lignes de codedans un langage de bas niveau (lassembleur dans le cas du C), illisiblepar lhomme mais comprhensible par un processeur.Listing 1-7 : exemple de code crit en assembleur.data

msg:.ascii "Hello, world!\n"len = . - msg

.text

.global _start

_start:

movl $len,%edxmovl $msg,%ecxmovl $1,%ebxmovl $4,%eaxint $0x80

movl $0,%ebxmovl $1,%eaxint $0x80

Pour excuter un script crit avec un langage interprt, il faut, commeson nom lindique, passer par un interprteur. Cet interprteur lit le codepas pas et le convertit au fur et mesure en instructions pouvant tretraites par le processeur. Quand on parle de PHP, on parle donc la foisdu langage et de linterprteur.

ScriptLe terme script est souvent utilis lorsque lon souhaite faire

rfrence un programme crit dans un langage interprt. On parleainsi de script PHP ou Perl.

Les langages de programmation Chapitre 1

17LE GUIDE COMPLET

Voyons rapidement les avantages et les inconvnients de chacun de cesdeux modes.

Avantage du langage compilLa conversion en binaire est ralise une fois pour toutes lors de laphase de compilation. La suite Office de Microsoft, par exemple, a tcompile une fois, et ce sont des versions binaires que lon trouve surles talages des grandes surfaces. Un programme compil est donc plusrapide sexcuter quun programme interprt qui, lui, devra treconverti chaque excution.

Inconvnient du langage compilLe binaire issu de la compilation nest pas excutable universellement . Ainsi, un binaire excutable sur un PC fonctionnantsous Windows ne le sera pas sur un PC sous Linux ou OS2 : il sagit icidune incompatibilit de systme dexploitation. De la mme manire,un binaire compil sur PC ne pourra pas fonctionner sur Mac ou Sun : ilsagit alors dune incompatibilit darchitecture machine. Il est doncfacile dimaginer le casse-tte pour des socits souhaitant fairefonctionner et vendre leur logiciel sur le plus grand nombre deplateformes possible.

Avantage du langage interprtUn programme PHP ntant ni plus ni moins quun simple fichier textecontenant des lignes de code, il est interprtable sur tout type demachine ou de systme dexploitation sans que cela ncessite lamodification de la moindre virgule : on appelle cela la portabilit . Lemarch potentiel dun programme crit en PHP est par l mme bienplus vaste que celui dun programme compil qui, gnralement, nestdvelopp que pour un systme dexploitation et une architecturedonns.

Inconvnient du langage interprtEn plus de la relative lenteur par rapport au langage compil, il convientde noter un inconvnient de taille pour les personnes souhaitant vendreleur programme : la fourniture du code source. Alors quil estimpossible de deviner comment un programme compil a t conu, ilest tout fait possible pour une socit cliente ayant achet un

18 LE GUIDE COMPLET

IntroductionChapitre 1

programme crit en PHP de voir comment celui-ci a t cod et ainsi devoler les ides et le savoir-faire du concepteur.

Autre problme de taille : la ncessit de disposer de linterprteur pourpouvoir excuter un script. Alors que vous pouvez transmettre un binairepar courriel et tre sr quil pourra tre excut chez votre ami, ilconviendra pour un script PHP de vrifier que cet ami disposepralablement sur son ordinateur de linterprteur PHP. Or, il peut treassez gnant dimposer linstallation dun tel environnement pour lasimple excution dun programme.

Compilation de PHPLa socit Zend, dont nous allons parler plus loin dans ce chapitre, a

dvelopp un outil qui permet de convertir un programme PHP en unfichier contenant un code intermdiaire illisible par lhumain, mais lisiblepar un interprteur PHP (et cela quels que soient larchitecture et lesystme dexploitation !). Il ne sagit ni plus ni moins que duncompilateur PHP dguis.

Les domaines dapplicationEn plus de cette diffrence de fonctionnement, les langages ont souventt conus pour des domaines dapplication prcis.

j ASP, PHP, CFM : le Web.j C : applications systme.j Java : applications pour systmes embarqus (tlphones

portables, cartes puce).j Perl : administration systme.j C++ : applications avec interfaces graphiques.

Bien que tout programme puisse tre crit avec tout langage, certainsvous permettront de le dvelopper en 10 lignes, alors que dautres enncessiteront 300.

Choix du langageBien que PHP soit un langage aussi polyvalent quattractif, il ne faut

surtout pas tomber dans lexcs qui consisterait vouloir tout raliser enPHP. Dautres langages, pour des problmatiques bien prcises, peuventse rvler suprieurs PHP. Il est donc toujours intressant de se tenir

Les langages de programmation Chapitre 1

19LE GUIDE COMPLET

inform et de surveiller les autres technologies et nouveauts (celatant dautant plus vrai en informatique o les choses voluent

beaucoup plus vite quailleurs).

1.2. Le PHPLe PHP est un langage interprt qui a t conu ds son origine pour leWeb. Il est aujourdhui devenu le leader incontest dans ce domaine.Plus de 9 millions de sites lont aujourdhui choisi comme plateforme dedveloppement web.

Les raisons du succsElles sont la fois nombreuses et varies.

Rapidit, stabilit, scalabilit, scuritPHP est le langage de scripting le plus rapide du march. Cestrellement important quand vous devez raliser un site devant recevoirplusieurs centaines de milliers de visiteurs par jour. Plus le script met detemps tre interprt, plus lattente est importante pour linternaute.Or, noubliez jamais que rien nest pire sur le Web que de faire attendreun internaute !

Cette rapidit est dautant plus impressionnante que PHP disposedautres proprits toutes aussi essentielles.

j Stabilit : PHP nest pas bugg et ne plante pas.j Scalabilit : quil y ait cent ou un million dinternautes qui

viennent sur votre site, PHP continuera excuter vos scripts(certes plus lentement dans le cas dun million de requtes).

j Scurit : PHP est un systme trs sr dont les rares failles onttoujours t corriges dans la journe.

Scurit et PHPIl faut bien faire la diffrence entre la scurit de PHP en tant que

systme et la scurit dun logiciel crit en PHP. Le fait que PHP soitscuris nimplique pas pour autant quune application crite en PHPsoit elle-mme scurise. Un programmeur peut ainsi tout fait laisserdans son code une faille de scurit qui pourra tre exploite par un

20 LE GUIDE COMPLET

IntroductionChapitre 1

pirate. Il est donc trs important de prendre de bonnes habitudes envrifiant toujours que son code ne contient pas de faiblesse. Le

chapitre consacr la scurit devrait vous y aider.

Open SourceLe projet PHP est un projet open source. Lopen source est unmouvement plantaire qui regroupe les meilleurs dveloppeursmondiaux et qui a pour principe fondateur la mise disposition dessources des logiciels (cest--dire les listings de code qui ont permis deraliser le logiciel). Ainsi, alors que lASP nest dvelopp que parMicrosoft, PHP est un projet sur lequel travaillent des centainesdtudiants, de chercheurs et ingnieurs travers le monde. En disposantdes sources, tout un chacun peut tudier la manire avec laquelle lelangage est conu et peut aussi corriger les ventuelsdysfonctionnements (bugs). Cela explique directement que PHP soit unlangage extrmement stable ne souffrant que de trs rares bugs oufailles.

Appartenant tout le monde et personne en mme temps, les logicielsOpen Source ont un norme avantage par rapport leurs cousinspropritaires : ils ne peuvent pas disparatre. Si une socit ditrice dunlangage dpose le bilan, le langage disparat avec la socit. Pour PHP,cela ne peut arriver. Nimporte quel tudiant dispose des sources et peutreprendre le flambeau. En ces temps de troubles et de difficults pour lesditeurs de logiciels, cette notion ne doit pas tre mise de ct.

Un autre avantage travailler avec des logiciels open source tel quePHP est davoir sa disposition une norme bibliothque de scripts dontles sources peuvent tre rcupres gratuitement sur le Web. Il devientaujourdhui assez rare de ne pas trouver sur le Web un morceau de codequi ne rpondrait pas exactement vos besoins.

Le chapitre Webographie vous indique une srie de sitesproposant le tlchargement de scripts PHP.

FonctionnalitsGrce lopen source, chacun peut ajouter sa pierre ldifice, enamliorant ou en dveloppant certaines parties. Le cycle de

Le PHP Chapitre 1

21LE GUIDE COMPLET

dveloppement de PHP est par consquent trs rapide, et chaquenouvelle version est accompagne de son lot de nouvellesfonctionnalits. PHP contient donc un trs grand nombredextensions qui permettent par exemple :

j de gnrer des images, des fichiers PDF, Flash ;j de se connecter des serveurs FTP, LDAP, de mail ;j de travailler avec des bases de donnes (MySQL, MS SQL,

Oracle, Informix, PostgreSQL) ;j de manipuler des fichiers XML ;j dinteragir avec des Web Services ;j de sinterfacer avec des systmes de paiement scuris.

PHP est un langage dune trs grande flexibilit. Quelle que soit lacomplexit du logiciel concevoir, il est trs peu probable de seretrouver limit par PHP. Comme le C, PHP vous permet de tout faire, leplus souvent trs rapidement. Cette ressemblance avec le C ne sarrtedailleurs pas l. PHP dispose en effet dune syntaxe trs proche de celledu C. Quand on sait que le C est un des langages les plus rpandus, celase rvle un choix tactique : beaucoup de programmeurs ont pu de lasorte passer du C PHP en quelques heures et venir enrichir lacommunaut de dveloppeurs. Plus un langage dispose de dveloppeurs,plus vous avez de chances dobtenir des rponses dans les forums, detrouver des documents et des exemples sur le Web.

GratuitPHP fait partie de cette famille de logiciels que lon qualifie de freesoftware, free dans le sens de libre (open source), mais galementdans le sens de gratuit . Bien que PHP soit de loin ce qui se fait demieux dans le domaine, il est, la diffrence de ses principauxconcurrents (ASP, ColdFusion), entirement gratuit. PHP nest pas leseul logiciel gratuit et open source dont nous allons parler dans ce livre :Linux (systme dexploitation), Apache (serveur web), MySQL (moteurde base de donnes) sont dautres logiciels incontournables du mondedu Web et sont tout aussi libres et gratuits.

UniverselLinterprteur PHP est aujourdhui disponible sur un trs grand nombredarchitectures (PC, Mac), de systmes dexploitation (Windows, MacOS X, Linux, Unix, etc.) et de serveurs web (Apache, IIS, AOLserver,

22 LE GUIDE COMPLET

IntroductionChapitre 1

Roxen, etc.). Ainsi, si vous changez un jour dhbergeur, il y a de forteschances que votre application continue de fonctionner.

Apache/LinuxBien que fonctionnant sur la grande majorit des serveurs web et sur laplupart des systmes dexploitation, PHP est avant tout li au serveurApache et au systme Linux. Ce sont l les vritables applicationsphares du monde de lopen source et du Web. Apache est de loin leserveur web le plus utilis au monde. Cest lui qui vous sert les pagesdes plus gros sites mondiaux (Yahoo!, Google). Linux est quant lui ledeuxime systme dexploitation derrire Windows dans le domaine desserveurs web.

Les concurrentsPHP est loin dtre le seul langage de scripting pour le Web. On trouveparmi ses concurrents

RubySes avantages :

j Il sagit dun vritable langage objet o tout lment du langageest lui-mme objet. Il ravira les dveloppeurs exigeants au niveaumodlisation ainsi que ceux, plus dbutants, souhaitant mettre enplace des interfaces graphiques le plus rapidement et simplementpossible.

j La disponibilit de la plateforme RAILS pour raliser desapplicatifs web en AJAX est un vritable atout du fait de la trsgrande popularit de cet environnement.

j Gratuit, open source et disponible sur une grande varit deplateformes.

Ses inconvnients :j Langage assez rcent, il est encore peu rpandu chez les

hbergeurs et risque de mettre encore quelques annes avantdtre accept au sein des grands groupes.

PythonSes avantages :

Le PHP Chapitre 1

23LE GUIDE COMPLET

j Ce langage est extrmement bien pens et permet une qualit dedveloppement objet largement suprieure celle du PHP.

j Gratuit, libre et largement portable.j Le langage Python tend de plus en plus remplacer Perl dans le

cur des administrateurs systme et voit sa base dutilisateursstendre de jour en jour.

Ses inconvnients :

j La syntaxe du langage fonde sur lindentation peut paratredouteuse certains.

j Le Web est loin dtre la priorit des concepteurs.

ASP (Microsoft)Ses avantages :

j ASP est ce quil y a de mieux lorsque lon souhaite ne travaillerquavec des outils Microsoft et tre assur de la compatibilitavec IIS, Front Page, Visual Studio, SQL Server, Access.

j Les outils clients sont gnralement trs bien raliss, que ce soitpour grer les pages, la base de donnes ou le serveur web. Celapermet un non-ingnieur systme dadministrer une solutionweb complte.

Ses inconvnients :

j ASP souffre de faibles performances et ne peut tre excutquavec IIS sous Windows.

j Le serveur web IIS, pierre angulaire dune solution Microsoft,nest pas citer en exemple en termes de scurit. Les attaquesgravissimes sur des machines disposant de ce logiciel sontcommunes (voir Red Code, Nimda) et ont parfois paralys dessocits entires.

j Il sagit dun choix onreux dans la mesure o le logiciel estpayant tout comme les technologies adjacentes (Visual Studio,Front Page, SQL Server) qui sont vivement recommandes afin derester dans un environnement Microsoft et dviter lesincompatibilits. Il sagit ici de la partie merge de liceberg caril convient dajouter ces licences un prix dhbergement etdadministration souvent beaucoup plus lev. Et ne croyez pasfaire des conomies en hbergeant en interne car il sagira dans ce

24 LE GUIDE COMPLET

IntroductionChapitre 1

cas dinvestir dans une machine disposant dnormes ressourcesautant au niveau du processeur que de la mmoire.

ASPX, C# (Microsoft)Ses avantages :

j la diffrence dASP, les scripts ASPX peuvent maintenant treexcuts sur des serveurs Apache disposant du module libre etgratuit Mono (www.mono-project.com/Main_Page).

j Les ASPX peuvent tre crits en C# qui est sans nul doute unmagnifique langage de programmation.

Ses inconvnients sont les mmes que lASP.

CFM (Macromedia-Allaire) : ColdFusionSes avantages :

j Lenvironnement de dveloppement de ColdFusion est ce qui peutse faire de mieux dans le genre. Vous disposez en achetant celogiciel dun outil central disposant dune interface graphiquecomplte vous permettant de dvelopper votre code, vos pagesweb, denvoyer vos documents sur un serveur FTP.

j Le langage a t dvelopp avec la simplicit en ligne de mire.Par consquent, il sagit peut-tre de la meilleure solution pour unpublic dbutant ne souhaitant pas aller trs loin dans ledveloppement web.

Ses inconvnients :

j Le langage est plutt lourd, mal conu et nvolue que trslentement. Ds que lon souhaite aller assez loin dans ledveloppement, les dfauts et les limitations apparaissent trs vite(on pense notamment la gestion assez primaire des expressions rgulires ).

j Les hbergeurs proposant le ColdFusion ne sont pas nombreux etfont souvent payer ce service assez cher. Le serveur web est aussipropritaire et, mme si ses performances sont honorables, ellessont loin dtre aussi bonnes que celles dApache.

j Comme lASP, cet environnement de dveloppement est payant.

Le PHP Chapitre 1

25LE GUIDE COMPLET

PerlSes avantages :

j Trs vieux langage, Perl dispose dune bibliothque dextensionsextrmement riche (par exemple, cration de fichiers Excel lavole, connexion une multitude de serveurs, etc.).

j Gratuit, open source et disponible sur une grande quantit deplateformes.

Ses inconvnients :

j Ce langage na pas t dvelopp dans une optique web et peutdonc souffrir dune certaine lourdeur.

j Linstallation sur une machine cliente est souvent bien pluscomplique que les systmes vus prcdemment.

Des logiciels en ligneDe plus en plus dapplicatifs sont dvelopps avec ces langages orientsweb. Comme il est ncessaire dtre connect, on les qualifiefrquemment de logiciels en ligne (online softwares ou webapplications).Les avantages de tels applicatifs sont assez nombreux :

j Lapplicatif tant centralis, sa mise jour devient extrmementsimple (nul besoin de changer quoi que ce soit sur les postes desutilisateurs).

j Le march est immense. Toutes les personnes disposant dunnavigateur web et dune connexion au Net peuvent y accder(quel que soit le systme dexploitation ou larchitecture).

j Les donnes de la socit sont centralises, tous les employspeuvent y accder de manire collaborative.

j Seul le serveur web doit tre scuris, ce qui simplifie grandementla tche des responsables informatiques. De la mme manire, lessauvegardes deviennent trs simples grer.

Tout naturellement, ces logiciels se sont dvelopps principalement pourle monde de lentreprise : gestion commerciale et financire, intranet etextranet, commerce lectronique, gestionnaire de planning, demessagerie, dagenda, etc.

26 LE GUIDE COMPLET

IntroductionChapitre 1

Microsoft a bien compris que le march du logiciel allait dans ce sens, etcest dans cette optique quil tend pousser sa plateforme dedveloppement .NET. Lavenir ira sans nul doute vers unedcentralisation et une location des logiciels.

Interactions entre langagesParmi les extensions peu connues de PHP, nous pouvons mentionner

le fait que PHP est dsormais capable de rcuprer du code dautreslangages et de lexcuter. Plus exactement, PHP est en mesure decharger des objets crits en Java ou en C# et de faire appel auxdiffrentes fonctions et mthodes contenues dans ces mmes objets.Cette fonctionnalit est surtout utile dans le monde de lentreprise odnormes librairies extrmement complexes ont dj t crites(notamment en Java) pour des environnements peu ou pas documents.En permettant ces interactions, PHP trouve sa place au cur des grandschantiers informatiques et commence tre envisag par les SSIIsouvent soucieuses daller au plus vite, au plus simple et au plus sr.

LhistoireLe langage PHP, comme la plupart des grands projets open source, estn dune volont individuelle et isole. Conu au dpart pour rcuprerdes informations sur les internautes qui visitaient sa page personnelle,PHP est rest pendant plus dune anne le jouet de son uniqueconcepteur : Rasmus Lerdorf. cette poque, PHP signifiait PersonalHome Page (on en parlait frquemment sous le nom PHP/FI).

Ce nest donc quen 1995, la suite dune annonce dans lesnewsgroups, que ce projet est devenu accessible au reste du monde. PHPdevenait alors PHP: Hypertext Preprocessor. Trs simple au dbut, lelangage a pu, avec laide de la communaut open source, senrichir denouvelles fonctionnalits, notamment laccessibilit aux bases dedonnes.

Figure 1.1 :Le logo de PHP

Le PHP Chapitre 1

27LE GUIDE COMPLET

Ds cette poque, le projet sinternationalisa, et des dveloppeurs,originaires de Norvge, dIsral, dAllemagne, des tats-Unis, prirentlhabitude de participer rgulirement au dveloppement de PHP.

De 15 000 en 1996, le nombre de sites utilisant PHP a atteint 50 000 en1997. Cest cette priode que le projet est pass sous la direction deZeev Suraski et Andi Gutmans. Ces deux tudiants israliens dcidrentde rcrire le langage de A Z. Cette nouvelle version devint PHP 3.

Aprs cet norme bond en avant que fut PHP 3, les dveloppeurs seremirent au travail avec la ferme intention doptimiser le cur de PHPpour obtenir des performances encore meilleures (personne ne seplaignait pourtant des performances de PHP cette poque !). Plutt quedexcuter les instructions une une, il fut dcid de choisir unenouvelle approche : compiler le code, puis lexcuter. Ce travail a eulieu dans le cadre du Zend Engine, qui est aujourdhui le vritable curde PHP 4. Cette nouvelle mouture est sortie en 2000. Lintgration duZend Engine dans le cadre de PHP 4, outre le gain en performances,apporte une plus grande modularit et une meilleure extensibilit. PHPest aussi devenu indpendant de la couche serveur web , ce qui enfait aujourdhui un des systmes les plus compatibles du march.PHP 5, sorti en juin 2004, est bas sur un Zend Engine de nouvellegnration (version 2). Cette nouvelle version vise principalement combler des lacunes du langage dans les domaines de la programmationobjet, des bases de donnes et des services web. En sattaquant cesdomaines, PHP se donne une lgitimit accrue dans le monde delentreprise et peut dautant plus facilement tre envisag pour des

Figure 1.2 : volution du nombre de sites qui utilisent PHP

28 LE GUIDE COMPLET

IntroductionChapitre 1

projets critiques. PHP 4 reste aujourdhui la version de PHP la pluspopulaire du fait de sa stabilit extrme et de sa trs large diffusionparmi les hbergeurs.

Alors que nous crivons ces lignes, PHP 6 est en phase dedveloppement. Lobjectif principal de cette version sera de rendre PHPparfaitement compatible avec les rouages complexes delInternationalisation (I18N).

AujourdhuiZeev Suraski a fond la socit Zend Technologies (www.zend.com).Cette socit fournit des logiciels payants autour du langage PHP :

j Zend Encoder rend vos scripts PHP illisibles (ce qui est utilequand lon souhaite vendre ses scripts sans pour autant dvoilerses connaissances).

j Zend Accelerator permet dacclrer lexcution des scripts PHPavec un systme de cache (le site officiel indique des gains derapidit jusqu 300 %).

j Zend IDE est un outil permettant de dvelopper en PHP demanire plus conviviale.

Figure 1.3 : Lenvironnement de dveloppement propos par Zend

Le PHP Chapitre 1

29LE GUIDE COMPLET

La socit Zend propose aussi un produit non open source mais gratuit :Zend Optimiser. Il sagit dune librairie qui permet doptimiser lavole votre code au moment o celui-ci est excut.

Argent et open sourceLes dollars et lopen source nont jamais fait bon mnage. La russite

de cette socit est donc dautant plus remarquable. En vendant dessolutions des socits (qui en ont souvent largement les moyens), Zendest en mesure demployer des dveloppeurs qui travaillent 100 % de leurtemps sur PHP. Toute la communaut PHP profite ainsi directement dusuccs et de la bonne sant financire de la socit Zend.

Le rouleau compresseur PHP est dsormais en marche et nul ne sait oil sarrtera. Des conventions et des confrences ont lieu dsormais tousles mois autour de ce langage ; des milliers de sites, des centainesdouvrages, et mme des magazines vendus en kiosques se consacrentmaintenant exclusivement PHP. Mme le gouvernement franaissintresse au phnomne et donne des instructions auprs de sesministres afin que leurs sites soient conus sur des solutions Lamp (parexemple SPIP Agora). Le Web est devenu central, aussi bien dans notrevie de tous les jours que dans la vie des entreprises, et PHP est en passede devenir lun des vecteurs dterminants de son expansion.

Technologies LampToute personne sintressant au PHP a d croiser dans la littrature le

terme Lamp. Ce sigle signifie Linux/Apache/MySQL/PHP. Lamp est unenvironnement complet permettant de faire fonctionner une applicationweb. Il dispose dun systme dexploitation (Linux), dun serveur web(Apache), dun systme de gestion de bases de donnes (MySQL) etdun langage de programmation (PHP). Il sagit aujourdhui, et de loin,de lenvironnement le plus performant, le plus sr et le plus abordabledu march.

Finissons ce paragraphe avec deux chiffres qui devraient marquer lesesprits : plus de 1 million de serveurs web et presque 20 millions desites exploitent aujourdhui PHP.

30 LE GUIDE COMPLET

IntroductionChapitre 1

1.3. Internet, comment a marche ?Dans cette partie, nous allons essayer de comprendre commentfonctionnent le Web et Internet en gnral. Une bonne comprhensionde cette couche rseau vous permettra de mieux envisager lefonctionnement et limportance de PHP.

Web et autres protocolesLe Web est un rseau mondial de machines parlant la mme langue. Eninformatique, cette langue est appele un protocole . Le protocole duWeb est lHTTP (Hypertext Transfer Protocol).Le Web nest quun rseau parmi tant dautres, HTTP a en effet denombreux cousins .

Tableau 1.2 : Quelques protocoles de haut niveau et leur fonction

Protocole Signification Fonction

FTP File Transfer Protocol Transfert de fichiers

IRC Internet Relay Chat Dialogue en direct

NNTP Network News TransferProtocol

Envoi, lecture de news

POP Post Office Protocol Rcupration des courriels

SMTP Simple Mail TransferProtocol

Envoi des courriels

Chacun a donc un rle qui lui est propre et de nouveaux rseaux secrent tous les jours pour rpondre aux nouveaux besoins desinternautes. Nous avons ainsi vu depuis quelques annes lmergencedes rseaux P2P de type BitTorrent qui permettent la recherche etlchange de fichiers.

Crer un nouveau protocole ne consiste en fait qu dfinir une nouvellelangue comprhensible la fois par un client et par un serveur.

Tableau 1.3 : Exemple simplifi dune dfinition de protocole

Requte client Rponse serveur

HELLO HELLO

Internet, comment a marche ? Chapitre 1

31LE GUIDE COMPLET

Tableau 1.3 : Exemple simplifi dune dfinition de protocole

Requte client Rponse serveur

RECEVOIR toto.txt Envoyer le fichier toto.txt

MESSAGE PAUL bonjour Envoyer le message bonjour lutilisateurPAUL

En ralit, lacceptation dun nouveau protocole en tant que standard estextrmement complique. Tout doit tre parfaitement ficel . Les casles plus bizarres doivent avoir t considrs. La page http://sunsite.dk/RFC/rfc/rfc2616.html prsente le protocole HTTP version 1.1 dans toute sarichesse et sa complexit.

Chaque protocole ncessite une application cliente qui lui est propre.Pour le HTTP, cest un navigateur web ; pour le NNTP, cest un lecteurde news ; pour le FTP, il sagit dun client FTP.

Figure 1.4 : Client FTP listant les fichiers disponibles ladresseftp://ftp.cdrom.com

32 LE GUIDE COMPLET

IntroductionChapitre 1

Cependant, de plus en plus dapplicatifs permettent davoir accs plusieurs protocoles. Ainsi, le logiciel Outlook Express, de Microsoft,permet de lire des courriels (POP) et des news (NNTP). Les navigateurs,quant eux, permettent souvent davoir accs au protocole FTP. Si nousvoulons avoir accs au serveur FTP ayant pour adresse ftp.cdrom.com, ilsuffit de taper lURL (Uniform Resource Locator) ftp://ftp.cdrom.com.

Figure 1.5 : Azureus, logiciel permettant de tlcharger sur le rseauBitTorrent

Figure 1.6 : Un navigateur web accdant au serveur FTP ftp.cdrom.com

Internet, comment a marche ? Chapitre 1

33LE GUIDE COMPLET

TCP/IP et InternetMalgr cette profusion de protocoles, une chose ne change pas ; cesrseaux sont tous fonds sur un protocole sous-jacent unique :TCP/IP (Transmission Control Protocol/Internet Protocol). Cest cettecombinaison de rseaux bass sur TCP/IP que lon appelle Internet. Lerseau Internet est vraiment llment fondateur qui a permislmergence du Web, du mail et de tous ces services dont nous nepourrions plus nous passer aujourdhui. Comme pour beaucoupdavances scientifiques, cette invention est dorigine militaire. Dans lesannes 1960, une quipe de chercheurs plancha sur un systmepermettant dassurer la continuit des changes dinformations sensibles(entre des postes stratgiques), et cela mme si certains postes (et donccertaines liaisons) taient dtruits. De cet impratif naquit TCP/IP. Ceprotocole permet de dcouper les informations (pages web, courriels,images) en petits paquets et de les acheminer (de les router ) dunpoint un autre. Lide originale est la suivante : pour arriver la mmedestination, tous ces paquets ne sont pas obligs de passer par la mmeroute. Il est ainsi possible quun paquet passe par lAsie pour aller de laFrance vers lAngleterre si aucune autre route nest ce momentdisponible. Il faut donc imaginer Internet comme un maillage mondialde serveurs interconnects. Cest du fait de cette architecture que lonparle, propos du Web, de toile daraigne .

Figure 1.7 :Quelquesinterconnexionseuropennes de lasocit Cable andWireless

34 LE GUIDE COMPLET

IntroductionChapitre 1

Et le fournisseur daccs dans tout a ?

Quil sagisse de Free, de Wanadoo, dAOL, etc., son rle est de reliervotre ordinateur aux autres machines prsentes sur Internet. La lignetlphonique assume alors la fonction de lien. Votre modem sert fairetransiter les donnes informatiques entre Internet et votre ordinateur.Comme les modems classiques sont trs lents, dautres mthodes sontmaintenant proposes pour crer un canal entre Internet et vous : lecble (le mme qui vous permet daccder aux chanes de tlvision),les lignes tlphoniques boostes (lADSL), le satellite (pour les plusfortuns), les ondes radio et bientt vos prises lectriques, le WiMax.

Le serveur webLe Web est donc un protocole applicatif fonctionnant sur un modeclient-serveur.

Quand linternaute souhaite voir la page information du sitemonsite.com, situe ladresse (URL) www.monsite.com/info.html, ilutilise un navigateur de type Internet Explorer, Netscape, Firefox,Opera, Lynx, Konqueror

Le navigateur va ensuite demander au serveur ayant ladresse www.monsite.com de lui transmettre la page ayant pour nom info.html.

Essayons de comprendre plus en dtail comment cet change se droule.

Figure 1.8 : Le site kernix.com vu depuis le navigateur ELinks (mode texte)sous Unix

Internet, comment a marche ? Chapitre 1

35LE GUIDE COMPLET

tape 1 : le navigateur envoie une requteVous commencez par crire lURL http://www.google.fr/index.html dans votre navigateur.

Une fois cette adresse valide, le navigateur va enchaner diffrentesactions.

Il commence par regarder quel type de protocole va tre utilis. SilURL commence par http://, cest le protocole HTTP. En revanche,sil sagit de ftp://, le navigateur devra alors utiliser le protocole FTP.

Il doit ensuite dcouvrir o se trouve le serveur web www.google.fr. Pourcela, il va utiliser un autre service du Net : les DNS (Domain Name Server ;des adresses DNS sont systmatiquement fournies par votre fournisseurdaccs). Les DNS sont des serveurs qui permettent dassocier un nomde domaine (www.google.fr) une IP (216.239.39.101), un peu commeles pages blanches associent M. Dupont son numro de tlphone01 02 03 04 05. Cette adresse IP est unique et identifie par consquentde manire tout aussi unique le serveur web. Cest donc grce cetteadresse IP que votre navigateur va pouvoir reprer le bon serveur surInternet et entrer en contact avec lui. Comme il sagit, dans ce cas, duprotocole HTTP, le navigateur va communiquer avec le serveur HTTP(web) du serveur 216.239.39.101. La requte qui sera faite vise obtenir la page ayant pour nom index.html.

IP de GoogleSi vous tapez lURL http://216.239.39.101, vous arrivez sur la

mme page, ce qui est dailleurs plutt rassurant.

tape 2 : le serveur web retourne le fichierLe serveur web a donc reu une requte dune machine qui souhaiteobtenir le fichier index.html. Il va donc chercher sur son disque dur lefichier index.html, rcuprer son contenu, puis envoyer ce flux dedonnes au navigateur. Il sait o le renvoyer car, ds que vous tes surInternet, vous disposez vous aussi dune adresse IP visible de lextrieur.

Figure 1.9 : Affichage dune URL dans un navigateur

36 LE GUIDE COMPLET

IntroductionChapitre 1

Votre adresse IPSi vous tes reli Internet et que votre systme dexploitation est

Windows, vous pouvez connatre votre adresse IP en tapant lacommande IPCONFIG (la commande peut tre excute sous DOS oudirectement depuis le menu Dmarrer/Excuter). Si, ensuite, vousinstallez un serveur HTTP (apache, IIS) ou FTP (WS_FTP Serveur) survotre machine, vous serez en mesure dtre vu depuis lextrieur. Sivous transmettez votre adresse IP un ami, celui-ci pourra se connecterdirectement votre machine avec un navigateur ou un client FTP. Votremachine joue alors le mme rle quun serveur dhbergement, ladiffrence prs que votre liaison nest, dans tous les cas, pas trs rapide.Sachez, par contre, que votre IP nest pas fixe. chaque fois que vousvous connectez ou dconnectez, vous changez dIP.

En revanche, si vous aviez demand lURL www.google.fr/intl/fr/about.html,le serveur serait rentr dans le rpertoire intl, puis dans le rpertoire fr, etil aurait trouv cet endroit le fichier about.html.

Vous comprenez donc quune URL est compose de plusieurs lments :

j le protocole http:// ;j ladresse Internet du serveur, www.google.fr (adresse qui peut donc

tre une adresse IP) ;j le chemin du fichier /intl/fr/about.html.

Figure 1.10 : Ladresse IP est ici 192.168.0.203

Internet, comment a marche ? Chapitre 1

37LE GUIDE COMPLET

Le chemin est similaire un chemin sur votre disque dur (par exempleC:\tmp\message.txt), sauf quil est not sous la norme des cheminsUnix : /tmp/message.txt, o la premire barre oblique (/) correspond laracine.

Majuscules ou minuscules dans les URL ?Pour rpondre cette question, il est ncessaire de diviser le problme

en deux. Le nom de domaine (par exemple www.google.fr) dun ct et lechemin daccs au fichier (par exemple /index.html) de lautre. Les DNSntant pas sensibles la casse ( la diffrence majuscule/minuscule), lesURL http://google.fr et http://wWW.gOOglE.fR sont donc quivalentes.En ce qui concerne les chemins, le problme est plus compliqu. Si leserveur HTTP fonctionne sous Unix, il sera sensible la casse. Leschemins /index.html et /index.htmL seront donc diffrents. Sil fonctionne,par contre, sous Windows, le serveur ne sera pas sensible cettediffrence. Les serveurs HTTP fonctionnant essentiellement sousUnix/Linux, il est donc prfrable de faire attention la faon dcrire lechemin daccs une page ou un script.

tape 3 : le navigateur traite le fichier

Le navigateur reoit donc le contenu du fichier index.html. Commelextension du fichier est .html, il sera trait comme un fichier HTML(voir Figure 1.11).Le navigateur ne reoit dans un premier temps que le contenu textuel dela page. Il doit donc, avant dafficher la page, rcuprer toutes lesimages contenues dans celle-ci. Il regarde dans le code, trouve toutes lesadresses des images et fait des requtes au serveur web pour les obtenirune par une. Bien videmment, ces sous-requtes sont totalementtransparentes pour vous. Vous tes cependant en mesure de les raliservous-mme : quand le navigateur a besoin de limage de titre, la requteest la suivante : http://www.google.fr/images/title_homepage4.gif. Si voustapez cette URL dans votre navigateur, vous nobtenez alors, commeprvu, que limage de titre (voir Figure 1.12).

38 LE GUIDE COMPLET

IntroductionChapitre 1

Figure 1.11 : Voici le contenu du fichier index.html que reoit le navigateur

Figure 1.12 : Requte permettant de nobtenir que limage de titre

Internet, comment a marche ? Chapitre 1

39LE GUIDE COMPLET

Une fois tous les lments constitutifs de la page rcuprs par lenavigateur, celle-ci peut tre affiche.

PHPVous avez vu que lorsque le navigateur fait une requte sur un fichierHTML ou sur une image le serveur lui retourne le contenu du fichier telquel, sans lui apporter la moindre modification.

Quand, par contre, la requte est faite sur un fichier disposant duneextension .php, tout se passe diffremment. Si le serveur web estcompatible PHP, celui-ci va traiter tous les fichiers .php comme desscripts et transmettra par consquent le flux de donnes (le contenu dufichier) linterprteur PHP avant de lenvoyer linternaute. Cetinterprteur aura donc pour charge dvaluer (dinterprter) le codesource PHP et de remplacer les lignes de code par leurs rsultats.

Prenons lexemple dun fichier test.php contenant le code suivant :

Avant dtre transmis linterprteur, le flux de donnes contient encorele code ci-dessus. Une fois le travail de linterprteur termin, le fluxinterprt ne contient plus que "bonjour monde". Cest prcismentcette phrase "bonjour monde" qui sera transmise et qui apparatradans votre navigateur.

Au niveau du serveur web, PHP tel un filtre modifie donc la volele flux de donnes.

Il devient vident quun script crit en PHP qui naurait pas dextensionserait considr comme un simple fichier texte (ou HTML) et ne seraitpas trait en tant que script PHP (son code ne serait pas interprt).

Figure 1.13 :Sans extension, lescript est considrcomme du simpletexte

40 LE GUIDE COMPLET

IntroductionChapitre 1

Le script doit avoir une extension particulire pour tre reconnu en tantque script PHP. Lextension la plus rpandue est .php (par exempletest.php). Il est nanmoins possible de rencontrer dautres extensions :.php3 ou .phtml. Lhbergeur prcise gnralement quelle extension doittre utilise. Si le choix vous est offert, utiliser lextension .php sembleplus logique car nous en sommes aujourdhui la version 5 de PHP. Deplus, cette extension risque fort de devenir la norme.

Les autres langages du WebLes personnes intresses par les technologies lies au Web auront pusapercevoir de la grande quantit de langages qui fourmillent sur laToile.

Nous nous sommes dj arrts sur les langages interprts au niveauserveur tels que PHP, Perl, CFM, ou ASPX. Il existe une autre catgoriede programmes qui, eux, sont excuts au niveau du client (dans lenavigateur) : les Javascripts, les applets Java et les animations Flash.

JavascriptExpliquons rapidement la diffrence de fonctionnement entre ces deuxmodes.

j Niveau serveur : le script est excut sur le serveur la suitedune requte dun navigateur. Le client reoit ainsi une pageprte tre affiche.

j Niveau client : la page retourne par le serveur web contient ducode. Cest au niveau du navigateur que ce code va tre excut.

tudions deux exemples :

Figure 1.14 : Avec une extension .php, le script est reconnu comme unscript PHP ; il est donc interprt

Internet, comment a marche ? Chapitre 1

41LE GUIDE COMPLET

Listing 1-8 : test.php

Listing 1-9 : test.html

document.write("test");

Ces deux programmes donnent un rsultat identique, mais sontfondamentalement diffrents.

Dans le premier cas, le navigateur reoit une page qui contient dj lemot test, il peut donc lafficher instantanment. Dans le deuxime cas,en revanche, il reoit une page qui contient du code Javascript. Il doitpar consquent excuter ce code avant dafficher la page. Un navigateurne grant pas le Javascript naurait rien affich lcran.

Chaque mode a bien videmment ses inconvnients.

j Au niveau serveur : le fait de devoir interprter le script dsquune requte lui parvient est trs lourd grer pour le serveur etpeut conduire des ralentissements au niveau de la livraison despages. Dans le cas de lexemple ci-dessus, si 10 000 personnesdemandent la page test.php, le serveur devra interprter10 000 fois le script. Si en revanche 10 000 personnes demandent

Figure 1.15 : Rsultat obtenu avec test.php ou test.html

42 LE GUIDE COMPLET

IntroductionChapitre 1

la page test.html, le serveur se contente denvoyer 10 000 fois lapage et les 10 000 excutions se feront chez les clients. Ce modepermet de rpartir la charge de travail et de navoir aucunralentissement. Dans le cas ci-dessus, les deux versions se valent,mais imaginez un script cens chercher et afficher la 100 000edcimale du chiffre pi !

j Au niveau client : le Javascript est un langage certes normalis,mais qui est gr de faon plus ou moins performante, avec plusou moins de fonctionnalits selon les navigateurs. Il est ainsi trsdifficile de rendre un applicatif Javascript excutable sur tout typede systme.

Incompatibilits entre navigateursBien que des normes soient dictes rgulirement par le W3C pour

faire voluer le Web, nous pouvons hlas ! dplorer le fait que lesdiffrents navigateurs ne les suivent pas scrupuleusement. Microsoftnotamment, avec Internet Explorer, a particulirement compliqu la viedes dveloppeurs web en leur imposant dcrire des codes sortant de lanorme afin de rester compatible avec son navigateur vedette.Lmergence de Firefox et plus gnralement du monde du libre (freesoftware) commence nanmoins marquer les esprits et Microsoftdevrait avec son futur Internet Explorer 7 gagner en compatibilit(Javascript, CSS, DOM).

JavaIl est important, avant de clore ce chapitre, de sintresser quelquesinstants Java. Dvelopp par la socit Sun Microsystem, initialementpour des composants embarqus, ce langage a fait leffet dune bombe lorsde sa sortie. Le principe tait relativement simple et rvolutionnaire : crerun langage qui permette de tirer profit des avantages du langage interprtet du langage compil. Au lieu de compiler des sources Java directementen un binaire propre un type de processeur, la compilation se fait dans unlangage intermdiaire (bytecode), qui doit tre interprt, par la suite, parune machine virtuelle. Linterprtation est alors facilite et correspondplus une conversion.

Il fut trs vite vident que Java aurait son rle jouer sur le Web, ofoisonnaient une multitude de systmes (Mac, PC, Windows, Unix, etc.),et ce fut par lintermdiaire des applets quil se fit connatre du grandpublic. Une applet java est un programme Java qui sexcute dans unnavigateur. la diffrence du Javascript, il est possible, en Java, de

Internet, comment a marche ? Chapitre 1

43LE GUIDE COMPLET

construire des applications disposant dinterface graphique complexe.Des applets de tableurs, de dessins, de chats firent ainsi leur apparitionsur le Web la stupfaction gnrale.

la plus grande joie des internautes, les applets Java permirent aussilarrive des jeux sur le Web.

Figure 1.16 : Un logiciel de chat dans un navigateur web

Figure 1.17 : Spaceball : jeu crit en Java, fonctionnant sur tout type deplateforme

44 LE GUIDE COMPLET

IntroductionChapitre 1

Hlas, les applets sont des programmes qui demandent beaucoup deressources machine (processeur, mmoire) ! Elles ncessitent en outre laprsence dune machine virtuelle Java et sont gnralement lentes charger. Toute la politique de Sun fut donc de transfrer la technologieJava vers le niveau serveur avec les servlets. Avec certaines extensions,le serveur Apache (via son cousin Tomcat) est dsormais en mesuredinterprter du Java aussi facilement que du code PHP.

Animation FlashLe Flash est un format dvelopp par la socit Macromedia quipermet de crer des animations sur le Web. Alors quil sagissait audpart dun outil essentiellement graphique destin aux designers web,Macromedia a vite compris quil disposait dune vritable bombe etquil pouvait en faire un vritable environnement de dveloppementpour le Web. Lenvironnement Flash MX permet dsormais de raliserdes interfaces graphiques compltes, dinteragir avec des services web,de manipuler les fichiers XML et de dvelopper des applicatifs enutilisant le langage interne aussi puissant que complet questActionScript.

FLA et SWFDeux formats de fichiers sont lis au Flash : le FLA qui peut tre

compar au fichier source et le SWF qui correspond lexcutable. Sivous souhaitez apporter des modifications, vous devez donc disposer duFLA pour louvrir dans Flash MX. Au contraire, pour excuterlanimation au sein dun navigateur, le SWF vous sera ncessaire.

Flash a lavantage davoir un rendu identique sur tous les navigateurs la condition, certes trs restrictive, que lordinateur dispose duplug-in Flash. Lorsque lon sait que Macromedia est un concurrent deMicrosoft (diteur de lincontournable Windows) et que lesdistributions Linux rechignent installer des logiciels non libres, nousne sommes pas prs de disposer du plug-in Flash prinstall sur nosmachines. Le caractre propritaire de Flash lheure o les formatsde fichiers tendent tous souvrir risque galement de freinerladoption de cette technologie parmi les socits ditrices de logicielsen ligne.

Internet, comment a marche ? Chapitre 1

45LE GUIDE COMPLET

1.4. Check-listj PHP nest quun langage de programmation parmi dautre.j PHP fait partie des langages interprts.j Linterprtation des scripts PHP est ralise le plus souvent au

niveau du serveur web dont le meilleur reprsentant est Apache.j PHP est particulirement adapt aux dveloppements web.j PHP fonctionne sur une multitude de plateformes.j PHP est libre et gratuit.j Le Web est une des dimensions dInternet au mme titre que les

courriels ou le P2P.

Figure 1.18 :Outil de cration dediagrammesintgralement raliseen Flash

46 LE GUIDE COMPLET

IntroductionChapitre 1

Lenvironnementde travail

WampServer .......................................................................................................................... 48Paramtrage de PHP ........................................................................................................... 60Check-list ............................................................................................................................... 64

Lobjectif est ici de mettre en place sur votre machine un environnementde travail permettant de tester les exemples prsents dans la suite delouvrage. lissue de ce chapitre, vous disposerez dun serveur webcapable dinterprter des scripts PHP, dun systme de gestion de basesde donnes (MySQL) et dun outil permettant dinteragir avec cedernier : phpMyAdmin.

2.1. WampServerBien quApache, MySQL, et PHP puissent tre installs sparmentsous Windows, le choix se portera ici sur un outil capable dautomatiserlintgralit de ce processus.

InstallationWamp Server peut tre tlcharg sur le site www.wampserver.com sous larubrique Downloads.

1 Double-cliquez sur larchive que vous venez de tlcharger

De nombreuses modifications ont t apportes la version 2 de WampServer. Les crateurs conseillent par consquent aux personnesdisposant dj dune version de Wamp Server sur leur machine, desauvegarder leurs dveloppements, de dsinstaller.lancienne version etenfin dinstaller la toute nouvelle.

Compatibilit du codeLes dveloppements (PHP, MySQL) raliss sur une version antrieure

de Wamp Server ont 99 chances sur 100 de fonctionner sur une versionplus rcente de Wamp Server. Les projets PHP et MySQL apportent eneffet une importance norme au fait de maintenir la compatibilit desdveloppements dune version lautre.

Figure 2.1 :Avertissement

48 LE GUIDE COMPLET

Lenvironnement de travailChapitre 2

2 La fentre dinstallation se lance et vous prsente votre version deWamp.

Cette version est sans aucun rapport avec celle des outils quellecontient (que ce soit Apache, PHP ou MySQL).

Lcran suivant permet daccepter la licence.

3 Prcisez le rpertoire qui contiendra lensemble des composantsainsi que vos sources.

Figure 2.2 : linstallation de Wamp Server 2

Figure 2.3 : Acceptez

WampServer Chapitre 2

49LE GUIDE COMPLET

Ce rpertoire reprsentera approximativement 100 Mo de donnes.Nhsitez pas slectionner un autre disque si vous sentez que lespacelibre de votre partition C: est trop juste. Un changement demplacementdans un deuxime temps serait beaucoup plus compliqu.

Lcran suivant permet dobtenir des raccourcis sur le bureau pourlancer Wamp Server. Il nest pas ncessaire de cocher ces options dansla mesure o il restera possible de dmarrer Wamp Server en passant parle menu Dmarrer.

Figure 2.4 : Indiquez le rpertoire

Figure 2.5 : Raccourcis

50 LE GUIDE COMPLET

Lenvironnement de travailChapitre 2

Ltape suivante rsume vos diffrents choix dinstallation.

4 Il est encore temps de les modifier en revenant en arrire par lebouton < Back.

La prochaine tape correspond linstallation physique des composantssur votre machine. Pas loin de 2000 fichiers sont installs dans lerpertoire C:\wamp.

Figure 2.6 : Rsum de linstallation

Figure 2.7 : En cours

WampServer Chapitre 2

51LE GUIDE COMPLET

5 Dfinissez le navigateur qui sera utilis pour ouvrir ces pages.

Nous vous conseillons dutiliser le navigateur Firefox.

6 Indiquez votre adresse email ainsi que le nom de votre serveurdenvoi de mails. Ce serveur, dit SMTP, est diffrent pour chaquefournisseur daccs Internet. Il peut par exemple prendre lesvaleurs suivantes : smtp.free.fr, smtp.wanadoo.fr,smtp.noos.fr, smtp.clubinternet.fr, etc.

Ltape finale vous confirme que linstallation sest bien droule etvous propose de dmarrer sans plus attendre le Wamp Server.

Figure 2.8 : Emplacement de Firefox

Figure 2.9 : Serveur SMTP

52 LE GUIDE COMPLET

Lenvironnement de travailChapitre 2

Premiers pas

lissue de ces tapes, Apache, MySQL et PHP sont installs sur votremachine. Vous pouvez le vrifier en ralisant une premire requte sur ledomaine associ votre machine : http://localhost.

Figure 2.10 : Installation termine

Figure 2.11 : tout fonctionne merveilleusement, Apache retourne lapremire page web

WampServer Chapitre 2

53LE GUIDE COMPLET

La page affiche correspond au fichier index.php situ dansC:\wamp\www. Vous pouvez de la mme manire faire appel votrepropre page en plaant le fichier test.html dans ce mme rpertoire et eny f