Académique Documents
Professionnel Documents
Culture Documents
Programmer en PHP PDF
Programmer en PHP PDF
Julien Gaulmin
julien.gaulmin@alcove.fr
version 1.44
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 ultérieure
telle que publiée, en anglais, par la Free Software Foundation ; sans partie invariante, avec
comme première de couverture (front cover texts) les deux premières pages, et sans partie
considérée comme quatrième de couverture (back cover texts)
Une copie de la licence est fournie en annexe et peut être consultée à l’url :
http ://www.gnu.org/copyleft/fdl.html
Alcôve
Centre Paris Pleyel Tél. : +33 1 49 22 68 00
153 bd Anatole France Fax : +33 1 49 22 68 01
93200 Saint-Denis, France E-mail : alcove@alcove.fr, Toile : www.alcove.fr
1
Table des matières
Chapitre 1 Introduction au langage 3
1.1 La programmation web 5
1.2 Présentation de PHP 18
1.3 Installation et configuration de PHP 29
Chapitre 2 Les bases du langage 38
2.1 Syntaxe du langage 40
2.2 Les structures de contrôle 78
2.3 Fonctions 112
2.4 Programmation orientée objet 126
Chapitre 3 Fonctionnalités essentielles 138
3.1 Connexions et utilisateurs 140
3.2 Gestion des sessions 149
3.3 Autres fonctionnalités 169
Chapitre 4 Utilisation avancée 180
2
3
Chapitre 1
Alcôve - Programmer en PHP
Introduction au langage
Introduction au langage
Alcôve - Programmer en PHP
Objectifs du chapitre
Présentation de PHP ;
Installation et configuration.
5
Section 1
Alcôve - Programmer en PHP
La programmation web
La programmation web
Alcôve - Programmer en PHP
Objectifs de la section
Rappels d’HTML ;
Le web interactif ;
Notions de CGI ;
Distinction PHP/CGI.
7
La programmation web
Alcôve - Programmer en PHP
Rappels d’HTML
La programmation web
Alcôve - Programmer en PHP
9
La programmation web
Alcôve - Programmer en PHP
La programmation web
Alcôve - Programmer en PHP
Le web interactif
11
La programmation web
Alcôve - Programmer en PHP
Côté client :
– scripts embarqués dans la page HTML ( HTML-embedded
scripting ) -> Javascript...,
– applets -> Java, ActiveX...,
– plugins propriétaires.
12
La programmation web
Alcôve - Programmer en PHP
Côté serveur :
– CGI -> Perl, C, Shell...,
– Interpréteurs intégrés au serveur HTTP
13
La programmation web
Alcôve - Programmer en PHP
WWW interactif
14
La programmation web
Alcôve - Programmer en PHP
Notions de CGI
15
La programmation web
Alcôve - Programmer en PHP
Principe de la CGI :
GET/POST
"emballage" APPEL
"variables"
16
La programmation web
Alcôve - Programmer en PHP
if ($want_page==1){ $want_page=0 ; }
17
La programmation web
Alcôve - Programmer en PHP
Distinction PHP/CGI
Section 2
Alcôve - Programmer en PHP
Présentation de PHP
19
Présentation de PHP
Alcôve - Programmer en PHP
Objectifs de la section ;
L’histoire du langage ;
Ses avantages ;
Et ses inconvénients.
20
Présentation de PHP
Alcôve - Programmer en PHP
21
Présentation de PHP
Alcôve - Programmer en PHP
L’histoire du langage
22
Présentation de PHP
Alcôve - Programmer en PHP
23
Présentation de PHP
Alcôve - Programmer en PHP
24
Présentation de PHP
Alcôve - Programmer en PHP
25
Présentation de PHP
Alcôve - Programmer en PHP
26
Présentation de PHP
Alcôve - Programmer en PHP
Le client n’a pas accès au code source puisque celui-ci est interprété
avant envoi ( != Javascript) ;
27
Présentation de PHP
Alcôve - Programmer en PHP
28
Présentation de PHP
Alcôve - Programmer en PHP
Pas aussi rapide que mod_perl ou certains CGI mais plus portable ;
29
Section 3
Alcôve - Programmer en PHP
30
Objectifs de la section
Installation de PHP ;
Premier test ;
31
Installation et configuration de PHP
Alcôve - Programmer en PHP
Installation
32
Configuration de l’installation :
– ./setup (configuration interactive), ou
– ./configure <options> (./configure --help pour
connaître toutes les options).
33
Installation et configuration de PHP
Alcôve - Programmer en PHP
Compilation et installation :
make ; su ; make install
Syntaxe :
– clef = valeur,
– clef = "valeur complexe",
– ; commentaire,
– booléen -> 1, On, True, Yes / 0, Off, False, No.
35
Installation et configuration de PHP
Alcôve - Programmer en PHP
Segmenté en parties :
– options du langage,
– ressources maximales allouées à PHP,
– gestion des erreurs,
– gestion des données HTTP,
– fichiers et répertoires,
– 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
Bravo ! Vous avez créé votre première page dynamique avec PHP et
en plus elle vous résume toutes les fonctionnalités PHP qui sont
configurées sur votre machine.
37
Installation et configuration de PHP
Alcôve - Programmer en PHP
38
Chapitre 2
Alcôve - Programmer en PHP
39
Les bases du langage
Alcôve - Programmer en PHP
Objectifs du chapitre
Syntaxe du langage ;
Fonctions ;
40
Section 1
Alcôve - Programmer en PHP
Syntaxe du langage
41
Syntaxe du langage
Alcôve - Programmer en PHP
Objectifs de la section
Syntaxe de base ;
Les variables ;
Les constantes ;
Les opérateurs.
42
Syntaxe du langage
Alcôve - Programmer en PHP
Syntaxe de base
43
Syntaxe du langage
Alcôve - Programmer en PHP
44
Syntaxe du langage
Alcôve - Programmer en PHP
45
Syntaxe du langage
Alcôve - Programmer en PHP
46
Syntaxe du langage
Alcôve - Programmer en PHP
Ex :
$type = ’M.’ ;
$nom = "Smith" ;
$personne = "$type $nom" ;
48
Syntaxe du langage
Alcôve - Programmer en PHP
50
Syntaxe du langage
Alcôve - Programmer en PHP
Ex :
$tab[0] = 1 ;
$tab[1] = "toto" ; # on peut mélanger les contenus
$tab["toto"] = "titi" ; # on peut mélanger les clés
$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
Alcôve - Programmer en PHP
52
Syntaxe du langage
Alcôve - Programmer en PHP
53
Syntaxe du langage
Alcôve - Programmer en PHP
54
Syntaxe du langage
Alcôve - Programmer en PHP
Ex :
Les variables
La plupart des variables ont une portée qui s’étend sur l’intégralité
du script PHP, elles sont globales ;
56
Syntaxe du langage
Alcôve - Programmer en PHP
Ex :
57
Syntaxe du langage
Alcôve - Programmer en PHP
58
Syntaxe du langage
Alcôve - Programmer en PHP
Ex :
$toto = 1 ; # portée globale
$titi = 2 ; # portée globale
function affiche () {
global $toto ; # portée globale
echo "$toto et $GLOBALS[’titi’]" ;}
affiche() ;
59
Syntaxe du langage
Alcôve - Programmer en PHP
Variables statiques :
Une variable statique est une variable locale qui ne perd pas sa
valeur à chaque fois que le bloc est exécuté ;
Ex : static $toto ;
60
Syntaxe du langage
Alcôve - Programmer en PHP
Affiche 1 2 3 4 5 6 7 8 9 10.
61
Syntaxe du langage
Alcôve - Programmer en PHP
Variables dynamiques :
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
Alcôve - Programmer en PHP
Le nom d’une variable peut être placé entre accolades pour éviter
les ambiguïtés ;
Ex :
63
Syntaxe du langage
Alcôve - Programmer en PHP
Variables extérieures :
Toutes les variables transmises par les méthodes POST ou GET sont
accessibles via les tableaux associatifs $HTTP_POST_VARS et
$HTTP_GET_VARS (si l’option track_vars est activée dans
php3.ini/php.ini) ;
64
Syntaxe du langage
Alcôve - Programmer en PHP
Variables prédéfinies :
65
Syntaxe du langage
Alcôve - Programmer en PHP
http ://hoohoo.ncsa.uiuc.edu/cgi/env.html
66
Syntaxe du langage
Alcôve - Programmer en PHP
67
Syntaxe du langage
Alcôve - Programmer en PHP
Les constantes
Ex :
define("MA_CONSTANTE", "Bonjour") ;
echo MA_CONSTANTE ; # affiche Bonjour
68
Syntaxe du langage
Alcôve - Programmer en PHP
69
Syntaxe du langage
Alcôve - Programmer en PHP
Les opérateurs
70
Syntaxe du langage
Alcôve - Programmer en PHP
71
Syntaxe du langage
Alcôve - Programmer en PHP
72
Syntaxe du langage
Alcôve - Programmer en PHP
$a && $b.
– OU (vrai si $a ou $b vrai(s)) :
$a or $b,
$a || $b.
73
Syntaxe du langage
Alcôve - Programmer en PHP
74
Syntaxe du langage
Alcôve - Programmer en PHP
+= -= *= /= %= .=
&= |= ˆ= < <= > >= ˜=
75
Syntaxe du langage
Alcôve - Programmer en PHP
Ex :
$toto = 0 ;
echo ++$toto ; # affiche 1
echo $toto++ ; # affiche 1
echo $toto ; # affiche 2
76
Syntaxe du langage
Alcôve - Programmer en PHP
77
Syntaxe du langage
Alcôve - Programmer en PHP
L’opérateur 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
Alcôve - Programmer en PHP
79
Les structures de contrôle
Alcôve - Programmer en PHP
Objectifs de la section
Introduction ;
Instructions conditionnelles ;
Boucles ;
Inclusions.
80
Introduction
81
Les structures de contrôle
Alcôve - Programmer en PHP
82
Instructions conditionnelles
83
Les structures de contrôle
Alcôve - Programmer en PHP
Prototype :
if (condition) {
# instructions à exécuter si la condition est vraie...
}
84
Prototype :
if (condition) {
# instructions à exécuter si la condition est vraie...
} else {
# instructions à exécuter si la condition est fausse...
}
85
Les structures de contrôle
Alcôve - Programmer en PHP
86
Prototype :
if (condition1) {
# instructions à exécuter si la condition1 est vraie...
} elseif (condition2) {
# instructions à exécuter si la condition2 est vraie...
} elseif (condition3) {
# instructions à exécuter si la condition3 est vraie...
...
} else {
# instructions à exécuter si aucune des conditions n’est vraie...
}
87
Les structures de contrôle
Alcôve - Programmer en PHP
88
Prototype simplifié :
if (condition1) :
# instructions à exécuter si la condition1 est vraie...
elseif (condition2) :
# instructions à exécuter si la condition2 est vraie...
elseif (condition3) :
# instructions à exécuter si la condition3 est vraie...
...
else :
# instructions à exécuter si aucune des conditions n’est vraie...
endif ;
89
Les structures de contrôle
Alcôve - Programmer en PHP
Ex :
if ($type == "Femme") {
echo "Bonjour Madame" ;
} elseif ($type == "Homme") {
echo "Bonjour Monsieur" ;
} else {
echo "Bonjour, vous êtes bizarre !" ;
}
90
Boucles
91
Les structures de contrôle
Alcôve - Programmer en PHP
92
Prototype :
while (condition) {
# instructions à exécuter tant que la condition est vraie...
}
Prototype simplifié :
while (condition) :
# instructions à exécuter tant que la condition est vraie...
endwhile ;
93
Les structures de contrôle
Alcôve - 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
Il n’y a qu’une syntaxe possible pour les boucles do..while qui est,
elle aussi, héritée du langage C ;
95
Les structures de contrôle
Alcôve - Programmer en PHP
Prototype :
do {
# instructions à exécuter la première 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
Les structures de contrôle
Alcôve - Programmer en PHP
Prototype :
for (expression1 ; condition ; expression2) {
# instructions à exécuter tant que la condition est vraie...
}
98
99
Les structures de contrôle
Alcôve - Programmer en PHP
Prototype simplifié :
for (expression1 ; condition ; expression2) :
# instructions à exécuter tant que la condition est vraie...
endfor ;
100
Ex : compter jusqu’à 10
for ($i = 1 ; $i <= 10 ; $i++) {
echo "$i " ;
}
101
Les structures de contrôle
Alcôve - Programmer en PHP
PHP4 définit une boucle foreach, comme en Perl, pour réaliser une
boucle sur les éléments d’un tableau ;
102
103
Les structures de contrôle
Alcôve - Programmer en PHP
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
Affiche 2 4 6 8 10.
105
Les structures de contrôle
Alcôve - Programmer en PHP
106
Prototype :
switch (expression) {
case resultat1 :
# instructions à exécuter si l’expression vaut resultat1...
break ;
case resultat2 :
# instructions à exécuter si l’expression vaut resultat2...
break ;
...
default :
# instructions à exécuter en dernier recours...
}
107
Les structures de contrôle
Alcôve - Programmer en PHP
108
109
Les structures de contrôle
Alcôve - 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
Inclusions
111
Les structures de contrôle
Alcôve - Programmer en PHP
On peut donc utiliser cette fonction au sein d’une boucle pour inclure
un fichier différent à chaque fois par exemple (ex :
include("toto_$i") ;).
112
Section 3
Alcôve - Programmer en PHP
Fonctions
113
Fonctions
Alcôve - Programmer en PHP
Objectifs de la section
Les arguments.
114
Fonctions
Alcôve - Programmer en PHP
Ex :
function carre($nombre) {
return $nombre * $nombre ;
}
echo carre(3) ; # affiche la valeur 9
116
Fonctions
Alcôve - Programmer en PHP
Ex :
function couleurs() {
return array("Coeur", "Pique", "Trèfle",
"Carreau") ;
}
list($c1, $c2, $c3, $c4) = couleurs() ;
117
Fonctions
Alcôve - Programmer en PHP
118
Fonctions
Alcôve - Programmer en PHP
Ex :
function & trouve_variable ($param) {
# ...recherche de la variable $toto...
return $toto ;
}
$titi = & trouve_variable($tata) ;
$titi->x = 2 ;
119
Fonctions
Alcôve - Programmer en PHP
Les arguments
PHP supporte :
– le passage d’arguments par valeur (méthode par défaut),
– le passage d’arguments par référence, et
– les valeurs par défaut des arguments.
Une liste d’arguments dont le nombre est variable ne fonctionne pas
en PHP mais un résultat similaire peut être obtenu en utilisant un
tableau ;
120
Fonctions
Alcôve - Programmer en PHP
121
Fonctions
Alcôve - 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
Alcôve - Programmer en PHP
Deux possibilités :
– de façon permanente en ajoutant un & devant le nom de la
variable dans la définition de la fonction, ou
– de façon ponctuelle en ajoutant un & devant le nom de la variable
lors de l’appel à la fonction.
123
Fonctions
Alcôve - 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
Alcôve - Programmer en PHP
125
Fonctions
Alcôve - 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
Alcôve - Programmer en PHP
127
Programmation orientée objet
Alcôve - Programmer en PHP
Objectifs de la section
Particularités de PHP.
128
L’ encapsulation :
129
Programmation orientée objet
Alcôve - Programmer en PHP
L’ héritage :
130
Le polymorphisme :
131
Programmation orientée objet
Alcôve - Programmer en PHP
132
Un objet est une instance d’une classe. Son type de données est la
classe d’objets à laquelle il appartient (un peu comme $toto =
123 ; est une instance du type entier ).
133
Programmation orientée objet
Alcôve - Programmer en PHP
class MaClasse {
# Attributs
var $monAttribut ;
# Méthodes
function maMethode($argument) {
# ...traitement de $monAttribut avec $argument...
}
}
134
$monObjet->monAttribut = "toto" ;
$monObjet->maMethode(23) ;
135
Programmation orientée objet
Alcôve - Programmer en PHP
Particularités de PHP
Pas de destructeur.
136
Ex : le Caddie
class Caddie {
var $elements ; # éléments 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 orientée objet
Alcôve - Programmer en PHP
138
Chapitre 3
Alcôve - Programmer en PHP
Fonctionnalités essentielles
139
Fonctionnalités essentielles
Alcôve - Programmer en PHP
Objectifs du chapitre
140
Section 1
Alcôve - Programmer en PHP
Connexions et utilisateurs
141
Connexions et utilisateurs
Alcôve - Programmer en PHP
Objectifs de la section
142
Connexions et utilisateurs
Alcôve - Programmer en PHP
143
Connexions et utilisateurs
Alcôve - Programmer en PHP
Une fois que les champs ont été remplis, l’URL sera de nouveau
appelée mais avec les variables suivantes mises à jour :
– $PHP_AUTH_USER : utilisateur,
– $PHP_AUTH_PW : mot de passe, et
– $PHP_AUTH_TYPE : type d’authentification.
Actuellement, seule l’authentification basique (Basic) est
supportée ;
144
Connexions et utilisateurs
Alcôve - Programmer en PHP
Ex : page d’authentification
< ?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
d’annulation" ;
exit ;
} else {
echo "Bonjour $PHP_AUTH_USER.<br>" ;
echo "Votre mot de passe est $PHP_AUTH_PW." ;
} ?>
145
Connexions et utilisateurs
Alcôve - Programmer en PHP
146
Connexions et utilisateurs
Alcôve - Programmer en PHP
[php3_ignore_user_abort/ignore_user_abort dans
apache.conf.
– exécuter une fonction de fermeture préalablement enregistrée
grâce à la fonction register_shutdown_function().
147
Connexions et utilisateurs
Alcôve - Programmer en PHP
148
Connexions et utilisateurs
Alcôve - Programmer en PHP
149
Section 2
Alcôve - Programmer en PHP
150
Objectifs de la section
Principe ;
151
Gestion des sessions
Alcôve - Programmer en PHP
Principe
152
PHPlib est une bibliothèque PHP libre qui vise à faciliter la création
de sites avec PHP ;
153
Gestion des sessions
Alcôve - Programmer en PHP
Installation :
– récupérer l’archive (http ://phplib.netuse.de),
– la décompresser dans un répertoire quelconque (ex :
/usr/lib/phplib/),
– éditer le fichier php3.ini/php.ini et fixer les options de la
façon suivante :
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
track_vars = On
154
155
Gestion des sessions
Alcôve - Programmer en PHP
Cette base de données et les différentes tables qui sont utilisées par
les scripts utilisant PHPlib doivent être créées par vos soins grâce
aux fichiers de configurations fournis (généralement dans
/usr/lib/phplib/stuff/) ;
156
Pour gérer 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 l’URL ;
157
Gestion des sessions
Alcôve - Programmer en PHP
Vous devez définir vos propres classes qui dérivent des classes
génériques de PHPlib ;
158
159
Gestion des sessions
Alcôve - 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
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
Alcôve - Programmer en PHP
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
Gestion des sessions
Alcôve - Programmer en PHP
Ce numéro est transmis soit sous forme de cookie soit dans les
URLs ;
164
165
Gestion des sessions
Alcôve - Programmer en PHP
Ex :
< ?php session_register("toto") ;
$toto++ ; ?>
Ex :
< ?php session_register("toto") ;
$HTTP_SESSION_VARS["toto"]++ ; ?>
166
167
Gestion des sessions
Alcôve - Programmer en PHP
Ex : compteur de visites
< ?php session_register("compteur") ;
$compteur++ ; ?>
Vous avez vu cette page < ? echo $compteur ; ?>
fois.
< !-- < ?=SID ?> sert à conserver le numéro de
session au cas où les cookies sont desactivés -->
Pour continuer cliquez <A
href="compteur.php ?< ?=SID ?>">ici</A>
168
169
Section 3
Alcôve - Programmer en PHP
Autres fonctionnalités
170
Autres fonctionnalités
Alcôve - Programmer en PHP
Objectifs de la section
Les cookies.
171
Autres fonctionnalités
Alcôve - Programmer en PHP
172
Autres fonctionnalités
Alcôve - Programmer en PHP
173
Autres fonctionnalités
Alcôve - Programmer en PHP
174
Autres fonctionnalités
Alcôve - Programmer en PHP
1 : mail,
3 : fichier local.
Ex : error_log("Alerte rouge", 1,
"webmaster@monsite.fr") ;
175
Autres fonctionnalités
Alcôve - Programmer en PHP
Les cookies
176
Autres fonctionnalités
Alcôve - Programmer en PHP
177
Autres fonctionnalités
Alcôve - Programmer en PHP
178
Autres fonctionnalités
Alcôve - Programmer en PHP
Ex : cookie_ecriture.php
< ?php setcookie("MonCookie", "Contenu", time() +
3600) ; ?>
<HTML><BODY><H1>
Maintenant, vous l’avez !<br>
Allez sur la page
<a href = "cookie_lecture.php">précédente</a>.
</H1></BODY></HTML>
179
Autres fonctionnalités
Alcôve - 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 n’avez pas le cookie MonCookie.<br>
Allez le chercher <a href =
"cookie_ecriture.php">ici</a>.
< ?php endif ; ?>
</H1></BODY></HTML>
180
Chapitre 4
Alcôve - Programmer en PHP
Utilisation avancée
181
Utilisation avancée
Alcôve - Programmer en PHP
Objectifs du chapitre
Fonctionnalités utiles.
182
Section 1
Alcôve - Programmer en PHP
183
Interopérabilité avec des applicatifs
Alcôve - Programmer en PHP
Objectifs de la section
Utilisation de LDAP.
184
L’utilisation des bases des données est la clé de voûte des sites
dynamiques et de commerce électronique ;
185
Interopérabilité avec des applicatifs
Alcôve - Programmer en PHP
186
187
Interopérabilité avec des applicatifs
Alcôve - Programmer en PHP
188
189
Interopérabilité avec des applicatifs
Alcôve - Programmer en PHP
190
191
Interopérabilité avec des applicatifs
Alcôve - Programmer en PHP
résultat.
– mysql_close() : ferme la connexion au serveur MySQL (fait par
défaut à la fin du script).
192
193
Interopérabilité avec des applicatifs
Alcôve - 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
< ?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
Interopérabilité avec des applicatifs
Alcôve - Programmer en PHP
Ces outils étant libres, leur code source peut servir de référence
pour accéder aux bases de données avec PHP ;
196
Ex :
$headers = getallheaders() ;
while (list($header, $valeur) = each($headers)) {
echo "$header : $valeur <BR>\n" ;
}
197
Interopérabilité avec des applicatifs
Alcôve - Programmer en PHP
Utilisation de LDAP
Ex : dn et signification
dn = "cn=Linus Torvalds, ou=Devel, o=Transmeta,
c=USA"
country = USA
organization = Transmeta
organizationUnit = Devel
commonName = Linus Torvalds
199
Interopérabilité avec des applicatifs
Alcôve - Programmer en PHP
200
201
Interopérabilité avec des applicatifs
Alcôve - Programmer en PHP
Section 2
Alcôve - Programmer en PHP
203
Traitement des chaînes de caractères
Alcôve - Programmer en PHP
Objectifs de la section
Expressions régulières.
204
Affichage :
– echo() : affiche une ou plusieurs chaînes séparées par des
virgules,
– print() : affiche une chaîne,
– printf() : affiche une chaîne selon une chaîne 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 chaînes de caractères
Alcôve - Programmer en PHP
Substitutions :
– addslashes() : ajoute un backslash devant tous les caractères
spéciaux,
– stripslashes() : enlève les backslashs ajoutés par la fonction
addslashes,
– str_replace() : remplace toutes les occurrences d’une chaîne
par une autre,
Ex :
print addslashes(’\’ \ "’) ; # affiche \’ \ \"
print str_replace("toto", "titi", "Bonjour
toto !") ; # affiche Bonjour titi !
206
Découpage :
– explode() : scinde une chaîne en morceaux grâce à un
délimiteur,
– implode()/join() : regroupe tous les éléments d’un tableau
dans une chaîne en ajoutant une chaîne de jointure,
– ltrim()/chop() : enlève les espaces de début/fin de chaîne.
Ex :
$composants = "resistance, condensateur,
transistor " ;
$composants = chop($composants) ;
$tableau = explode(", ", $composants) ;
print $tableau[2] . "." ; # affiche transistor.
207
Traitement des chaînes de caractères
Alcôve - Programmer en PHP
Web :
– rawurlencode()/rawurldecode() : encode/décode une
chaîne en URL selon la RFC1738,
– htmlspecialchars()/htmlentities() : converti tous les
caractères spéciaux 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 chaîne et en déduit des variables et
leur valeur,
– strcmp() : comparaison sensible à la casse,
– strlen() : retourne la longueur de la chaîne.
Ex :
parse_str("toto=23& tab[]=Ceci+fonctionne &
tab[]=aussi") ;
print "$toto, $tab[0], $tab[1]" ;
209
Traitement des chaînes de caractères
Alcôve - Programmer en PHP
Casse :
– strtolower()/strtoupper() : met tous les caractères en
minuscule/majuscule,
– ucfirst() : force le premier caractère d’une chaîne en
majuscule,
– ucwords() : force le premier caractère de chaque mot d’une
chaîne en majuscule.
Ex :
$nom = "BiLL GaTeZ" ;
print $nom = strtolower($nom) ; # affiche bill gatez
print strtolower($nom) ; # affiche Bill Gatez
210
Expressions régulières
211
Traitement des chaînes de caractères
Alcôve - Programmer en PHP
212
213
Traitement des chaînes de caractères
Alcôve - Programmer en PHP
214
215
Traitement des chaînes de caractères
Alcôve - Programmer en PHP
Ex :
< ?php $personne = "Nom : Smith, Prénom : 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 n’a pas d’age." ;
# Affiche Cette personne a 52 ans.
216
217
Section 3
Alcôve - Programmer en PHP
Fonctionnalités utiles
218
Fonctionnalités utiles
Alcôve - Programmer en PHP
Objectifs de la section
Fonctions mathématiques ;
PHP et XML ;
219
Fonctionnalités utiles
Alcôve - Programmer en PHP
220
Fonctionnalités utiles
Alcôve - Programmer en PHP
221
Fonctionnalités utiles
Alcôve - Programmer en PHP
222
Fonctionnalités utiles
Alcôve - Programmer en PHP
223
Fonctionnalités utiles
Alcôve - Programmer en PHP
Fonctionnalités utiles
Alcôve - Programmer en PHP
225
Fonctionnalités utiles
Alcôve - 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
Fonctionnalités utiles
Alcôve - Programmer en PHP
227
Fonctionnalités utiles
Alcôve - Programmer en PHP
Les principales fonctions utilisées pour la gestion des URLs sont les
suivantes :
– parse_url : analyse une URL et retourne ses composants sous
forme d’un tableau associatif,
– urlencode/urldecode : encode/décode une chaîne en
remplaçant les caractères spéciaux par des %xx et les espaces
par des + (application/x-www-form-urlencode),
– base64_encode/base64_decode : encode/décode une chaîne
en base64 pour permettre à certains systèmes de manipuler les
informations binaires sur 8 bits (ex : corps de mail).
228
Fonctionnalités utiles
Alcôve - Programmer en PHP
229
Fonctionnalités utiles
Alcôve - Programmer en PHP
230
Fonctionnalités utiles
Alcôve - Programmer en PHP
231
Fonctionnalités utiles
Alcôve - Programmer en PHP
232
Fonctionnalités utiles
Alcôve - Programmer en PHP
233
Fonctionnalités utiles
Alcôve - Programmer en PHP
Les arguments pour créer l’image sont alors passés dans l’URL à la
manière des formulaires en mode GET par exemple (ex : <IMG src
= "bouton.php ?texte=TITRE+BOUTON">)
On peut aussi créer une fonction qui génère l’image mais cette
technique est moins facile à utiliser car il faut s’occuper de stocker
l’image puis éventuellement de la détruire par la suite ;
234
Fonctionnalités utiles
Alcôve - Programmer en PHP
Avant :
Après :
236
Fonctionnalités utiles
Alcôve - Programmer en PHP
Fonctions mathématiques
237
Fonctionnalités utiles
Alcôve - Programmer en PHP
238
Fonctionnalités utiles
Alcôve - Programmer en PHP
– cos()/sin()/tan()/acos()/asin()/atan() : trigonométrie,
– base_convert()/BinDec()/DecBin()/HexDec()/
DecHex()/OctDec()/DecOct() : changements de bases,
– rand()/srand()/getrandmax() : nombres pseudo-aléatoires
(les fonctions mt_* sont meilleures et plus rapides).
239
Fonctionnalités utiles
Alcôve - 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
Fonctionnalités utiles
Alcôve - Programmer en PHP
PHP et XML
241
Fonctionnalités utiles
Alcôve - Programmer en PHP
Fonctions principales :
– xml_parser_create() : crée un parseur XML et retourne un
descripteur de parseur qui sera utiliser par les autres fonctions,
– xml_set_element_handler() : modifie les options associées
à un parseur (sensibilité à la casse, encodage des caractères...),
– xml_set_character_data_handler() : définit les fonctions à
appeler à l’ouverture et à la fermeture d’un tag XML spécifique,
– xml_parse() : le parseur XML,
– xml_parser_free() : élimination d’un parseur XML de la
mémoire.
242
Fonctionnalités utiles
Alcôve - Programmer en PHP
243
Fonctionnalités utiles
Alcôve - Programmer en PHP
244
Fonctionnalités utiles
Alcôve - Programmer en PHP
Ex : le template (expl.ihtml)
<html><head>
<title>{LETITRE}</title>
</head >
<body>
<br>Un exemple de variable :{ICI}
</body></html>
245
Fonctionnalités utiles
Alcôve - Programmer en PHP
246
Fonctionnalités utiles
Alcôve - Programmer en PHP
247
Fonctionnalités utiles
Alcôve - Programmer en PHP
248
Fonctionnalités utiles
Alcôve - Programmer en PHP
Ex :
<form action = "{PHPSELF}">
<select name = "variable">
< !-- BEGIN monbloc ->
<option>{MUL}
< !-- END monbloc ->
</select>
<br><input type="submit"></form>
249
Fonctionnalités utiles
Alcôve - 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
Fonctionnalités utiles
Alcôve - Programmer en PHP
251
Fonctionnalités utiles
Alcôve - Programmer en PHP
252
Fonctionnalités utiles
Alcôve - Programmer en PHP
Bien sûr, seules les commandes encadrées par les < ?php ... ?>
seront interprétées les autres étant affichées telles-quelles ;
253
Fonctionnalités utiles
Alcôve - Programmer en PHP
254
Section 4
Alcôve - Programmer en PHP
Conclusion
255
Conclusion
Alcôve - Programmer en PHP
Objectifs du chapitre
L’avenir de PHP ;
Références ;
Glossaire.
256
Conclusion
Alcôve - Programmer en PHP
257
Conclusion
Alcôve - Programmer en PHP
258
Conclusion
Alcôve - Programmer en PHP
L’avenir de PHP
259
Conclusion
Alcôve - Programmer en PHP
Références
Livres :
– Professional PHP Programming (Wrox),
– Programmation Web avec PHP (Eyrolles),
– PHP, précis & concis (O’Reilly),
– Programmation PHP (CampusPress)...
260
Conclusion
Alcôve - Programmer en PHP
URLs :
– Le site officiel de PHP (http ://www.php.net),
– Documentation officielle en anglais
(http ://www.php.net/manual),
– Traduction française de la documentation officielle
(http ://dev.nexen.net/docs),
– Le site de Zend (http ://www.zend.com),
– Développement PHP/MySQL chez Nexen
(http ://dev.nexen.net)
261
Conclusion
Alcôve - Programmer en PHP
262
Conclusion
Alcôve - Programmer en PHP
Glossaire
263
Conclusion
Alcôve - Programmer en PHP
264
Conclusion
Alcôve - Programmer en PHP
265
Conclusion
Alcôve - Programmer en PHP
266
Conclusion
Alcôve - Programmer en PHP
267