Vous êtes sur la page 1sur 134

Programmer en PHP

Julien Gaulmin
julien.gaulmin@alcove.fr

version 1.44

Copyright c 2000 Julien Gaulmin julien.gaulmin@alcove.fr, Alcve


Ce document peut tre reproduit, distribu et/ou modifi selon les termes de la Licence GNU
de Documentation Libre (GNU Free Documentation Licence) dans sa version 1.1 ou ultrieure
telle que publie, en anglais, par la Free Software Foundation ; sans partie invariante, avec
comme premire de couverture (front cover texts) les deux premires pages, et sans partie
considre comme quatrime de couverture (back cover texts)
Une copie de la licence est fournie en annexe et peut tre consulte lurl :
http ://www.gnu.org/copyleft/fdl.html

Alcve
Centre Paris Pleyel
153 bd Anatole France
93200 Saint-Denis, France

Tl. : +33 1 49 22 68 00
Fax : +33 1 49 22 68 01
E-mail : alcove@alcove.fr, Toile : www.alcove.fr
1

Table des matires


Chapitre 1 Introduction au langage
1.1 La programmation web
1.2 Prsentation de PHP
1.3 Installation et configuration de PHP
Chapitre 2 Les bases du langage
2.1 Syntaxe du langage
2.2 Les structures de contrle
2.3 Fonctions
2.4 Programmation oriente objet
Chapitre 3 Fonctionnalits essentielles
3.1 Connexions et utilisateurs
3.2 Gestion des sessions
3.3 Autres fonctionnalits
Chapitre 4 Utilisation avance

3
5
18
29
38
40
78
112
126
138
140
149
169
180
2

4.1 Interoprabilit avec des applicatifs


4.2 Traitement des chanes de caractres
4.3 Fonctionnalits utiles
4.4 Conclusion

182
202
217
254

Chapitre 1
Alcve - Programmer en PHP

Introduction au langage

Introduction au langage
Alcve - Programmer en PHP

Objectifs du chapitre
Principes de la programmation web ;
Prsentation de PHP ;
Installation et configuration.

Section 1
Alcve - Programmer en PHP

La programmation web

La programmation web
Alcve - Programmer en PHP

Objectifs de la section
Rappels dHTML ;
Le web interactif ;
Notions de CGI ;
Distinction PHP/CGI.

La programmation web
Alcve - Programmer en PHP

Rappels dHTML
H yper T ext M arkup L anguage ;
Dfinit la structure logique dun document web ;
Compos dun ensemble de commandes de formatage ;
Bas sur la notion d environnement possdant un dbut et une fin
-> dlimiteurs : tags ou marqueurs.

La programmation web
Alcve - Programmer en PHP

Les marqueurs sont dfinis entre <> ;


Ex : <marqueur>...</marqueur>
La plupart des environnements peuvent tre imbriqus selon des
rgles bien dfinies ;
Ex : <H1><B>Mon titre</B></H1>
Il nest pas permis de faire chevaucher des environnements.
Ex : <H1><B>Mon titre</H1></B>

La programmation web
Alcve - Programmer en PHP

Structure gnrale dune page HTML :


<HTML>
<HEAD>
<TITLE>Mon titre</TITLE>
< !-- Mes commentaires -->
</HEAD>
<BODY>
<H1>Mon chapitre</H1>
<P>Mon paragraphe</P>
<ADDRESS>Mes coordonnes</ADDRESS>
</BODY>
</HTML>
10

La programmation web
Alcve - Programmer en PHP

Le web interactif
Deux principaux types dinteractions :
ct serveur ( Server-side scripting ),
ct client ( Client-side scripting ).
Chacun des types prcdents se divise encore en sous-catgories.

11

La programmation web
Alcve - Programmer en PHP

Ct client :
scripts embarqus dans la page HTML ( HTML-embedded
scripting ) -> Javascript...,
applets -> Java, ActiveX...,
plugins propritaires.

12

La programmation web
Alcve - Programmer en PHP

Ct serveur :
CGI -> Perl, C, Shell...,
Interprteurs intgrs au serveur HTTP
scripts embarqus dans la page HTML ( HTTPD modules ,
HTML-embedded scripting ) -> PHP , ASP-VBScript...,
scripts la CGI ( CGI-like ) -> mod_perl/Apache
Servlets -> Java.


13

La programmation web
Alcve - Programmer en PHP

WWW interactif

Server-side scripting
CGI (Perl,
C, Shell...)

Client-side scripting

Servlets
(Java)
Applets
(Java, ActiveX)

HTTPD modules
HTML-embedded scripting
(PHP, ASP-VBS)

HTML-embedded scripting
(JavaScript)

CGI-like
(mod_perl
/Apache)

14

La programmation web
Alcve - Programmer en PHP

Notions de CGI
C ommon G ateway I nterface ;
Interface de communication pour la cration de programmes
capables dtre excuts par un serveur HTTP ;
Permet la cration dynamique de pages du ct serveur ;
Gnralement utilis pour servir les requtes en provenance dune
page de formulaire HTML.

15

La programmation web
Alcve - Programmer en PHP

Principe de la CGI :

GET/POST
"emballage"

Formulaire
HTML
Browser

APPEL
"variables"
RSULTAT

RPONSE

Programme
externe
HTTP

Serveur HTTP

CGI

16

La programmation web
Alcve - Programmer en PHP

if ($want_page==1){ $want_page=0 ; }
Scnario de gnration dynamique de page via la CGI :
lutilisateur remplit un formulaire HTML et le valide,
le navigateur ouvre une connexion vers le serveur HTTP et lui
envoie la requte correspondante (nom du CGI + paramtres),
le serveur HTTP invoque le script CGI en lui transmettant les
paramtres de la requte,
le script CGI gnre une page correspondant aux paramtres,
le serveur envoie la page au navigateur et ferme la connexion,
le navigateur affiche la page.

17

La programmation web
Alcve - Programmer en PHP

Distinction PHP/CGI
Tous les deux sont situs ct serveur mais :
PHP : le code PHP est contenu dans les pages HTML
Ex : < ?php $username = "toto" ; ?> <HTML><BODY><H1>
Bonjour monsieur < ?php print $username ?>
</H1></BODY></HTML>
CGI : le code HTML est contenu dans le code du CGI
Ex : # !/usr/bin/perl -w
$username = "toto" ;
print "Content-Type : text/html\n\n" ;
<HTML><BODY><H1>Bonjour monsieur
$username</H1></BODY></HTML>" ;
18

Section 2
Alcve - Programmer en PHP

Prsentation de PHP

19

Prsentation de PHP
Alcve - Programmer en PHP

Objectifs de la section ;
Vue densemble du PHP ;
Lhistoire du langage ;
Ses avantages ;
Et ses inconvnients.

20

Prsentation de PHP
Alcve - Programmer en PHP

Vue densemble du PHP


A server-side, HTML-embedded scripting language
Langage de script ct serveur ;
Embarqu dans les pages HTML ;
Syntaxe hrite du C et du Perl ;
Extensible (nombreuses bibliothques) ;
Supporte pratiquement tous les standards du web ;
Logiciel Open Source (Licence PHP de type BSD).
21

Prsentation de PHP
Alcve - Programmer en PHP

Lhistoire du langage

Cr par Rasmus Lerdorf en 1994 pour des besoins personnels


( P ersonnal H ome P age) ;
Premire version publique en 1995 sous le nom de Personnal Home
Page Tools capable de grer un livre dor, un compteur daccs... ;

22

Prsentation de PHP
Alcve - Programmer en PHP

Deuxime version plus complte (PHP/FI) en 1995 avec gestion des


formulaires HTML et des bases mSQL ainsi quun nouvel
interprteur ;
PHP/FI est utilis par environ 50000 sites web en 1997 ;

23

Prsentation de PHP
Alcve - Programmer en PHP

En 1997, le projet devient un travail dquipe et linterprteur est


rcrit par Zeev Suraski et Andi Gutmans pour donner la version
PHP3 ;
La version 3 de PHP sest rapidement impose pour atteindre
environ 150000 sites web durant lt 1999 (source : Netcraft) et
devenir P HP : H ypertext P reProcessor ;

24

Prsentation de PHP
Alcve - Programmer en PHP

Aujourdhui le projet est chapeaut par Zend, une socit prive


cre par Suraskyi et Gutmans, qui commercialise des logiciels
complmentaires PHP ;
La dernire version en date est la PHP4 (2000). Elle possde un
interprteur optimis par Zend et souvre dautres serveurs HTTP
quApache.

25

Prsentation de PHP
Alcve - Programmer en PHP

26

Prsentation de PHP
Alcve - Programmer en PHP

Les avantages de PHP


Le client na pas accs au code source puisque celui-ci est interprt
avant envoi ( != Javascript) ;
Le client ne reoit que le rsultat de lexcution du script ;
On peut configurer le serveur HTTP pour masquer compltement la
qualit dynamique des pages ;
Le code nest pas alourdi par des commandes destines gnrer
la page HTML ( != CGI) ;

27

Prsentation de PHP
Alcve - Programmer en PHP

Le langage possde de nombreuses bibliothques/modules pour :


le calcul mathmatique,
la cration dynamique dimages,
la gestion de sessions,
les connexions scurises (SSL),
laccs la plupart des SGBD,
laccs aux bases LDAP...

28

Prsentation de PHP
Alcve - Programmer en PHP

Les inconvnients de PHP


Pas aussi rapide que mod_perl ou certains CGI mais plus portable ;
Pas aussi simple que ASP-VBScript mais plus respectueux des
standards web et sous licence Open Source (-> plus facilement
extensible) ;
Pas dinteractivit au niveau du client (-> on doit quand mme utiliser
du Javascript dans ces cas l).

29

Section 3
Alcve - Programmer en PHP

Installation et configuration de PHP

30

Installation et configuration de PHP


Alcve - Programmer en PHP

Objectifs de la section
Installation de PHP ;
Configuration via php3.ini/php.ini ;
Premier test ;
Ajout de nouveaux modules.

31

Installation et configuration de PHP


Alcve - Programmer en PHP

Installation
Trois types dinstallation :
module dynamique du serveur HTTP (ex : mod_php pour Apache),
module statique du serveur HTTP (20% plus rapide que
mod_php) qui ncessite de patcher le serveur HTTP et de tout
recompiler,
sous forme de CGI (pour les serveurs HTTP non supports).

32

Installation et configuration de PHP


Alcve - Programmer en PHP

Tlcharger des sources sur http ://fr.php.net (mirroir


franais du site officiel de PHP) ;
Installer les sources dans un rpertoire diffrent de celui du serveur
HTTP (ex : /usr/local/src/php/) avec la commande
tar -zxvf php-<version>.tar.gz -C
/usr/local/src/php/ ;
Configuration de linstallation :
./setup (configuration interactive), ou
./configure <options> (./configure --help pour
connatre toutes les options).

33

Installation et configuration de PHP


Alcve - Programmer en PHP

Compilation et installation :
make ; su ; make install
Association des fichiers contenant du code PHP avec linterprteur
PHP dans la configuration du serveur HTTP
Ex : serveur Apache (srm.conf ou httpd.conf)
PHP3 -> AddType application/x-httpd-php3 .php
PHP4 -> AddType application/x-httpd-php .php
Sous Debian, tout ceci est simplifi grce lutilitaire apt-get
(remplacer php3 par php4 pour PHP4) :
apt-get install php3 pour le module dynamique Apache, ou
apt-get install php3-cgi pour le CGI.
34

Installation et configuration de PHP


Alcve - Programmer en PHP

Configuration de PHP (php3.ini/php.ini)


Gnralement dans /etc/php<version>/apache/ ou
/usr/lib/php<version>/ ;
Ce fichier (php3.ini pour PHP3 et php.ini pour PHP4) contrle
les principaux comportements de PHP ;
Trs clair et facilement configurable ;
Syntaxe :
clef = valeur,
clef = "valeur complexe",
; commentaire,
boolen -> 1, On, True, Yes / 0, Off, False, No.
35

Installation et configuration de PHP


Alcve - Programmer en PHP

Segment en parties :
options du langage,
ressources maximales alloues PHP,
gestion des erreurs,
gestion des donnes HTTP,
fichiers et rpertoires,
extensions dynamiques (modules),
configuration des modules.
Pour que PHP prenne les modifications en compte il faut relancer le
serveur HTTP (ex : serveur Apache -> apachectl restart).

36

