Académique Documents
Professionnel Documents
Culture Documents
Julien Gaulmin
julien.gaulmin@alcove.fr
version 1.44
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
3
5
18
29
38
40
78
112
126
138
140
149
169
180
2
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
La programmation web
Alcve - Programmer en PHP
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
Prsentation de PHP
Alcve - Programmer en PHP
Lhistoire du langage
22
Prsentation de PHP
Alcve - Programmer en PHP
23
Prsentation de PHP
Alcve - Programmer en PHP
24
Prsentation de PHP
Alcve - Programmer en PHP
25
Prsentation de PHP
Alcve - Programmer en PHP
26
Prsentation de PHP
Alcve - Programmer en PHP
27
Prsentation de PHP
Alcve - Programmer en PHP
28
Prsentation de PHP
Alcve - Programmer en PHP
29
Section 3
Alcve - Programmer en PHP
30
Objectifs de la section
Installation de PHP ;
Configuration via php3.ini/php.ini ;
Premier test ;
Ajout de nouveaux modules.
31
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
33
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
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
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
38
Chapitre 2
Alcve - Programmer en PHP
39
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
44
Syntaxe du langage
Alcve - Programmer en PHP
45
Syntaxe du langage
Alcve - Programmer en PHP
46
Syntaxe du langage
Alcve - Programmer en PHP
Syntaxe du langage
Alcve - Programmer en PHP
48
Syntaxe du langage
Alcve - Programmer en PHP
Syntaxe du langage
Alcve - Programmer en PHP
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
52
Syntaxe du langage
Alcve - Programmer en PHP
53
Syntaxe du langage
Alcve - Programmer en PHP
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
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
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" ;
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
GLOBALS
HTTP_GET_VARS
HTTP_POST_VARS
HTTP_COOKIE_VARS
65
Syntaxe du langage
Alcve - Programmer en PHP
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
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
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
71
Syntaxe du langage
Alcve - Programmer en PHP
72
Syntaxe du langage
Alcve - Programmer en PHP
73
Syntaxe du langage
Alcve - Programmer en PHP
74
Syntaxe du langage
Alcve - Programmer en PHP
-=
*=
/=
%=
.=
&=
|=
< <=
> >=
75
Syntaxe du langage
Alcve - Programmer en PHP
76
Syntaxe du langage
Alcve - Programmer en PHP
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
79
Objectifs de la section
Introduction ;
Instructions conditionnelles ;
Boucles ;
Inclusions.
80
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
82
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
Prototype :
if (condition) {
# instructions excuter si la condition est vraie...
}
Une chaine de caractre ne contenant que 0 sera value comme
fausse ;
84
85
86
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
88
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
Ex :
if ($type == "Femme") {
echo "Bonjour Madame" ;
} elseif ($type == "Homme") {
echo "Bonjour Monsieur" ;
} else {
echo "Bonjour, vous tes bizarre !" ;
}
90
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
92
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
Ex : compter jusqu 10
$i = 1 ;
while ($i <= 10) {
echo "$i " ;
$i++ ;
}
Affiche 1 2 3 4 5 6 7 8 9 10.
94
95
Prototype :
do {
# instructions excuter la premire fois et ensuite tant que la
condition est vraie...
} while (condition) ;
96
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
98
99
100
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
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
103
104
105
106
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
108
109
Ex :
switch ($type) {
case "Femme" :
echo "Bonjour Madame" ;
break ;
case "Homme" :
echo "Bonjour Monsieur" ;
break ;
default :
echo "Bonjour, vous tes bizarre !" ;
}
110
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
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
Fonctions
Alcve - Programmer en PHP
Fonctions
Alcve - Programmer en PHP
117
Fonctions
Alcve - Programmer en PHP
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
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
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
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
127
Objectifs de la section
Rappels sur la programmation oriente objet ;
Les classes en PHP ;
Les objets en PHP ;
Particularits de PHP.
128
130
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
132
133
135
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
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
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
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
146
Connexions et utilisateurs
Alcve - Programmer en PHP
147
Connexions et utilisateurs
Alcve - Programmer en PHP
148
Connexions et utilisateurs
Alcve - Programmer en PHP
149
Section 2
Alcve - Programmer en PHP
150
Objectifs de la section
Principe ;
Sessions avec PHPlib ;
Sessions avec PHP4.
151
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
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
155
156
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
158
159
Ex : session.php
< ?php
page_open(array("sess" => "MaSession")) ;
if( !isset($toto)) $toto = 1 ;
print ++$toto ;
$sess->register("toto") ;
page_close() ;
?>
160
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
162
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
164
165
167
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
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
172
Autres fonctionnalits
Alcve - Programmer en PHP
173
Autres fonctionnalits
Alcve - Programmer en PHP
174
Autres fonctionnalits
Alcve - Programmer en PHP
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
177
Autres fonctionnalits
Alcve - Programmer en PHP
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
183
Objectifs de la section
Utilisation des SGBDs ;
Interfaage avec lAPI Apache ;
Utilisation de LDAP.
184
Empress
IBM DB2
Informix
Interbase
mSQL
MySQL
Oracle
PostgreSQL
Raima Velocis
Solid
Sybase
186
187
188
Nom
Prenom
132456789
Smith
John
987654321
Gates
Bill
189
190
191
192
193
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
< ?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
196
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
199
200
201
Section 2
Alcve - Programmer en PHP
203
Objectifs de la section
Manipulation des chanes de caractres ;
Expressions rgulires.
204
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
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
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
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
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
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
212
213
214
215
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
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
220
Fonctionnalits utiles
Alcve - Programmer en PHP
221
Fonctionnalits utiles
Alcve - Programmer en PHP
222
Fonctionnalits utiles
Alcve - Programmer en PHP
223
Fonctionnalits utiles
Alcve - Programmer en PHP
Fonctionnalits utiles
Alcve - Programmer en PHP
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
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
229
Fonctionnalits utiles
Alcve - Programmer en PHP
230
Fonctionnalits utiles
Alcve - Programmer en PHP
231
Fonctionnalits utiles
Alcve - Programmer en PHP
Fonctionnalits utiles
Alcve - Programmer en PHP
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
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
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
Fonctionnalits utiles
Alcve - Programmer en PHP
243
Fonctionnalits utiles
Alcve - Programmer en 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
246
Fonctionnalits utiles
Alcve - Programmer en PHP
247
Fonctionnalits utiles
Alcve - Programmer en PHP
248
Fonctionnalits utiles
Alcve - Programmer en PHP
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
251
Fonctionnalits utiles
Alcve - Programmer en PHP
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
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
257
Conclusion
Alcve - Programmer en PHP
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
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
264
Conclusion
Alcve - Programmer en PHP
265
Conclusion
Alcve - Programmer en PHP
266
Conclusion
Alcve - Programmer en PHP
267