Installation et configuration de PHP


Alcve - Programmer en PHP

Premier test
Crer le fichier test.php :
< ?php phpinfo() ; ?>
Placer ce fichier la racine du serveur HTTP (ou dans le rpertoire
doc_root si vous avez activ loption safe_mode) ;
Charger lURL http ://localhost/test.php sur votre
navigateur web ;
Bravo ! Vous avez cr votre premire page dynamique avec PHP et
en plus elle vous rsume toutes les fonctionnalits PHP qui sont
configures sur votre machine.
37

Installation et configuration de PHP


Alcve - Programmer en PHP

Installer un nouveau module PHP


Placer le nouveau fichier <nom>.so dans extension_dir (par
dfaut /usr/lib/php<version>/apache mais configurable dans
php3.ini/php.ini) ou utiliser apt-get install
php<version>_<nom> sous Debian ;
Ajouter la ligne extension=<nom>.so dans php3.ini/php.ini ;
Configurer les aspects relatifs au module dans
php3.ini/php.ini ;
Redmarrer le serveur HTTP.

38

Chapitre 2
Alcve - Programmer en PHP

Les bases du langage

39

Les bases du langage


Alcve - Programmer en PHP

Objectifs du chapitre
Syntaxe du langage ;
Les structures de contrle ;
Fonctions ;
Programmation oriente objet.

40

Section 1
Alcve - Programmer en PHP

Syntaxe du langage

41

Syntaxe du langage
Alcve - Programmer en PHP

Objectifs de la section
Syntaxe de base ;
Les types de donnes ;
Les variables ;
Les constantes ;
Les oprateurs.

42

Syntaxe du langage
Alcve - Programmer en PHP

Syntaxe de base
Quatre moyens quivalents pour passer du mode HTML au PHP :
standard :
< ?php ...mon code PHP... ?>,
option short_open_tag :
< ? ...mon code PHP... ?>,
option asp_tags :
<% ...mon code PHP... %>,
marqueur script du HTML :
<script language="php"> ...mon code PHP...
</script>.

43

Syntaxe du langage
Alcve - Programmer en PHP

Bases de la syntaxe hrites du C et du Perl :


sparateur dinstructions -> ;
commentaires :
...code /* ...mes commentaires... */ code...,
...code... // ...mes commentaires...,
...code... # ...mes commentaires....


44

Syntaxe du langage
Alcve - Programmer en PHP

Les types de donnes


PHP supporte les types de donnes suivants :
nombres entiers,
nombres virgule flottante,
chanes de caractres,
tableaux,
objets (dvelopps dans la section programmation oriente
objet).
Tous les noms de variables sont prcds dun $
(ex : $toto = 5 ;) ;

45

Syntaxe du langage
Alcve - Programmer en PHP

Il est possible de spcifier une variable de type entier de la faon


suivante :
$toto = 123 ; # est un entier en base 10,
$toto = -123 ; # est un entier ngatif,
$toto = 0123 ; # est un entier en base 8,
$toto = 0x123 ; # est un entier en base 16.
Il est possible de spcifier une variable de type flottant ou double de
la faon suivante :
$titi = 1.234 ; # est un nombre virgule flottante,
$titi = 1.2e3 ; # est aussi un nombre virgule flottante.

46

Syntaxe du langage
Alcve - Programmer en PHP

Il est possible de spcifier une variable de type chane de caratres


de la faon suivante :
$personne = M. Smith ; # est une chane de caractres,
$personne = "M. Smith" ; # est aussi une chane de
caractres.
Dans le deuxime cas, si la chane contient des noms de variables,
celles-ci seront remplaces par leur valeur ;
Ex :
$type = M. ;
$nom = "Smith" ;
$personne = "$type $nom" ;
Equivalent $personne = M. Smith ;.
47

Syntaxe du langage
Alcve - Programmer en PHP

Quand on utilise les "..." on doit donc chapper certains caractres


avec un backslash (\) pour pouvoir les afficher comme tels :
dollar ($) : \$,
double quotes (") : \",
backslash (\) : \\.
De mme, il existe des caractres spciaux qui ncessitent dtre
chapps :
nouvelle ligne : \n,
retour la ligne : \r,
tabulation : \t.
Tout autre caractre chapp gnrera un avertissement ( warning ) ;

48

Syntaxe du langage
Alcve - Programmer en PHP

Lorsquune chane de caractres est value comme une valeur


numrique, les rgles suivantes sappliquent :
la chane est de type flottant/double si elle contient ., e ou E
sinon elle est de type entier ,
la valeur est dfinie par la premire partie de la chane (0 si cest
du texte),
lorsque la premire expression est une chane, le type de la
variable dpend de la seconde expression.
Ex :
$toto = 1 + "4.5" ; # $toto vaut 5.5
$toto = 1 + "-1e3" ; # $toto vaut -999
$toto = 1 + "titi + 149" ; # $toto vaut 1
$toto = 1 + "149 + titi" ; # $toto vaut 150
49

Syntaxe du langage
Alcve - Programmer en PHP

Les tableaux de PHP ressemblent aux tableaux associatifs


( hash-tables ) du Perl ;
Lindex dans le tableau est appell cl et peut tre indiffremment un
entier ou une chane de caractres ;
La valeur associe une cl est appele valeur ;
On peut utiliser la fonction array() pour crer un tableau ;
On peut aussi affecter directement les valeurs au tableau ;
La fonction list() permet daffecter des variables comme si elles
constituaient un tableau ;
50

Syntaxe du langage
Alcve - Programmer en PHP

Ex :
$tab[0] = 1 ;
$tab[1] = "toto" ; # on peut mlanger les contenus
$tab["toto"] = "titi" ; # on peut mlanger les cls
$tab["toto"][8] ; # tableau deux dimensions
$tab["toto"][8]["encore"][2] ; # quatre dimensions
$suite = array(1, 2, 3, 4) ;
$personne = array("type" => "M.", "nom" =>
"Smith") ;
list($num1, $num2) = $suite ; # $num1 vaut 1 et $num2
vaut 2
51

Syntaxe du langage
Alcve - Programmer en PHP

On peut connatre le nombre dlments dun tableau grce aux


fonctions :
sizeof() : retourne le nombre dlments dun tableau, ou
count() : retourne le nombre dlments dun tableau sil existe,
1 si la variable nest pas un tableau et 0 si la variable nexiste pas.

52

Syntaxe du langage
Alcve - Programmer en PHP

Chaque tableau entretient un pointeur courant qui sert naviguer en


son sein grce aux fonctions :
reset() : place le pointeur interne sur le premier lment et
retourne sa valeur,
current() : retourne la valeur de l lment courant ,
next() : place le pointeur interne sur l lment suivant et
retourne sa valeur,
prev() : place le pointeur interne sur l lment prcdent et
retourne sa valeur,
each() : retourne la paire cl/valeur courante du tableau et
avance le pointeur sur llment suivant (cest la seule fonction qui
ne retourne pas faux si llment vaut 0 ou "").

53

Syntaxe du langage
Alcve - Programmer en PHP

Un tableau peut tre tri en utilisant les fonctions suivantes :


asort()/arsort() : trient le tableau en ordre
croissant/dcroissant de valeurs ,
ksort()/rsort() : trient le tableau en ordre
croissant/dcroissant de cls ,
sort() : trie le tableau en ordre croissant cls et valeurs (on
perd la correspondance cl/valeur),
uasort()/uksort()/usort() : trient le tableau de la mme
faon que leurs quasi-homonymes (u pour user ) mais avec une
fonction de comparaison fournie par lutilisateur.

54

Syntaxe du langage
Alcve - Programmer en PHP

Ex :
function cmp($a, $b) {
if ($a == $b) return 0 ;
return ($a > $b) ? -1 : 1 ;
}
$tab = array(3,2,5,6,1) ;
usort($tab, cmp) ;
while(list($cle, $valeur) = each($tab)) {
echo "tab[$cle] = $valeur<BR>\n" ;
}
Ce programme est quivalent rsort().
55

Syntaxe du langage
Alcve - Programmer en PHP

Les variables
La porte dune variable dpend du contexte dans lequel elle est
dfinie ;
La plupart des variables ont une porte qui stend sur lintgralit
du script PHP, elles sont globales ;
Cependant, les variables sont locales au sein dune fonction ;

56

Syntaxe du langage
Alcve - Programmer en PHP

Ex :
$toto = 1 ; # porte globale
function affiche () {
echo $toto ; # porte locale
}
affiche() ;
Cet exemple naffichera rien car echo() utilise la variable locale
$toto.

57

Syntaxe du langage
Alcve - Programmer en PHP

Deux faons existent pour accder une variable globale au sein


dun bloc :
dclarer la variable comme global au sein du bloc,
utiliser le tableau associatif $GLOBALS avec comme cl le nom de
la variable globale.

58

Syntaxe du langage
Alcve - Programmer en PHP

Ex :
$toto = 1 ; # porte globale
$titi = 2 ; # porte globale
function affiche () {
global $toto ; # porte globale
echo "$toto et $GLOBALS[titi]" ;}
affiche() ;
Cet exemple affichera 1 et 2.

59

Syntaxe du langage
Alcve - Programmer en PHP

Variables statiques :
Une variable statique est une variable locale qui ne perd pas sa
valeur chaque fois que le bloc est excut ;
On utilise, comme en C, lattribut static pour dclarer une telle
variable :
Ex : static $toto ;
Ce type de variables est trs utile pour la cration de fonctions
rcursives ;

60

Syntaxe du langage
Alcve - Programmer en PHP

Ex : compter rcursivement jusqu 10


function compte () {
static $compteur = 0 ;
$compteur++ ;
echo "$compteur " ;
if ($compteur < 10) compte() ;
}
compte() ;
Affiche 1 2 3 4 5 6 7 8 9 10.

61

Syntaxe du langage
Alcve - Programmer en PHP

Variables dynamiques :
Une variable dynamique prend la valeur dune variable et lutilise
comme nom dune autre variable ;
Ex :
$toto = "Hello" ; # $toto vaut Hello
$$toto = "World" ; # $Hello vaut World
echo "$toto $Hello !" ; # affiche Hello World !
echo "$toto ${$toto} !" ; # affiche aussi Hello World !

62

Syntaxe du langage
Alcve - Programmer en PHP

Le nom dune variable peut tre plac entre accolades pour viter
les ambiguts ;
Ex :

$a[1] = "V1" ;

$a = "V2" ;

$b = "a" ;

$b[1] = "a" ;

Rsultat : ${$b}[1] == "V1"

Rsultat : ${$b[1]} == "V2"

Conclusion : ${$b}[1] et ${$b[1]} sutilisent dans 2 contextes


diffrents.

63

Syntaxe du langage
Alcve - Programmer en PHP

Variables extrieures :
Toutes les variables transmises par les mthodes POST ou GET sont
accessibles via les tableaux associatifs $HTTP_POST_VARS et
$HTTP_GET_VARS (si loption track_vars est active dans
php3.ini/php.ini) ;
Les variables denvironnement sont accessibles comme des
variables PHP classiques (ex : $HOME) ;
On peut aussi utiliser les fonctions getenv() et putenv() pour
manipuler les variables denvironnement ;

64

Syntaxe du langage
Alcve - Programmer en PHP

Variables prdfinies :
Certaines variables sont prdfinies par PHP, elles sont disponibles
pendant toute lexcution du script.
PHP_SELF

URI du script en cours dexcution.

GLOBALS

Tableau des variables globales.

HTTP_GET_VARS

Tableau des variables issues de GET.

HTTP_POST_VARS

Tableau des variables issues de POST.

HTTP_COOKIE_VARS

Tableau des variables issues des cookies.

65

Syntaxe du langage
Alcve - Programmer en PHP

Variables denvironnement CGI :


SERVER_SOFTWARE

SERVER_NAME

GATEWAY_INTERFACE

SERVER_PROTOCOL

SERVER_PORT

REQUEST_METHOD

PATH_INFO

PATH_TRANSLATED

SCRIPT_NAME

QUERY_STRING

REMOTE_HOST

REMOTE_ADDR

AUTH_TYPE

REMOTE_USER

REMOTE_IDENT

CONTENT_TYPE

CONTENT_LENGTH

http ://hoohoo.ncsa.uiuc.edu/cgi/env.html

66

Syntaxe du langage
Alcve - Programmer en PHP

Pour dterminer le type dune variable on peut utiliser les fonctions


suivantes :
gettype() : retourne une chaine dcrivant le type de la variable
passe en argument ( integer , double , string , array , object ,
unknown type ),
is_long()/is_int()/is_integer() : retourne true si la
variable passe en argument est un entier et false dans le cas
contraire,
is_double()/is_float : idem mais avec les flottants/doubles,
is_string() : idem mais avec les chanes de caractres,
is_array() : idem mais avec les tableaux,
is_object() : idem mais avec les objets.

67

Syntaxe du langage
Alcve - Programmer en PHP

Les constantes
PHP dfinit certaines constantes et propose un mcanisme pour en
dfinir dautres durant lexcution du script ;
On dfinit une constante en utilisant la fonction define() ;
Ex :
define("MA_CONSTANTE", "Bonjour") ;
echo MA_CONSTANTE ; # affiche Bonjour

68

Syntaxe du langage
Alcve - Programmer en PHP

Les principales constantes dfinies par PHP sont les suivantes :


__FILE__ : nom du fichier actuellement excut,
__LINE__ : numro de la ligne qui est actuellement excute,
PHP_VERSION : prsentation de la version du PHP utilise (ex :
3.0.8-dev),
PHP_OS : systme dexploitation utilis par la machine qui fait
tourner le PHP (ex : Linux),
TRUE : vrai,
FALSE : faux,
E_* : gestion des erreurs (cf. section correspondante).

69

Syntaxe du langage
Alcve - Programmer en PHP

Les oprateurs
Les oprateurs arithmtiques :
addition : $a + $b,
soustraction : $a - $b,
multiplication : $a * $b,
division : $a / $b,
modulo (reste de la division entire) : $a % $b.

70

Syntaxe du langage
Alcve - Programmer en PHP

Loprateur sur les chanes de caractres :


concatnation : chaine1 . chaine2
Ex :
$jour = "Lundi" ;
echo Nous sommes . $jour . " !" ;
Affiche Nous sommes Lundi !

71

Syntaxe du langage
Alcve - Programmer en PHP

Les oprateurs sur les bits :


ET bit bit : $a & $b,
OU bit bit : $a | $b,
OU-Exclusif/XOR bit bit : $a $b,
NON bit bit : $a,
dcalage droite de $b bits : $a > > $b,
dcalage gauche de $b bits : $a < < $b.

72

Syntaxe du langage
Alcve - Programmer en PHP

Les oprateurs logiques :


ET (vrai si $a et $b vrais) :
$a and $b,
$a && $b.
OU (vrai si $a ou $b vrai(s)) :
$a or $b,
$a || $b.
OU-Exclusif/XOR (vrai si seul $a ou $b vrai) : $a xor $b,
NON (vrai si $a est faux) : !$a.


73

Syntaxe du langage
Alcve - Programmer en PHP

Les oprateurs daffectation :


loprateur daffectation le plus simple est le signe =,
il ne signifie pas "gal " mais que loprande gauche du signe =
se voit affect de la valeur de loprande de droite,
la valeur retourne par une expression dassignement est la valeur
assigne,
Ex : $a = ($b = 4) + 3 ; # $a vaut 7 et $b vaut 4

74

Syntaxe du langage
Alcve - Programmer en PHP

il existe en plus des oprateurs combins pour tous les oprateurs


arithmtiques, les oprateurs bits bits et loprateur de
concatnation,
+=

-=

*=

/=

%=

.=

&=

|=

< <=

> >=

ceux-ci permettent dutiliser la valeur dune variable dans une


expression et daffecter le rsultat de cette expression cette
variable,
Ex : $toto += 3 # quivaut $toto = $toto + 3

75

Syntaxe du langage
Alcve - Programmer en PHP

loprateur ++ est quivalent += 1,


loprateur -- est quivalent -= 1,
ces deux oprateurs peuvent tre placs avant (pr-excution) ou
aprs (post-excution) la variable laquelle ils sappliquent.
Ex :
$toto = 0 ;
echo ++$toto ; # affiche 1
echo $toto++ ; # affiche 1
echo $toto ; # affiche 2

76

Syntaxe du langage
Alcve - Programmer en PHP

Les oprateurs de comparaison :


gal : $a == $b,
diffrent de : $a != $b,
suprieur : $a > $b,
infrieur : $a < $b,
suprieur ou gal : $a >= $b,
infrieur ou gal : $a <= $b.

77

Syntaxe du langage
Alcve - Programmer en PHP

Loprateur ternaire :
issu du langage C,
(condition) ? (expression1) : (expression2) ;,
renvoie expression1 si condition est vraie et expression2
dans le cas contraire.
Ex :
echo $toto == 0 ? "Nul" : "Non nul" ;
# affiche Nul si $toto vaut 0 et Non nul sinon

78

Section 2
Alcve - Programmer en PHP

Les structures de contrle

79

Les structures de contrle


Alcve - Programmer en PHP

Objectifs de la section
Introduction ;
Instructions conditionnelles ;
Boucles ;
Inclusions.

80

Les structures de contrle


Alcve - Programmer en PHP

Introduction
Tous les scripts PHP sont une suite dinstructions ;
Une instruction peut tre :
un assignement,
un appel de fonction,
une instruction conditionnelle, ou
une instruction qui ne fait rien (une instruction vide).
Une instruction se termine habituellement par un point virgule ( ;) ;

81

Les structures de contrle


Alcve - Programmer en PHP

Plusieurs instructions peuvent tre regroupes en bloc , dlimit par


des accolades ({...}) ;
Un bloc est considr comme une instruction ;
Les diffrents types dinstructions sont dcrits dans ce chapitre.

82

Les structures de contrle


Alcve - Programmer en PHP

Instructions conditionnelles
Linstruction if est une des plus importantes instructions de tous les
langages, PHP inclus ;
Elle permet lexcution conditionnelle dune partie de code ;
Les fonctionnalits de linstruction if sont les mmes en PHP quen
C;

83

Les structures de contrle


Alcve - Programmer en PHP

Prototype :
if (condition) {
# instructions excuter si la condition est vraie...
}
Une chaine de caractre ne contenant que 0 sera value comme
fausse ;

84

Les structures de contrle


Alcve - Programmer en PHP

Souvent on souhaite excuter une instruction si une condition est


remplie, et une autre instruction si cette condition nest pas remplie ;
Cest le rle du else ;
Prototype :
if (condition) {
# instructions excuter si la condition est vraie...
} else {
# instructions excuter si la condition est fausse...
}

85

Les structures de contrle


Alcve - Programmer en PHP

elseif permet, comme lexpression else, dexcuter une


instruction aprs un if dans le cas o ce dernier est valu comme
faux ;
A la diffrence de lexpression else, il nexcutera les instructions
que si lexpression condionnelle elseif est value comme vraie ;

86

Les structures de contrle


Alcve - Programmer en PHP

Prototype :
if (condition1) {
# instructions excuter si la condition1 est vraie...
} elseif (condition2) {
# instructions excuter si la condition2 est vraie...
} elseif (condition3) {
# instructions excuter si la condition3 est vraie...
...
} else {
# instructions excuter si aucune des conditions nest vraie...
}
87

Les structures de contrle


Alcve - Programmer en PHP

La syntaxe du if que nous venons de voir est directement hrite


du langage C ;
Pas toujours trs adapte pour mlanger code PHP et HTML ;
PHP propose donc une autre syntaxe pour le if qui permet
damliorer la lisibilit ;

88

Les structures de contrle


Alcve - Programmer en PHP

Prototype simplifi :
if (condition1) :
# instructions excuter si la condition1 est vraie...
elseif (condition2) :
# instructions excuter si la condition2 est vraie...
elseif (condition3) :
# instructions excuter si la condition3 est vraie...
...
else :
# instructions excuter si aucune des conditions nest vraie...
endif ;
89

Les structures de contrle


Alcve - Programmer en PHP

Ex :
if ($type == "Femme") {
echo "Bonjour Madame" ;
} elseif ($type == "Homme") {
echo "Bonjour Monsieur" ;
} else {
echo "Bonjour, vous tes bizarre !" ;
}

90

Les structures de contrle


Alcve - Programmer en PHP

Boucles
La boucle while est le moyen le plus simple dimplmenter une
boucle en PHP ;
Cette boucle se comporte de la mme manire quen C : les
instructions sont excutes tant que lexpression est vraie ;
La valeur de lexpression est vrifie chaque dbut de boucle ;

91

Les structures de contrle


Alcve - Programmer en PHP

Si la valeur change durant lexcution de linstruction, lexcution ne


sarrtera qu la fin de litration ;
Comme avec le if, PHP dfinit une syntaxe simplifie, en plus de
celle hrite du langage C ;

92

Les structures de contrle


Alcve - Programmer en PHP

Prototype :
while (condition) {
# instructions excuter tant que la condition est vraie...
}
Prototype simplifi :
while (condition) :
# instructions excuter tant que la condition est vraie...
endwhile ;

93

Les structures de contrle


Alcve - Programmer en PHP

Ex : compter jusqu 10
$i = 1 ;
while ($i <= 10) {
echo "$i " ;
$i++ ;
}
Affiche 1 2 3 4 5 6 7 8 9 10.

94

Les structures de contrle


Alcve - Programmer en PHP

La boucle do..while ressemble beaucoup la boucle while ;


La diffrence est que lexpression est teste la fin de chaque
itration au lieu du dbut ;
La premire itration de la boucle est donc toujours excute ;
Il ny a quune syntaxe possible pour les boucles do..while qui est,
elle aussi, hrite du langage C ;

95

Les structures de contrle


Alcve - Programmer en PHP

Prototype :
do {
# instructions excuter la premire fois et ensuite tant que la
condition est vraie...
} while (condition) ;

96

Les structures de contrle


Alcve - Programmer en PHP

Ex : compter jusqu 10
$i = 1 ;
do {
echo "$i " ;
$i++ ;
} while ($i <= 10) ;
Affiche 1 2 3 4 5 6 7 8 9 10.

97

Les structures de contrle


Alcve - Programmer en PHP

La boucle for est, en PHP tout comme en C, la boucle la plus


complexe mais aussi la plus puissante ;
Elle fonctionne comme la boucle for du langage C ;
Prototype :
for (expression1 ; condition ; expression2) {
# instructions excuter tant que la condition est vraie...
}

98

Les structures de contrle


Alcve - Programmer en PHP

Lexpression1 est value (excute) quoi quil arrive au dbut de


la boucle ;
Au dbut de chaque itration, la condition est value ;
si elle est vraie, la boucle continue et les instructions sont
nouveau excutes,
si elle est fausse, lexcution de la boucle sarrte.
A la fin de chaque itration, lexpression2 est value (excute) ;

99

Les structures de contrle


Alcve - Programmer en PHP

Les expressions/conditions peuvent ventuellement tre laisses


vides (-> attention aux boucles infinies) ;
Comme avec le if et le while, PHP dfinit une syntaxe simplifie,
en plus de celle hrite du langage C ;
Prototype simplifi :
for (expression1 ; condition ; expression2) :
# instructions excuter tant que la condition est vraie...
endfor ;

100

Les structures de contrle


Alcve - Programmer en PHP

Ex : compter jusqu 10
for ($i = 1 ; $i <= 10 ; $i++) {
echo "$i " ;
}
Ex2 : compter jusqu 10
for ($i = 1 ; $i <= 10 ; print "$i ", $i++) ;
Ex3 : compter jusqu 10
for ($i = 1 ; $i <= 10 ; print $i++) ;
Ces 3 exemples affichent 1 2 3 4 5 6 7 8 9 10.
101

Les structures de contrle


Alcve - Programmer en PHP

PHP4 dfinit une boucle foreach, comme en Perl, pour raliser une
boucle sur les lments dun tableau ;
En PHP3 on peut raliser lquivalent avec une boucle while et les
fonction list() et each() que nous avons vu prcdemment ;
Ex : afficher tous les arguments dun formulaire POST
while (list($cle, $valeur) =
each($HTTP_POST_VARS)) {
echo "$cle => $valeur, " ;
}

102

Les structures de contrle


Alcve - Programmer en PHP

Avec linstruction foreach cette boucle devient :


foreach ($HTTP_POST_VARS as $cle => $valeur) {
echo "$cle => $valeur, " ;
}
Ou bien, si lon ne veut rcuprer que les valeurs :
foreach ($HTTP_POST_VARS as $valeur) {
echo "$valeur, " ;
}

103

Les structures de contrle


Alcve - Programmer en PHP

Linstruction break permet de sortir dune boucle nimporte quel


moment ;
Ex : compter jusqu 10
for ($i = 1, , $i++) {
if ($i > 10) break ;
echo "$i " ;
}
Affiche 1 2 3 4 5 6 7 8 9 10.

104

Les structures de contrle


Alcve - Programmer en PHP

Linstruction continue permet dignorer les instructions restantes


dans la boucle et de passer directement litration suivante ;
Ex : compter 2 par 2 jusqu 10
for ($i = 1, $i <= 10, $i++) {
if ($i % 2) continue ; # $i impaire
echo "$i " ;
}
Affiche 2 4 6 8 10.

105

Les structures de contrle


Alcve - Programmer en PHP

Linstruction switch quivaut une serie dinstructions


if..elseif..elseif....else ;
Elle est utilise pour comparer la mme variable (ou expression)
avec un grand nombre de valeurs diffrentes et dexcuter
diffrentes parties de code suivant la valeur laquelle elle est gale ;

106

Les structures de contrle


Alcve - Programmer en PHP

Prototype :
switch (expression) {
case resultat1 :
# instructions excuter si lexpression vaut resultat1...
break ;
case resultat2 :
# instructions excuter si lexpression vaut resultat2...
break ;
...
default :
# instructions excuter en dernier recours...
}
107

Les structures de contrle


Alcve - Programmer en PHP

Linstruction switch excute chacune des clauses dans lordre


dcriture ;
Elle est excute ligne par ligne ;
Aucun code nest excut jusqu ce que le premier case soit
vrifi ;

108

Les structures de contrle


Alcve - Programmer en PHP

Lorsquil trouve le premier case vrifi, PHP excute alors les


instructions correspondantes et continue jusqu la fin du bloc
switch ;
Pour reproduire le fonctionnement dun
if..elseif..elseif....else, il faut terminer tous les cases
par des break ;
On peut dfinir un case excut par dfaut (quivalent au else)
grce default ;

109

Les structures de contrle


Alcve - Programmer en PHP

Ex :
switch ($type) {
case "Femme" :
echo "Bonjour Madame" ;
break ;
case "Homme" :
echo "Bonjour Monsieur" ;
break ;
default :
echo "Bonjour, vous tes bizarre !" ;
}
110

Les structures de contrle


Alcve - Programmer en PHP

Inclusions
La fonction require() se substitue elle-mme avec le contenu du
fichier spcifi en argument ;
La substitution sopre avant linterprtation du code ;
Elle ressemble peu prs au #include du C ;
Si on lutilise au sein dune boucle, cest le fichier tel quil tait la
premire itration qui sera rutilis chaque itration (mme sil a
chang entre temps) ;
De plus, il est dconseill dutiliser require() avec un nom de
fichier dynamique (contenant une variable) ;
111

Les structures de contrle


Alcve - Programmer en PHP

La fonction include() inclut et value le fichier spcifi en


argument ;
Ceci est fait chaque fois que la fonction est rencontre ;
On peut donc utiliser cette fonction au sein dune boucle pour inclure
un fichier diffrent chaque fois par exemple (ex :
include("toto_$i") ;).

112

Section 3
Alcve - Programmer en PHP

Fonctions

113

Fonctions
Alcve - Programmer en PHP

Objectifs de la section
Prsentation des fonctions PHP ;
Les valeurs de retour ;
Les arguments.

114

Fonctions
Alcve - Programmer en PHP

Prsentation des fonctions PHP


Une fonction peut tre dfinie en utilisant la syntaxe suivante :
function ma_fonction ($arg_1, $arg_2, ..., $arg_n)
{
# Corps de ma fonction...
return $valeur_de_retour ;
}
Tout code PHP correct syntaxiquement peut apparatre dans une
fonction et dans une dfinition de classe ;
En PHP3 toute fonction doit tre pralablement dfinie avant dtre
utilise (idem langage C). Elle peut tre dfinie nimporte o en
PHP4.
115

Fonctions
Alcve - Programmer en PHP

Les valeurs de retour


Les valeurs sont renvoyes en utilisant une instruction de retour
optionnelle ;
Tous les types de variables peuvent tre renvoys (tableaux et objets
compris) ;
Ex :
function carre($nombre) {
return $nombre * $nombre ;
}
echo carre(3) ; # affiche la valeur 9
116

Fonctions
Alcve - Programmer en PHP

On ne peut pas renvoyer plusieurs valeurs en mme temps mais on


peut obtenir un rsultat identique en renvoyant un tableau ;
Ex :
function couleurs() {
return array("Coeur", "Pique", "Trfle",
"Carreau") ;
}
list($c1, $c2, $c3, $c4) = couleurs() ;

117

Fonctions
Alcve - Programmer en PHP

PHP4 permet galement le retour de fonction par rfrence ;


Ce mcanisme est utile lorsque lon cherche utiliser une fonction
pour trouver une variable que lon veux lier ;
A la diffrence du passage par rfrence, il faut utiliser un & deux
endroits :
pour indiquer que lon retourne une rfrence (et non une copie
comme lhabitude), mais aussi
pour indiquer quune liaison une rfrence et non un simple
assignement de variable doit avoir lieu avec la variable de retour.

118

Fonctions
Alcve - Programmer en PHP

Ex :
function & trouve_variable ($param) {
# ...recherche de la variable $toto...
return $toto ;
}
$titi = & trouve_variable($tata) ;
$titi->x = 2 ;
Les proprits de lobjet retourn par la fonction
trouve_variable() sont lies $titi. Il ne sagit pas dune
copie de $toto.

119

Fonctions
Alcve - Programmer en PHP

Les arguments
Des informations peuvent tre passes une fonction en utilisant un
tableau darguments dont chaque lment est spar par une
virgule ;
Un lment peut tre une variable ou une constante ;
PHP supporte :
le passage darguments par valeur (mthode par dfaut),
le passage darguments par rfrence, et
les valeurs par dfaut des arguments.
Une liste darguments dont le nombre est variable ne fonctionne pas
en PHP mais un rsultat similaire peut tre obtenu en utilisant un
tableau ;
120

Fonctions
Alcve - Programmer en PHP

Passage darguments par valeur :


Cest la mthode par dfaut ;
Les variables ne sont pas affectes par des changements au sein
de la fonction ;
On peut donc changer la valeur des arguments au sein de la fonction
sans que ceci ait des rpercussions lextrieur de celle-ci ;

121

Fonctions
Alcve - Programmer en PHP

Ex :
function ajoute_deux($nombre) {
$nombre += 2 ;
echo $nombre ;
}
$toto = 3 ;
ajoute_deux($toto) ; # affiche 5
echo $toto ; # affiche 3

122

Fonctions
Alcve - Programmer en PHP

Passage darguments par rfrence :


Les variables sont affectes par des changements au sein de la
fonction ;
Deux possibilits :
de faon permanente en ajoutant un & devant le nom de la
variable dans la dfinition de la fonction, ou
de faon ponctuelle en ajoutant un & devant le nom de la variable
lors de lappel la fonction.

123

Fonctions
Alcve - Programmer en PHP

Ex :
function retranche_deux( & $nombre) {
$nombre -= 2 ;
echo $nombre ;
}
$toto = 3 ;
ajoute_deux( & $toto) ; # affiche 5
echo $toto ; # affiche 5
retranche_deux($toto) ; # affiche 3
echo $toto ; # affiche 3
124

Fonctions
Alcve - Programmer en PHP

Valeurs par dfaut des arguments :


PHP permet, comme en C++, de spcifier des valeurs par dfaut
pour les arguments de type scalaire ;
Il suffit de spcifier la valeur par dfaut avec un = dans la dclaration
de la fonction ;
Cette valeur doit tre une constante (pas de variables ni dattributs
de classes) et les arguments par dfaut doivent tre les derniers
dans la liste ;

125

Fonctions
Alcve - Programmer en PHP

Ex :
function annotation($type = "assez bien") {
echo "Vous avez $type travaill" ;
}
annotation("mal") ; # affiche Vous avez mal travaill
annotation() ; # affiche Vous avez assez bien travaill

126

Section 4
Alcve - Programmer en PHP

Programmation oriente objet

127

Programmation oriente objet


Alcve - Programmer en PHP

Objectifs de la section
Rappels sur la programmation oriente objet ;
Les classes en PHP ;
Les objets en PHP ;
Particularits de PHP.

128

Programmation oriente objet


Alcve - Programmer en PHP

Rappels sur la programmation oriente objet


POO -> raisonner en termes de fonctionnalits et de proprits et
non en terme de traitements ;
L encapsulation :
Lobjet reprsente une abstraction dune entit abstraite ou concrte
pour laquelle il regroupe en une mme structure les donnes et les
traitements ;
Un objet possde des caractristiques et des fonctionnalits et on
lutilise sans savoir comment elles sont implmentes (ex : un
tlphone) ;
129

Programmation oriente objet


Alcve - Programmer en PHP

Les caractristiques/fonctionnalits non utiles pour la manipulation


de lobjet mais utiles son fonctionnement sont masques
lutilisateur (ex : les composants internes du tlphone) ;
L hritage :
Un objet peut driver dun autre objet et possder des
caractristiques/fonctionnalits supplmentaires tout en hritant des
caractristiques/fonctionalits de son aeul (ex : un tlphone sans
fils est un tlphone un peu particulier) ;

130

Programmation oriente objet


Alcve - Programmer en PHP

Le polymorphisme :
Lorsquon invoque une mthode dun objet, le programme saura
retrouver la mthode parmis celles des aeux de lobjet si celle-ci
nest pas explicitement dfinie pour lui mais quil en a hrit (ex : la
mthode "dcrocher le tlphone" pour un sans fils) ;

131

Programmation oriente objet


Alcve - Programmer en PHP

A la cration ( instanciation ) de lobjet, une mthode (qui porte


gnralement le mme nom que la classe) est appelle
automatiquement : cest le constructeur ;
Parfois, la destruction de lobjet, une mthode (qui porte
gnralement le mme nom que la classe prcd dun ) est
appelle automatiquement : cest le destructeur ;

132

Programmation oriente objet


Alcve - Programmer en PHP

Une classe est une collection de variables ( attributs ) et de fonctions


( mthodes ) qui sappliquent ces variables ;
Un objet est une instance dune classe. Son type de donnes est la
classe dobjets laquelle il appartient (un peu comme $toto =
123 ; est une instance du type entier ).

133

Programmation oriente objet


Alcve - Programmer en PHP

Les classes en PHP


En PHP, on dfinit une classe dobjets de la faon suivante :
class MaClasse {
# Attributs
var $monAttribut ;
# Mthodes
function maMethode($argument) {
# ...traitement de $monAttribut avec $argument...
}
}
134

Programmation oriente objet


Alcve - Programmer en PHP

Les objets en PHP


Il est possible de spcifier une variable objet de la faon suivante :
$monObjet = new MaClasse ;
On accde un attribut ou une mthode de la faon suivante :
$monObjet->monAttribut = "toto" ;
$monObjet->maMethode(23) ;

135

Programmation oriente objet


Alcve - Programmer en PHP

Particularits de PHP
Tous les attributs et mthodes sont publics ;
Les objets sont librs automatiquement quand ils ne sont plus
utiliss ( Garbage Collector ) ;
Pas de destructeur.

136

Programmation oriente objet


Alcve - Programmer en PHP

Ex : le Caddie
class Caddie {
var $elements ; # lments de notre Caddie
# Constructeur qui ajoute un cadeau chaque nouveau Caddie
function Caddie() {
$this->ajoute(1, "cadeau") ;
}
# Ajout de $nombre articles de type $type au Caddie
function ajoute($nombre, $type) {
$this->elements[$type] += $nombre ;
}
137

Programmation oriente objet


Alcve - Programmer en PHP

# Retrait de $nombre articles de type $type au Caddie


function enleve($nombre, $type) {
if ($this->elements[$type] > $nombre) {
$this->elements[$type] -= $nombre ;
return true ;
} else { return false ; }
}
}

138

Chapitre 3
Alcve - Programmer en PHP

Fonctionnalits essentielles

139

Fonctionnalits essentielles
Alcve - Programmer en PHP

Objectifs du chapitre
Gestion des connexions et des utilisateurs ;
Gestion des sessions ;
Autres fonctionnalits essentielles.

140

Section 1
Alcve - Programmer en PHP

Connexions et utilisateurs

141

Connexions et utilisateurs
Alcve - Programmer en PHP

Objectifs de la section
Gestion des utilisateurs - authentification ;
Gestion des connexions.

142

Connexions et utilisateurs
Alcve - Programmer en PHP

Gestion des utilisateurs - authentification


Les fonctions dauthentification HTTP ne sont disponibles que si
PHP est excut comme module Apache (et non pas comme CGI) ;
On utilise la fonction header() pour demander une authentification
(Authentication Required) au client, gnrant ainsi lapparition
dune fentre de demande de nom dutilisateur et de mot de passe ;

143

Connexions et utilisateurs
Alcve - Programmer en PHP

Une fois que les champs ont t remplis, lURL sera de nouveau
appele mais avec les variables suivantes mises jour :
$PHP_AUTH_USER : utilisateur,
$PHP_AUTH_PW : mot de passe, et
$PHP_AUTH_TYPE : type dauthentification.
Actuellement, seule lauthentification basique (Basic) est
supporte ;

144

Connexions et utilisateurs
Alcve - Programmer en PHP

Ex : page dauthentification
< ?php if( !isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate : Basic realm=Titre") ;
Header("HTTP/1.0 401 Unauthorized") ;
echo "Texte envoyer au client en cas
dannulation" ;
exit ;
} else {
echo "Bonjour $PHP_AUTH_USER.<br>" ;
echo "Votre mot de passe est $PHP_AUTH_PW." ;
} ?>
145

Connexions et utilisateurs
Alcve - Programmer en PHP

Gestion des connexions


Le statut des connexions est conserv en interne par PHP ;
Il y a trois tats possibles :
0 / NORMAL : le script PHP travaille,
1 / ABORTED : le client distant sest dconnect,
2 / TIMEOUT : la dure maximale dexcution est dpasse.

146

Connexions et utilisateurs
Alcve - Programmer en PHP

Par dfaut, le script PHP se termine ds que le client se dconnecte


mais on peut changer cette politique de diffrentes faons :
continuer le script comme si le client tait encore l en activant
loption :
ignore_user_abort dans php3.ini/php.ini, ou
[php3_ignore_user_abort/ignore_user_abort dans
apache.conf.
excuter une fonction de fermeture pralablement enregistre
grce la fonction register_shutdown_function().


147

Connexions et utilisateurs
Alcve - Programmer en PHP

La fonction enregistre avec register_shutdown_function()


sera aussi appele la fin du script quand celui-ci se termine
normalement ;
Pour pouvoir avoir un comportement diffrent suivant ltat du script
lors de sa finalisation on peut tester ltat dconnect du script avec
la fonction connection_aborted() ;
La fonction connection_status() permet galement de
retourner ltat du script (0, 1, 2 ou 3) ;

148

Connexions et utilisateurs
Alcve - Programmer en PHP

On peut modifier le dlai de timeout (30 secondes par dfaut) de


plusieurs manires :
fonction set_time_limit(),
max_execution_time dans php3.ini/php.ini, ou
php3_max_execution_time/max_execution_time dans
apache.conf.
La fonction enregistre avec register_shutdown_function()
sera galement appele lorsquun timeout intervient ;
On peut tester ltat timeout du script avec la fonction
connection_timeout() ;

149

Section 2
Alcve - Programmer en PHP

Gestion des sessions

150

Gestion des sessions


Alcve - Programmer en PHP

Objectifs de la section
Principe ;
Sessions avec PHPlib ;
Sessions avec PHP4.

151

Gestion des sessions


Alcve - Programmer en PHP

Principe
La gestion des sessions avec PHP est un moyen de sauver des
informations entre deux accs (requtes HTTP) ;
Cela permet notamment de construire des applications
personnalises, et daccrotre les fonctionnalits de votre site ;
Malheureusement, la gestion des sessions ntait pas inclue dans
les fonctionnalits standards de PHP jusqu la version PHP4 ;
Une bibliothque complmentaire a donc t dveloppe pour grer
les sessions avec PHP3, cest PHPlib ;

152

Gestion des sessions


Alcve - Programmer en PHP

Sessions avec PHPlib


PHPlib est une bibliothque PHP libre qui vise faciliter la cration
de sites avec PHP ;
Elle est toujours utilisable avec PHP4 et prsente dailleurs des
fonctionnalits que ce dernier ne possde toujours pas en natif ;
Elle se compose de classes et de fonctions qui permettent :
le suivi des sessions,
lutilisation de variables persistantes au niveau utilisateur et au
niveau session,
lauthentification et la gestion des permissions,
la gnration rapide de code HTML...
153

Gestion des sessions


Alcve - Programmer en PHP

Installation :
rcuprer larchive (http ://phplib.netuse.de),
la dcompresser dans un rpertoire quelconque (ex :
/usr/lib/phplib/),
diter le fichier php3.ini/php.ini et fixer les options de la
faon suivante :
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
track_vars = On
auto_prepend_file = <rpertoire contenant
prepend.php>
include_path = <rpertoire dinstallation>


154

Gestion des sessions


Alcve - Programmer en PHP

Pour lutilisation de PHPlib, il faut crer quelques fichiers en plus des


scripts PHP :
prepend.php sert dfinir toutes les librairies PHPlib inclure
avant chaque fichier, et
local.inc sert dfinir les classes qui vont tre utilises par les
scripts.

155

Gestion des sessions


Alcve - Programmer en PHP

Pour grer les sessions et les variables persistantes, la librairie se


sert dune base de donnes, dun annuaire LDAP ou encore dun
simple fichier ;
Cette base de donnes et les diffrentes tables qui sont utilises par
les scripts utilisant PHPlib doivent tre cres par vos soins grce
aux fichiers de configurations fournis (gnralement dans
/usr/lib/phplib/stuff/) ;
Ex : base de donnes MySQL
mysql -h <ma_machine_hote> <ma_base>
<create_database.mysql

156

Gestion des sessions


Alcve - Programmer en PHP

Pour grer une session, PHPlib utilise un identifiant qui est transmis
de script en script au cours de la navigation ;
Pour les sessions sans reprise, cet identifiant peut tre transmis
dans lURL ;
Pour grer les reprises de sessions, PHPlib peut stocker lidentifiant
dans un cookie quil transmet au client la fin de chaque script
(fonction page_close()) ;

157

Gestion des sessions


Alcve - Programmer en PHP

PHPlib dfinit des classes pour accder aux bases de donnes et


grer les sessions ;
Vous devez dfinir vos propres classes qui drivent des classes
gnriques de PHPlib ;
Ces classes sont gnralement stockes dans le fichier
local.inc ;

158

Gestion des sessions


Alcve - Programmer en PHP

Toutes les pages grant la session doivent tre encadres par :


page_open(array("sess" => "MaSession")), et
page_close() ;
Si on ne souhaite pas utiliser loption auto_prepend_file pour
inclure le fichier prepend.php, on peut commencer le script par un
include() de ce fichier ;
Pour rendre une variable persistante, on utilise la mthode
register() de la classe MaSession ;

159

Gestion des sessions


Alcve - Programmer en PHP

Ex : session.php
< ?php
page_open(array("sess" => "MaSession")) ;
if( !isset($toto)) $toto = 1 ;
print ++$toto ;
$sess->register("toto") ;
page_close() ;
?>

160

Gestion des sessions


Alcve - Programmer en PHP

Ex (suite) : local.php
< ?php
class MaBaseSql extends DB_Sql {
var $Host = "ma_machine_hote" ;
var $Database = "ma_base" ;
var $User = "mon_utilisateur" ;
var $Password = "mon_password" ;
}
class MonContainerSql extends CT_Sql {
var $database_class = "MaBaseSql" ;
var $database_table = "ma_table" ;
}
161

Gestion des sessions


Alcve - Programmer en PHP

class MaSession extends Session {


var $classname = "MaSession" ;
var $mode = "cookie" ;
var $lifetime = 6000 ;
var $that_class = "MonContainerSql" ;
}
?>

162

Gestion des sessions


Alcve - Programmer en PHP

Ex (fin) : prepend.php
< ?php
if ( !is_array($_PHPLIB)) $_PHPLIB["libdir"] = "" ;
require($_PHPLIB["libdir"] . "db_mysql.inc") ;
require($_PHPLIB["libdir"] . "ct_sql.inc") ;
require($_PHPLIB["libdir"] . "session.inc") ;
require($_PHPLIB["libdir"] . "local.inc") ;
require($_PHPLIB["libdir"] . "page.inc") ;
?>

163

Gestion des sessions


Alcve - Programmer en PHP

Sessions avec PHP4


Le principe est le mme quavec PHPlib : on attribue un nouvel
utilisateur un identificateur de session (SID) ;
Ce numro est transmis soit sous forme de cookie soit dans les
URLs ;
Quand un visiteur accde la page, PHP4 vrifie si un identificateur
de session a t transmis avec la requte ;

164

Gestion des sessions


Alcve - Programmer en PHP

Cette vrification peut tre faite de trois manires diffrentes :


automatiquement si loption session.auto_start est active
dans php.ini,
explicitement par lappel de la fonction session_start(), ou
implicitement par lappel de la fonction session_register().
Dans le cas o le numro de session est valide, tout lenvironnement
de celle-ci est restaur ;

165

Gestion des sessions


Alcve - Programmer en PHP

Loption register_globals de php.ini autorise les variables


globales tre sauvegardes dans une session ;
Ex :
< ?php session_register("toto") ;
$toto++ ; ?>
Loption track_vars de php.ini (qui est bloque 1 pour les
versions de PHP4 suprieures la 4.0.3) autorise les variables de
$HTTP_SESSION_VARS tre sauvegardes dans une session ;
Ex :
< ?php session_register("toto") ;
$HTTP_SESSION_VARS["toto"]++ ; ?>
166

Gestion des sessions


Alcve - Programmer en PHP

Il existe deux manires pour transmettre le numro de session au


sein de lURL :
manuellement grce la constante SID qui est une chane de
caractres de la forme session_name=session_id (ou vide),
automatiquement si PHP4 a t compil avec loption
--enable-trans-sid.

167

Gestion des sessions


Alcve - Programmer en PHP

Ex : compteur de visites
< ?php session_register("compteur") ;
$compteur++ ; ?>
Vous avez vu cette page < ? echo $compteur ; ?>
fois.
< !-- < ?=SID ?> sert conserver le numro de
session au cas o les cookies sont desactivs -->
Pour continuer cliquez <A
href="compteur.php ?< ?=SID ?>">ici</A>

168

Gestion des sessions


Alcve - Programmer en PHP

Les fonctions les plus utilises sont :


session_start() : cre ou restaure une session,
session_destroy() : dtruit une session,
session_register()/session_unregister() :
sauvegarde/oublie une variable,
session_set_save_handler() : permet de dfinir ses propres
fonctions de sauvegarde de sessions (pour stocker les donnes
dans une base de donnes par exemple).

169

Section 3
Alcve - Programmer en PHP

Autres fonctionnalits

170

Autres fonctionnalits
Alcve - Programmer en PHP

Objectifs de la section
Rcupration et traitement des erreurs ;
Les cookies.

171

Autres fonctionnalits
Alcve - Programmer en PHP

Rcupration et traitement des erreurs


Il existe 4 types derreurs et dalertes PHP :
E_ERROR (1) : erreur dexcution
E_WARNING (2) : alerte
E_PARSE (4) : erreur danalyse
E_NOTICE (8) : notes (alertes qui peuvent tre ignores)
Pour dfinir un niveau derreur, on ajoute les chiffres des erreurs que
lon souhaite prendre en compte (bitmask par dfaut 7 = 4 + 2 + 1) ;

172

Autres fonctionnalits
Alcve - Programmer en PHP

Ce niveau peut tre chang de trois manires :


directive error_reporting dans php3.ini/php.ini,
directive
php3_error_reporting/error_reporting/error_reporting
dans httpd.conf,
fonction error_reporting().

173

Autres fonctionnalits
Alcve - Programmer en PHP

Toutes les expressions PHP peuvent tre appeles avec le prfixe @


qui permet dignorer le rapport derreur pour cette fonction
particulire ;
Si une erreur survient dans une telle expression, et que loption
track_errors est active dans php3.ini/php.ini, on retrouve
le message derreur dans la variable globale $php_errormsg ;
La fonction error_reporting() tablit le niveau derreur
prendre en compte et renvoie lancien niveau ;

174

Autres fonctionnalits
Alcve - Programmer en PHP

La fonction error_log() envoie un message derreur :


dans les logs du serveur,
un port TCP, ou
un fichier.
Elle prend comme paramtres :
message : message qui doit tre envoy,
message_type : type de transmission choisi :
0 : systme standard de log de PHP,
1 : mail,
2 : machine distante (TCP/IP), ou
3 : fichier local.


Ex : error_log("Alerte rouge", 1,
"webmaster@monsite.fr") ;
175

Autres fonctionnalits
Alcve - Programmer en PHP

Les cookies
Les cookies sont un mcanisme denregistrement dinformations sur
le disque du client mais aussi de relecture de ces informations ;
Ce systme permet dauthentifier et de suivre les visiteurs ;
PHP supporte les cookies de manire transparente ;

176

Autres fonctionnalits
Alcve - Programmer en PHP

Pour envoyer un cookie, on utilise la commande setcookie() ;


Les Cookies font partie de lentte HTTP, ce qui impose que
setcookie() soit appele avant tout affichage sur le client (idem
header()) ;
Avec PHP4, on peut contourner cette limitation en bufferisant la
sortie standard grce la fonction ob_start() puis en librant
celle-ci grce la fonction ob_end_flush ;
On peut aussi indiquer PHP4 de bufferiser automatiquement la
sortie grce loption output_buffering de php.ini mais ceci
ralentit sensiblement PHP4 ;

177

Autres fonctionnalits
Alcve - Programmer en PHP

Tous les cookies qui sont envoys au client sont automatiquement


retourns au script PHP et placs dans le tableau associatif
$HTTP_COOKIE_VARS ;
Seuls les cookies qui correspondent au nom de domaine de la page
demande sont envoys au serveur par le navigateur ;
Pour affecter plusieurs valeurs un seul cookie il faut ajouter [] au
nom du cookie ;

178

Autres fonctionnalits
Alcve - Programmer en PHP

Ex : cookie_ecriture.php
< ?php setcookie("MonCookie", "Contenu", time() +
3600) ; ?>
<HTML><BODY><H1>
Maintenant, vous lavez !<br>
Allez sur la page
<a href = "cookie_lecture.php">prcdente</a>.
</H1></BODY></HTML>

179

Autres fonctionnalits
Alcve - Programmer en PHP

Ex (suite) : cookie_lecture.php
<HTML><BODY><H1>
< ?php if
(isset($HTTP_COOKIE_VARS["MonCookie"])) : ?>
Le cookie MonCookie contient :
< ?php print $HTTP_COOKIE_VARS["MonCookie"] ;
else : ?>
Vous navez pas le cookie MonCookie.<br>
Allez le chercher <a href =
"cookie_ecriture.php">ici</a>.
< ?php endif ; ?>
</H1></BODY></HTML>
180

Chapitre 4
Alcve - Programmer en PHP

Utilisation avance

181

Utilisation avance
Alcve - Programmer en PHP

Objectifs du chapitre
Interoprabilit avec des applicatifs ;
Traitement des chanes de caractres ;
Fonctionnalits utiles.

182

Section 1
Alcve - Programmer en PHP

Interoprabilit avec des applicatifs

183

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Objectifs de la section
Utilisation des SGBDs ;
Interfaage avec lAPI Apache ;
Utilisation de LDAP.

184

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Utilisation des SGBDs


Un grand nombre de S ystmes de G estion de B ases de D onnes
( SGBD ) sont supports par PHP ;
La plupart sont accessibles via le langage SQL ( S tructured Q uery
L angage) ;
Celui-ci permet, comme son nom lindique, de raliser des requtes
sur les bases de donnes et ceci de faon structure et
standardise ;
Lutilisation des bases des donnes est la cl de vote des sites
dynamiques et de commerce lectronique ;
185

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Bases SQL supportes :


Adabas D

Empress

IBM DB2

Informix

Interbase

mSQL

MySQL

ODBC (Access, MS-SQL, iODBC...)

Oracle

PostgreSQL

Raima Velocis

Solid

Sybase

Autres SGBD supports :


dBase,
filePro (lecture seule),
dbm (ndbm, gdbm, Berkeley db).

186

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Principales commandes SQL :


CREATE TABLE : cre une nouvelle table,
DELETE : supprime des lignes dune table,
INSERT : insre une nouvelle ligne dans une table,
SELECT : rcupre des lignes dune table ou dune vue,
UPDATE : modifie des valeurs dans des champs.

187

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Ex : cration et alimentation dune table


CREATE TABLE Personne (Secu INT8 NOT NULL PRIMARY
KEY, Nom VARCHAR(20) NOT NULL, Prenom VARCHAR(20)
NOT NULL)
INSERT INTO Personne VALUES (132456789, Smith,
John)
INSERT INTO Personne VALUES (987654321, Gates,
Bill)

188

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Ex (suite) : affichage de la table et suppression dune entre


SELECT * FROM Personne
Secu

Nom

Prenom

132456789

Smith

John

987654321

Gates

Bill

DELETE FROM Personne WHERE Nom = Gates

189

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Chaque base SQL possde sa propre API mais les mcanismes de


consultation sont globalement les mmes pour toutes :
connexion au serveur de bases de donnes (machine, utilisateur,
mot de passe),
slection de la base utiliser (nom de la base),
requte SQL,
exploitation de la requte (affichage...),
dconnexion.
Bien sr avant dutiliser une base de donnes particulire, il faut
sassurer que la librairie correspondante est charge dans PHP ;

190

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Pour une base de donnes MySQL, il faut ajouter la ligne


extension=mysql.so dans le fichier php3.ini/php.ini et
vrifier que le fichier mysql.so se trouve bien dans le rpertoire
extension_dir ;
Les fonctions MySQL les plus couramment utilises sont les
suivantes :
mysql_connect() : ouvre une connexion un serveur MySQL,
mysql_list_*() : retournent la liste des bases, tables ou
champs disponibles sur le serveur,
mysql_select_db() : selectionne une base de donnes sur le
serveur,

191

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

mysql_query() : envoie une requte SQL sur la base de


donnes active sur le serveur et renvoie un identifiant de rsultat :
mysql_result() : exploite le rsultat,
mysql_fetch_*() : exploitent et manipulent le rsultat,
mysql_field_*() : permettent de naviguer au sein du
rsultat.
mysql_close() : ferme la connexion au serveur MySQL (fait par
dfaut la fin du script).


192

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Il est possible de raliser une connection persistante un serveur


MySQL en utilisant la fonction mysql_pconnect() ;
Une telle connexion ne sera pas ferme automatiquement la fin du
script ;
Acclre sensiblement les scripts quand les connexions la base
sont frquentes ;
La connexion sera referme automatiquement aprs un certain
temps dinutilisation ;

193

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Ex :
< ?php
mysql_pconnect("db.mon-server.com", "username",
"password") ;
mysql_select_db("ma_base") ;
$resultat = mysql_query("SELECT * FROM ma_table") ;
if ($resultat) : ?>
<TABLE>
<TR><TH>Nom</TH> <TH>Description</TH></TR>

194

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

< ?php
while ($tableau = mysql_fetch_array($resultat))
echo "<TR><TD>", $tableau["nom"], "</TD> <TD>",
$tableau["descr"], "</TD></TR>\n" ;
?>
</TABLE>
< ?php else :
echo "Votre table est vide" ;
endif ; ?>

195

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Il existe des outils dadministration de bases de donnes entirement


crits en PHP ;
PHPMyAdmin pour les bases MySQL
(http ://www.phpwizard.net/phpMyAdmin/),
PHPPgAdmin pour les bases PostgreSQL
(http ://www.phpwizard.net/phpPgAdmin/).
Ces outils sont trs utiles pour crer les bases de donnes avant de
les utiliser dans des scripts PHP ;
Ils sont galement pratique pour maintenir les bases ;
Ces outils tant libres, leur code source peut servir de rfrence
pour accder aux bases de donnes avec PHP ;

196

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Interfaage avec lAPI Apache


La fonction getallheaders() permet de rcuprer tous les
en-ttes HTTP correspondant la requte courante ;
Les en-ttes sont stocks dans un tableau associatif ;
Ex :
$headers = getallheaders() ;
while (list($header, $valeur) = each($headers)) {
echo "$header : $valeur <BR>\n" ;
}
197

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Utilisation de LDAP
L ightweight D irectory A ccess P rotocol ;
Protocole normalis daccs aux services dannuaires ;
Un annuaire est quivalent une base de donnes o les
informations sont ranges de manire hirarchique ;
Les caractristiques de LDAP :
organisation globale,
standard ouvert,
extensible et paramtrable,
stockages de donnes htrognes,
scuris.
198

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

LDAP utilise une syntaxe nom distincts (dn : distinguished


names ) ;
Ex : dn et signification
dn = "cn=Linus Torvalds, ou=Devel, o=Transmeta,
c=USA"
country = USA
organization = Transmeta
organizationUnit = Devel
commonName = Linus Torvalds

199

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Avant de pouvoir utiliser LDAP avec PHP, il faut ajouter la ligne


extension = ldap.so dans php3.ini/php.ini et vrifier que
la librairie ldap.so se trouve bien dans le rpertoire
extension_dir ;
Une squence type de consultation/modification dune base LDAP
avec PHP prendra la forme suivante :
ldap_connect() : tablit une connexion avec un serveur LDAP,
ldap_bind() : liaison et authentification sur le serveur,
ldap_get_*()/ldap_add()/ldap_modify()... :
consultation/modification de la base,
ldap_close() : dconnexion.

200

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

Ex : recherche de tous les dn commanant par l


< ?php
$ds = ldap_connect("ldap.mon-serveur.com") ;
if ($ds) {
ldap_bind($ds) ;
$sr = ldap_search($ds, "ou=Devel, o=Transmeta,
c=USA", "dn=l*") ;
$info = ldap_get_entries($ds, $sr) ;

201

Interoprabilit avec des applicatifs


Alcve - Programmer en PHP

for ($i=0 ; $i < $info["count"] ; $i++) {


echo "dn vaut : " . $info[$i]["dn"] . "<br>" ;
echo "premire entre cn vaut : " .
$info[$i]["cn"][0] . "<br>" ;
echo "premire email vaut : " .
$info[$i]["mail"][0] . "<br>" ;
}
ldap_close($ds) ;
} else {
echo "<H4>Impossible de se connecter au serveur
LDAP</H4>" ;
} ?>
202

Section 2
Alcve - Programmer en PHP

Traitement des chanes de caractres

203

Traitement des chanes de caractres


Alcve - Programmer en PHP

Objectifs de la section
Manipulation des chanes de caractres ;
Expressions rgulires.

204

Traitement des chanes de caractres


Alcve - Programmer en PHP

Manipulation des chanes de caractres


Affichage :
echo() : affiche une ou plusieurs chanes spares par des
virgules,
print() : affiche une chane,
printf() : affiche une chane selon une chane de formatage
(idem langage C).
Ex :
$nom = "toto" ;
echo "Bonjour", $nom ; # affiche Bonjour toto
print "Bonjour $nom" ; # affiche Bonjour toto
printf("Bonjour %s", $nom) ; # affiche Bonjour toto
205

Traitement des chanes de caractres


Alcve - Programmer en PHP

Substitutions :
addslashes() : ajoute un backslash devant tous les caractres
spciaux,
stripslashes() : enlve les backslashs ajouts par la fonction
addslashes,
str_replace() : remplace toutes les occurrences dune chane
par une autre,
Ex :
print addslashes(\ \ ") ; # affiche \ \ \"
print str_replace("toto", "titi", "Bonjour
toto !") ; # affiche Bonjour titi !

206

Traitement des chanes de caractres


Alcve - Programmer en PHP

Dcoupage :
explode() : scinde une chane en morceaux grce un
dlimiteur,
implode()/join() : regroupe tous les lments dun tableau
dans une chane en ajoutant une chane de jointure,
ltrim()/chop() : enlve les espaces de dbut/fin de chane.
Ex :
$composants = "resistance, condensateur,
transistor " ;
$composants = chop($composants) ;
$tableau = explode(", ", $composants) ;
print $tableau[2] . "." ; # affiche transistor.
207

Traitement des chanes de caractres


Alcve - Programmer en PHP

Web :
rawurlencode()/rawurldecode() : encode/dcode une
chane en URL selon la RFC1738,
htmlspecialchars()/htmlentities() : converti tous les
caractres spciaux en quivalent HTML.
Ex :
$url = rawurlencode(bonjour@toi /toto/) ;
print $url ; # affiche bonjour%40toi%20%2Ftoto%2F
$html = htmlentities("2 < 3") ;
print $html ; # affiche 2 < 3 mais le source HTML contient
2 < 3
208

Traitement des chanes de caractres


Alcve - Programmer en PHP

Comparaison :
parse_str() : analyse une chane et en dduit des variables et
leur valeur,
strcmp() : comparaison sensible la casse,
strlen() : retourne la longueur de la chane.
Ex :
parse_str("toto=23& tab[]=Ceci+fonctionne &
tab[]=aussi") ;
print "$toto, $tab[0], $tab[1]" ;
Affiche 23, Ceci fonctionne , aussi

209

Traitement des chanes de caractres


Alcve - Programmer en PHP

Casse :
strtolower()/strtoupper() : met tous les caractres en
minuscule/majuscule,
ucfirst() : force le premier caractre dune chane en
majuscule,
ucwords() : force le premier caractre de chaque mot dune
chane en majuscule.
Ex :
$nom = "BiLL GaTeZ" ;
print $nom = strtolower($nom) ; # affiche bill gatez
print strtolower($nom) ; # affiche Bill Gatez

210

Traitement des chanes de caractres


Alcve - Programmer en PHP

Expressions rgulires
Les expressions rgulires (abrv : regex ) sont utilises pour faire
des manipulations complexes sur les chanes de caractres (ex :
substitutions ou recherches complexes) ;
PHP gre deux types dexpressions rgulires :
les expressions rgulires avances de POSIX, et
les expressions rgulires modifies du langage Perl.

211

Traitement des chanes de caractres


Alcve - Programmer en PHP

Principes de base des expressions rgulires :


recherche de squences de caractres au sein dune chane,
besoin dexpressions pour dcrire ces squences,
utilisation dune syntaxe puissante,
quivaut la dfinition de conditions de recherche.

212

Traitement des chanes de caractres


Alcve - Programmer en PHP

Signification des principales expressions rgulires :


c : caractre c (sauf caractres spciaux),
\c : caractre spcial c (sauf chiffres de 1 9),
: dbut de la ligne,
$ : fin de la ligne,
. : nimporte quel caractre,
[s] : caractre appartenant lensemble s, o s est une suite de
caractres et/ou une chelle de caractres ([c-c]),

213

Traitement des chanes de caractres


Alcve - Programmer en PHP

[s] : caractre nappartenant pas lensemble s,


r* : 0, 1 ou plusieurs occurrences successives de lexpression
rgulire r,
rx : r, suivie de lexpression rgulire x (concatnation),
r{m,n} : un nombre (entre m et n) doccurrences successives de
r,
r{m} : exactement m occurrences successives de r,
r{m,} : au moins m occurrences successives de lexpression
rgulire r.

214

Traitement des chanes de caractres


Alcve - Programmer en PHP

Utilisation avec PHP :


ereg()/eregi() : expression rgulire standard
sensible/insensible la casse,
ereg_replace()/eregi_replace() : expression rgulire de
substitution sensible/insensible la casse,
split() : dcoupe une chane grce un dlimiteur dfini par
une expression rgulire,
sql_regcase() : prpare une expression rgulire insensible
la casse (utile pour les fonctions ne supportant pas les recherches
insensible la casse).

215

Traitement des chanes de caractres


Alcve - Programmer en PHP

Ex :
< ?php $personne = "Nom : Smith, Prnom : John,
Age : 52, Divers : blond" ;
if (ereg("blond", $personne))
print "Cette personne est blonde." ;
# Affiche Cette personne est blonde.
if (eregi("age : *([0-9]+)", $personne,
$resultat))
print "Cette personne a $resultat[1] ans." ;
else print "Cette personne na pas dage." ;
# Affiche Cette personne a 52 ans.
216

Traitement des chanes de caractres


Alcve - Programmer en PHP

print eregi_replace("(age :) *[0-9]+.*", "\1 68",


$personne) ;
# Affiche Nom : Smith, Prnom : John, Age : 68
print sql_regcase("John Smith") ;
# Affiche [Jj][Oo][Hh][Nn] [Ss][Mm][Ii][Tt][Hh]
?>

217

Section 3
Alcve - Programmer en PHP

Fonctionnalits utiles

218

Fonctionnalits utiles
Alcve - Programmer en PHP

Objectifs de la section
Manipulation et traitement des fichiers ;
Arguments et gestion des URLs ;
Cration dynamique dimages ;
Fonctions mathmatiques ;
PHP et XML ;
Templates avec PHPlib ;
Utilisation de PHP comme langage de script.
219

Fonctionnalits utiles
Alcve - Programmer en PHP

Manipulation et traitement des fichiers


Quel que soit le langage de programmation, la gestion des fichiers
est toujours importante pour le stockage de donnes ;
La gestion des fichiers en PHP est issue du langage C mais elle
comporte quelques fonctions supplmentaires trs utiles (comme la
gestion des fichiers distants par exemple) ;

220

Fonctionnalits utiles
Alcve - Programmer en PHP

Les principales fonctions de manipulation de fichiers sont les


suivantes :
fopen() : ouverture dun fichier (possibilit de fournir une URL
HTTP ou FTP pour les fichiers distants),
fclose() : fermeture du fichier,
fpassthru() : lit un fichier en entier et laffiche,
fread()/fgets() : lit n caractres dans le fichier,
fwrite()/fputs() : crit une chane dans un fichier,
rewind()/fseek()/ftell() : positionnement au sein du fichier.

221

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex : affichage de limage image.png


< ?php
Header("Content-type : image/png") ;
if ( !$fd = fopen("image.png", "rb"))
echo "Impossible douvrir le fichier." ;
else fpassthru($fd) ;
?>

222

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex2 : fichier de log


< ?php
...
if ( !$fd = fopen("mon_error.log", "a"))
echo "Impossible douvrir le fichier." ;
else fputs($fd, "Erreur : $errormsg\n") ;
# Ecrit le dernier message derreur renvoy dans mon_error.log
...
?>

223

Fonctionnalits utiles
Alcve - Programmer en PHP

Les principales fonctions de gestion de fichiers sont les suivantes :


file_exists() : test de lexistence dun fichier,
copy() : copie un fichier,
rename() : renomme un fichier,
unlink() : efface dfinitivement un fichier.
Ex :
< ?php
$fichier = "toto.html"
if (file_exists($fichier))
copy($fichier, "/tmp/" . $fichier) ;
else echo "Impossible douvrir le fichier." ;
?>
224

Fonctionnalits utiles
Alcve - Programmer en PHP

Les principales fonctions de manipulation des rpertoires sont les


suivantes :
chdir() : changement de rpertoire courant,
opendir() : ouverture dun rpertoire,
closedir() : fermeture du rpertoire,
readdir() : lit lentre suivante dans le rpertoire,
rewinddir() : revient au dbut du rpertoire,
mkdir() : cre un nouveau rpertoire,
rmdir() : supprime un rpertoire,
dir() : instanciation dun objet rpertoire pour une manipulation
objet de celui-ci,

225

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex : quivalent de la commande ls
< ?php
chdir("/tmp") ;
$dir = dir(".") ;
$dir->rewind() ;
while ($fichier = $dir->read())
echo "$fichier<br>" ;
$dir->close() ;
?>

226

Fonctionnalits utiles
Alcve - Programmer en PHP

Arguments et gestion des URLs


La gestion des URLs est importante pour encoder/dcoder des
informations au sein mme de celles-ci ;
On peut utiliser lURL pour transmettre des informations (variables...)
dun script lautre ;
Ce mcanisme peut constituer une mini-gestion de sessions par
exemple ;

227

Fonctionnalits utiles
Alcve - Programmer en PHP

Les principales fonctions utilises pour la gestion des URLs sont les
suivantes :
parse_url : analyse une URL et retourne ses composants sous
forme dun tableau associatif,
urlencode/urldecode : encode/dcode une chane en
remplaant les caractres spciaux par des %xx et les espaces
par des + (application/x-www-form-urlencode),
base64_encode/base64_decode : encode/dcode une chane
en base64 pour permettre certains systmes de manipuler les
informations binaires sur 8 bits (ex : corps de mail).

228

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex : transmission dune variable par lURL


< ?php $chaine = "Bonjour tout le monde ?" ; ?>
<A href="mon-cgi ?chaine=< ?php echo
urlencode($chaine) ; ?>">Envoyer</A>
Appelle le script CGI mon-cgi avec lURL
"mon-cgi ?chaine=Bonjour+tout+le+monde+%3F"

229

Fonctionnalits utiles
Alcve - Programmer en PHP

Cration dynamique dimages


PHP nest pas limit la cration de fichiers HTML, il peut aussi
servir gnrer dynamiquement des images (PNG, JPEG, GIF) ;
Ces images peuvent tre mises directement vers le client ou
sauvegardes sur le serveur ;
Elles sont trs pratiques pour dessiner rapidement des graphiques
partir de donnes dynamiques (ex : statistiques du site, rsultats
dun sondage...) ;

230

Fonctionnalits utiles
Alcve - Programmer en PHP

Pour gnrer des images, PHP utilise la librairie GD ;


Celle-ci se compose dun ensemble de fonctions qui permettent de
crer des images dynamiques de qualit avec trs peu de code ;
Historiquement, le format GIF est le premier avoir t support
mais aujourdhui on lui prefre les formats JPEG et surtout PNG, le
format le plus ouvert de tous ;
Bien sr avant dutiliser cette librairie il faut au pralable la charger
dans PHP en ajoutant la ligne extension=gd.so dans le fichier
php3.ini/php.ini et en vrifiant que le fichier gd.so se trouve
bien dans votre extension_dir ;

231

Fonctionnalits utiles
Alcve - Programmer en PHP

LAPI est trs intuitive :


ImageCreate*() : pour crer une image blanche ou partir
dune image existante,
ImageColor*() : pour dfinir une couleur et la transparence,
ImageString() : pour crire du texte,
Image<forme>() : pour dessiner des formes gomtrique
connue (rectangle, arc, ligne, polygone...),
ImageFill*() : pour colorier des formes,
Image<attribut>() : pour connatre un attribut (largeur,
hauteur, taille...) de limage,
Image<type>() : pour envoyer une image de type PNG, JPEG
ou GIF au navigateur,
ImageDestroy() : pour dtruire limage...
232

Fonctionnalits utiles
Alcve - Programmer en PHP

Toutes les fonctions de lAPI manipulent un pointeur sur limage


courante ;
Ce pointeur est retourn par la fonction ImageCreate*() la
cration de limage ;
Typiquement, on cre un fichier PHP dont le seul but est de
retourner une image dynamique ;

233

Fonctionnalits utiles
Alcve - Programmer en PHP

Les arguments pour crer limage sont alors passs dans lURL la
manire des formulaires en mode GET par exemple (ex : <IMG src
= "bouton.php ?texte=TITRE+BOUTON">)
Le fichier doit retourner un en-tte correspondant limage
retourne (ex : Header("Content-type : image/gif") ;) afin
que le navigateur puisse correctement lafficher ;
On peut aussi crer une fonction qui gnre limage mais cette
technique est moins facile utiliser car il faut soccuper de stocker
limage puis ventuellement de la dtruire par la suite ;

234

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex : gnration dynamique de boutons, bouton.php


< ?php Header("Content-type : image/gif") ;
if ( !isset($texte)) $texte = "" ;
$image = ImageCreateFromGif("images/bouton.gif") ;
$couleur = ImageColorAllocate($image, 255, 255,
255) ;
$espace = (ImageSX($image) - 7.5 * strlen($texte))
/ 2;
ImageString($image , 5, $espace, 9, $texte,
$couleur) ;
ImageGif($image) ;
ImageDestroy($image) ; ?>
235

Fonctionnalits utiles
Alcve - Programmer en PHP

Avant :
<IMG src = "bouton.php ?texte=Mon+titre">
Aprs :

236

Fonctionnalits utiles
Alcve - Programmer en PHP

Fonctions mathmatiques
Il existe deux types de fonctions mathmatiques dans PHP :
les fonctions standards, qui sappliquent sur des entiers long
(double), et
les fonctions de prcision o les nombres sont reprsents par
des chanes de caractres.
La constante M_PI est dfinie pour le nombre Pi ;

237

Fonctionnalits utiles
Alcve - Programmer en PHP

Les fonctions standards les plus utilises sont les suivantes :


abs() : valeur absolue,
number_format() : formate un nombre par groupe de milliers,
round()/ceil()/floor() : arrondis,
max()/min() : encadrements,
pow()/sqrt() : puissances,
exp()/log()/log10() : exponentielles et logarithmes,

238

Fonctionnalits utiles
Alcve - Programmer en PHP

cos()/sin()/tan()/acos()/asin()/atan() : trigonomtrie,
base_convert()/BinDec()/DecBin()/HexDec()/
DecHex()/OctDec()/DecOct() : changements de bases,
rand()/srand()/getrandmax() : nombres pseudo-alatoires
(les fonctions mt_* sont meilleures et plus rapides).

239

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex :
$x = -12 ;
print sqrt(pow($x, 2)) . " = " . abs($x) ;
# Affiche 12 = 12
print number_format(round(12550.49999999), 3, ",",
" ") ;
# Affiche 12 550,000
print cos(M_PI/4) . " = " . 1/sqrt(2) ;
# Affiche 0.70710678118655 = 0.70710678118655

240

Fonctionnalits utiles
Alcve - Programmer en PHP

PHP et XML
e X tensible M arkup L anguage ;
Standard ouvert de description de donnes ;
Utilise des marqueurs qui, la diffrence des autres ML, dcrivent
les donnes et non pas la manire dont celles-ci doivent tre
affiches (ex : HTML) ;
Lutilisation de XML avec PHP ncessite linstallation de la librairie
Expat (http ://www.jclark.com/xml/) et la compilation de
PHP avec loption --with-xml ;
Depuis la version 1.3.7 dApache, la librairie Expat est directement
intgre au serveur web ;
241

Fonctionnalits utiles
Alcve - Programmer en PHP

Le module XML permet de crer un parseur XML appelant des


fonctions dfinies par lutilisateur et permettant de traiter les donnes
incluses dans les tags XML ;
Fonctions principales :
xml_parser_create() : cre un parseur XML et retourne un
descripteur de parseur qui sera utiliser par les autres fonctions,
xml_set_element_handler() : modifie les options associes
un parseur (sensibilit la casse, encodage des caractres...),
xml_set_character_data_handler() : dfinit les fonctions
appeler louverture et la fermeture dun tag XML spcifique,
xml_parse() : le parseur XML,
xml_parser_free() : limination dun parseur XML de la
mmoire.
242

Fonctionnalits utiles
Alcve - Programmer en PHP

On ne peut pas directement manipuler un parseur XML lintrieur


dun objet PHP ;
Il faut pour cela dfinir un parseur comme variable dinstance de
lobjet et passer lobjet par rfrence la fonction
xml_set_object() ;
Ex : xml_set_object(parser, & object) ;
Par la suite, il faut utiliser les fonctions xml_set_*() avec
$this->parser comme identifiant de parseur.

243

Fonctionnalits utiles
Alcve - Programmer en PHP

Utilisation des templates PHPlib


PHPlib propose une classe Template permettant de sparer le
squelette HTML dune page, du traitement des donnes permettant
de modifier dynamiquement cette page ;
Les parties dynamiques de la page sont reprsentes dans le code
HTML par des identifiants entours daccolades ;
Ces identifiants seront remplaces par leur valeur calcule par le
script PHP ;

244

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex : le template (expl.ihtml)
<html><head>
<title>{LETITRE}</title>
</head >
<body>
<br>Un exemple de variable :{ICI}
</body></html>

245

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex (suite) : code PHP utilisant le template expl.ihtml


include("template.inc")
$tmpl = new Template("rep-template") ;
$tmpl->set_file("main", "expl.ihtml") ;
$tmpl->set_var(array(
"LETITRE"=>"Exemple de titre",
"ICI"=>"Un message")) ;
$tpml->parse("out", "main") ;
$tmpl->p("out") ;

246

Fonctionnalits utiles
Alcve - Programmer en PHP

Fonctions associes aux templates :


template() : retourne un objet Template associ au rpertoire
o sont stocks les squelettes HTML,
set_file() : associe un fichier template une variable qui
reprsente celui-ci,
set_var() : affecte une valeur un nom de variable du template,
Ces deux dernires fonctions peuvent aussi tre appeles avec
comme unique argument un tableau contenant des paires
clefs/valeurs ;

247

Fonctionnalits utiles
Alcve - Programmer en PHP

parse() : cette fonction substitue la valeur de toutes les variables


dfinies dans la variable de rfrence puis stocke (ou ajoute) le
rsultat dans la variable cible,
p() : cette fonction affiche la valeur de la variable passe en
argument dans le navigateur.

248

Fonctionnalits utiles
Alcve - Programmer en PHP

Afin de pouvoir traiter des lments rptitifs (tableaux, listes de


slection...), on peut dclarer des blocs dans les variables
manipules par la classe Template ;
La dfinition utilise les commentaires HTML ;
Ex :
<form action = "{PHPSELF}">
<select name = "variable">
< !-- BEGIN monbloc ->
<option>{MUL}
< !-- END monbloc ->
</select>
<br><input type="submit"></form>
249

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex (suite) :
$tmpl = new Template("rep-template") ;
$tmpl->set_file("main", "expl.ihtml") ;
$tmpl->set_bloc("main", "monbloc", "toto") ;
$tmpl->set_var("PHPSELF", $PHP_SELF) ;
for ($i = 1 ; $i < 10 ; $i++) {
$tmpl->set_var("MUL", $i) ;
$tmpl->parse("toto", "monbloc", true) ;
}
$tpml->parse("out", "main") ;
$tmpl->p("out") ;
250

Fonctionnalits utiles
Alcve - Programmer en PHP

Une fois un bloc dfini, on peut le rpter en spcifiant true comme


dernier argument de la fonction parse ;
La fonction set_block($parent, $blocname, $name) indique
que la variable $parent contient un bloc nomm $blocname. Cette
fonction enlve le bloc de $parent et le remplace par une variable
$name.

251

Fonctionnalits utiles
Alcve - Programmer en PHP

Utilisation de PHP comme langage de script


On peut utiliser toute la puissance et la richesse des fonctions de
PHP pour faire des scripts non orients web ;
Il faut avoir au pralable compil PHP comme CGI (la cohabitation
entre plusieurs formes de PHP est possible sur une mme machine) ;
La commande php donne alors accs un shell PHP o chaque
commande PHP tape est interprte immdiatement ;

252

Fonctionnalits utiles
Alcve - Programmer en PHP

Bien sr, seules les commandes encadres par les < ?php ... ?>
seront interprtes les autres tant affiches telles-quelles ;
Loption -q permet dviter davoir un en-tte HTTP envoy avant le
premier affichage ;
Pour raliser des scripts classiques en PHP il suffit de faire
commencer le fichier par la ligne :
# !/usr/bin/php<version> -q

253

Fonctionnalits utiles
Alcve - Programmer en PHP

Ex : script dinvite login, login.php


# !/usr/bin/php<version> -q
Bonjour monsieur < ?php echo $USER, "\n" ?>,
vous tes sur la machine < ?php echo $HOSTNAME,
"\n" ?>
En vrifiant que les variables $USER et $HOSTNAME sont bien
exportes par le shell et en rendant le script login.php excutable
(chmod +x login.php) la commande ./login.php affiche :
Bonjour monsieur nom_login,
vous tes sur la machine nom_machine.

254

Section 4
Alcve - Programmer en PHP

Conclusion

255

Conclusion
Alcve - Programmer en PHP

Objectifs du chapitre
Conseils de programmation PHP ;
Lavenir de PHP ;
Rfrences ;
Glossaire.

256

Conclusion
Alcve - Programmer en PHP

Conseils de programmation PHP


Penser en matire de rutilisabilit du code ;
Ne pas lsiner sur les commentaires, ils aideront les autres
comprendre votre code (on est rarement seul travailler sur un site
web) ;
Segmenter le code PHP pour le rendre plus clair :
prfrer les fonctions courtes et mono-tches,
utiliser des fichiers diffrents...

257

Conclusion
Alcve - Programmer en PHP

Essayer de sparer au maximum les aspects graphiques (charte


graphique, feuilles de styles...), contenu (gestion des donnes
dynamiques...) et mise en forme (affichage des donnes
dynamiques...) :
utilisation de fichiers den-ttes, de barres de navigation et de
pieds de pages spars,
utilisation de fichiers contenant les classes manipules par les
scripts...

258

Conclusion
Alcve - Programmer en PHP

Lavenir de PHP
De plus en plus utilis sur Internet (plusieurs millions de domaines
diffrents) ;
PHP4 depuis le dbut de lanne 2000 ;
Cette version est nanmoins conteste (ex : FSF) cause de ses
nouvelles licences ;
Elle apporte cependant plus de rapidit (ex : analyseur Zend) et de
nouvelles fonctionnalits natives (ex : gestion des sessions...) ;

259

Conclusion
Alcve - Programmer en PHP

Rfrences
Livres :
Professional PHP Programming (Wrox),
Programmation Web avec PHP (Eyrolles),
PHP, prcis & concis (OReilly),
Programmation PHP (CampusPress)...

260

Conclusion
Alcve - Programmer en PHP

URLs :
Le site officiel de PHP (http ://www.php.net),
Documentation officielle en anglais
(http ://www.php.net/manual),
Traduction franaise de la documentation officielle
(http ://dev.nexen.net/docs),
Le site de Zend (http ://www.zend.com),
Dveloppement PHP/MySQL chez Nexen
(http ://dev.nexen.net)

261

Conclusion
Alcve - Programmer en PHP

Projets libres autour de PHP (http ://www.phpwizard.net),


Articles techniques sur PHP
(http ://www.phpbuilder.com/),
Le site officiel de PHPlib (http ://phplib.netuse.de),
Site Francophone pour lAide la Programmation en PHP
(http ://www.phpfr.org)...

262

Conclusion
Alcve - Programmer en PHP

Glossaire
Apache : serveur web (HTTP) le plus utilis sur Internet,
Browser : navigateur/butineur de page web,
CGI ( Common Gateway Interface ) : interface de communication
pour la cration de programmes capables dtre excuts par un
serveur HTTP, elle permet la cration dynamique de pages du
ct serveur,
GET : mthode HTTP de transmission de formulaires via les URLs
(donnes encodes dans lURL),

263

Conclusion
Alcve - Programmer en PHP

GIF ( Graphics Interchange Format ) : format brevet dimages


compresss, trs utilis sur le web,
HTML ( Hyper Text Markup Language ) : langage de description
structurale de documents, bas sur la notion denvironnement et
de dlimiteurs, utilis pour crer les pages web,
HTTP ( HyperText Transfer Protocol ) : protocole de transfert de
fichiers utilis sur le web,
HTTPD ( HTTP Daemon ) : partie principale dun serveur web qui
change, via HTTP, des fichiers avec les clients web (navigateurs),

264

Conclusion
Alcve - Programmer en PHP

JPEG : format dimages compresss trs utilis sur le web,


LDAP ( Lightweight Directory Access Protocol ) : protocole
normalis daccs aux services dannuaires,
PHP ( PHP : Hypertext PreProcessor ) : langage de script ct
serveur, embarqu dans les pages HTML,
PNG ( Portable Network Graphics ) : format libre dimages
compresss cr pour fournir une alternative libre au format GIF,

265

Conclusion
Alcve - Programmer en PHP

POST : mthode HTTP de transmission de formulaires dans le


corps de la requte (alternative la mthode GET),
Regex : raccourci pour Regular Expressions , syntaxe pour
raliser des manipulations complexes sur les chanes de
caractres,
Session PHP : mcanisme de sauvegarde dinformations entre
deux accs (requtes HTTP),
SGBD : Systme de Gestion de Bases de Donnes,

266

Conclusion
Alcve - Programmer en PHP

SQL ( Structured Query Langage ) : langage structur de requte


pour interroger des SGBDs,
URL ( Uniform Resource Locator ) : syntaxe utilise pour localiser
une ressource (fichier) sur le web (ex :
http ://www.php.net/index.html)
WWW ( World Wide Web ) : aussi appell web, cest le nom donn
au rseau Internet,
XML ( eXtensible Markup Language ) : standard ouvert de
description de donnes bas sur lutilisation de marqueurs
decrivant les donnes quils encapsulent.

267

Vous aimerez peut-être aussi