SlideShare a Scribd company logo
1 of 72
Download to read offline
PHP (Hypertext PreProcessor).
Initiation au langage PHP Page 2 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
SOMMAIRE
AVERTISEMENT ............................................................................................................................. 4	
  
I.	
   PRESENTATION ................................................................................................................. 5	
  
1.1.	
   Origines ............................................................................................................................ 5	
  
1.2.	
   principaux atouts.......................................................................................................... 5	
  
1.3.	
   SGBD supportés par PHP........................................................................................... 6	
  
II.	
   IMPLEMENTATION DU CODE........................................................................................ 7	
  
2.1.	
   L'interprétation du code par le serveur ............................................................... 7	
  
2.2.	
   Implantation au sein du code HTML...................................................................... 7	
  
2.3.	
   Les commentaires ........................................................................................................ 8	
  
2.4.	
   Typologie.......................................................................................................................... 8	
  
III.	
   INSTALLATION SOUS WINDOWS............................................................................... 9	
  
3.1.	
   Introduction à WampServer..................................................................................... 9	
  
3.2.	
   Installation ...................................................................................................................... 9	
  
3.3.	
   Editer votre site........................................................................................................... 11	
  
3.4.	
   Autres outils.................................................................................................................. 11	
  
IV.	
   CONCEPT DE VARIABLES AVEC PHP....................................................................... 12	
  
4.1.	
   Declaration et type .................................................................................................... 12	
  
4.2.	
   Nommage des variables........................................................................................... 12	
  
4.3.	
   Variables scalaires...................................................................................................... 12	
  
4.4.	
   Variables tableaux...................................................................................................... 13	
  
4.5.	
   Tests sur les variables.............................................................................................. 16	
  
4.6.	
   Définition de constantes .......................................................................................... 16	
  
V.	
   LES OPERATEURS........................................................................................................... 17	
  
5.1.	
   Les opérateurs arithmétiques .............................................................................. 17	
  
5.2.	
   Les opérateurs d'assignation ................................................................................. 17	
  
5.3.	
   Les opérateurs d'incrémentation / Décrémentation ..................................... 18	
  
5.4.	
   Les opérateurs de comparaison............................................................................ 19	
  
5.5.	
   Les opérateurs logiques (booléens) .................................................................... 19	
  
5.6.	
   (Les opérateurs bit-à-bit)........................................................................................ 20	
  
5.7.	
   (Les opérateurs de rotation de bit) ..................................................................... 20	
  
5.8.	
   Autres opérateurs....................................................................................................... 21	
  
5.9.	
   Les priorités .................................................................................................................. 21	
  
VI.	
   STRUCTURES CONDITIONNELLES........................................................................... 23	
  
6.1.	
   La notion de bloc ........................................................................................................ 23	
  
6.2.	
   Les primitives de choix............................................................................................. 23	
  
6.3.	
   L'instruction if ... elseif ... else.............................................................................. 24	
  
6.4.	
   Les boucles.................................................................................................................... 26	
  
VII.	
   LA NOTION DE FONCTION.......................................................................................... 30	
  
7.1.	
   La déclaration d'une fonction................................................................................. 30	
  
7.2.	
   Appel de fonction........................................................................................................ 30	
  
7.3.	
   Portée (visibilité) des variables............................................................................. 32	
  
7.4.	
   Retourner plusieurs variables................................................................................ 35	
  
7.5.	
   La récursivité................................................................................................................ 35	
  
7.6.	
   Les fonctions standards d’affichage................................................................... 36	
  
VIII.	
   FONCTION MAIL.............................................................................................................. 39	
  
8.1.	
   La fonction mail() ....................................................................................................... 39	
  
8.2.	
   Les options / en-têtes............................................................................................... 39	
  
Initiation au langage PHP Page 3 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
8.3.	
   La fonction email()..................................................................................................... 40	
  
IX.	
   NOTION DE VARIABLES D'ENVIRONNEMENT .................................................... 41	
  
9.1.	
   Les variables d'environnement ............................................................................. 41	
  
9.2.	
   Affichage des variables d'environnement ......................................................... 42	
  
X.	
   LA GESTION DES FICHIERS AVEC PHP.................................................................. 44	
  
10.1.	
   La fonction fopen() .................................................................................................... 44	
  
10.2.	
   Lecture et écriture...................................................................................................... 45	
  
10.3.	
   Les tests de fichiers................................................................................................... 46	
  
10.4.	
   Quelques fonctions de manipulation de fichiers............................................. 47	
  
XI.	
   LES EXPRESSIONS REGULIERES.............................................................................. 49	
  
11.1.	
   Construire une expression régulière................................................................... 49	
  
11.2.	
   Les classes de caractères........................................................................................ 51	
  
11.3.	
   Les fonctions de manipulation d'expressions régulières............................. 51	
  
XII.	
   CREATION D’IMAGES.................................................................................................... 54	
  
12.1.	
   Prérequis........................................................................................................................ 54	
  
12.2.	
   Comment utiliser ces fonctions............................................................................. 54	
  
12.3.	
   L'allocation de couleur.............................................................................................. 55	
  
12.4.	
   La création de formes............................................................................................... 55	
  
12.5.	
   Les chaînes de caractères ....................................................................................... 56	
  
12.6.	
   Un diagramme de visiteurs..................................................................................... 58	
  
XIII.	
   LES SESSIONS ET LES COOKIES ............................................................................. 61	
  
13.1.	
   Les sessions.................................................................................................................. 61	
  
13.2.	
   Les cookies.................................................................................................................... 63	
  
XIV.	
   NOTION DE CLASSES ................................................................................................... 66	
  
14.1.	
   introduction................................................................................................................... 66	
  
14.2.	
   sousclasse...................................................................................................................... 66	
  
14.3.	
   Quelques fonctions : ................................................................................................. 66	
  
14.4.	
   remarque ....................................................................................................................... 67	
  
XV.	
   INTRODUCTION AUX BASES DE DONNEES (MYSQL)....................................... 68	
  
15.1.	
   Introduction .................................................................................................................. 68	
  
15.2.	
   Connexion à une base de données...................................................................... 68	
  
15.3.	
   manipulation................................................................................................................. 69	
  
15.4.	
   Quelques fonctions supplémentaires très utiles............................................. 70	
  
XVI.	
   MINI PROJET..................................................................................................................... 71	
  
Initiation au langage PHP Page 4 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
AVERTISEMENT
Cet ouvrage s’adresse aux étudiants des filières informatiques et à tous ceux qui sont passionnés
de la programmation informatique en generale et en particulier du developpement web
dynamique.
Pour toutes vos remarques et suggestion contactez
nabeledi@yahoo.fr
Initiation au langage PHP Page 5 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
I.PRESENTATION
1.1. Origines
C’est un langage incrusté au HTML et interprété côté serveur (comme les scripts CGI, ASP, ...) et
non du côté client (comme un script écrit en Javascript ou une applet Java ...).
Il dérive du C et du Perl dont il reprend la syntaxe. Il est extensible grâce à de nombreux modules
et son code source est ouvert. Comme il supporte tous les standards du web et qu’il est gratuit, il
s’est rapidement répandu sur la toile.
Le langage PHP a été créé au début d'automne 1994 par Rasmus Lerdorf. Ce langage de
script lui permettait de conserver la trace des utilisateurs venant consulter son CV sur son site,
grâce à l'accès à une base de données par l'intermédiaire de requêtes SQL. Ainsi, étant donné que
de nombreux internautes lui demandèrent ce programme, Rasmus Lerdorf mit en ligne
en 1995 la première version de ce programme qu'il baptisa Personal Sommaire Page Tools, puis
Personal Home Page v1.0 (traduisez page personnelle version 1.0).
Etant donné le succès de PHP 1.0, Rasmus Lerdorf décida d'améliorer ce langage en y
intégrant des structures plus avancées telles que des boucles, des structures conditionnelles, et y
intégra un package permettant d'interpréter les formulaires qu'il avait développé (FI, Form
Interpreter) ainsi que le support de mSQL. C'est de cette façon que la version 2 du langage,
baptisée pour l'occasion PHP/FI version 2, vit le jour durant l'été 1995. Il fut rapidement utilisé sur
de nombreux sites (15000 fin 1996, puis 50000 en milieu d'année 1997).
A partir de 1997, Zeev Suraski et Andi Gutmans rejoignirent Rasmus pour
former une équipe de programmeurs afin de mettre au point PHP 3 (Stig Bakken,
Shane Caraveo et Jim Winstead les rejoignèrent par la suite). C'est ainsi que la
version 3.0 de PHP fut disponible le 6 juin 1998.
Le nouveau moteur, appelé 'Zend Engine' (combinaison des noms de Zeev et Andi), atteint
ces objectifs avec succès, et la première version fut publiée vers la mi-1999. PHP 4.0, s'appuyant
sur ce moteur et amélioré par un grand nombre de nouvelles fonctionnalités fut publié
officiellement en mai 2000, presque 2 ans après son prédécesseur. En plus de performances
nettement plus élevées, PHP 4.0 apportait le support de nombreux serveurs web, les sessions
HTTP, la bufferisation de sortie, une sécurité accrue des informations visiteurs et plusieurs
nouvelles structures de langage.
Hypertext Preprocessor (acronyme récursif à l’exemple du système Open Source Linux : Is Not
UniX) est la signification officielle de PHP.
En juillet 2000 plus de 300.000 sites tournaient sous PHP !
PHP 5 est sorti en Juillet 2004 après un long développement et plusieurs pré-versions. Il est régi
par son moteur, le Zend Engine 2.0 avec un nouveau modèle et des dizaines de nouvelles
fonctionnalités.
30 juin 2009 , PHP 5.3 est enfin disponible en version finale . La dernière mise à jour est la 5.3.2
datant du 4 mars 2010
La nouvelle monture de la plateforme star du Web est en cours de préparation : PHP 6 avec
l’amélioration de la Programmation Orienté Objet, l’amélioration et sécurisation des fonctionnalités,
1.2. principaux atouts
La gratuité et la disponibilité du code source (PHP est distribué sous licence GNU GPL),
La simplicité d'écriture de scripts,
La possibilité d'inclure le script PHP au sein d'une page HTML (contrairement aux scripts CGI, pour
lesquels il faut écrire des lignes de code pour afficher chaque ligne en langage HTML)
Initiation au langage PHP Page 6 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
La simplicité d'interfaçage avec des bases de données (de nombreux SGBD sont supportés, mais le
plus utilisé avec ce langage est MySQL, un SGBD gratuit disponible sur les plateformes Linux, et
Windows).
L'intégration au sein de nombreux serveurs web (Apache, Microsoft IIS, ...)
1.3. SGBD supportés par PHP
PHP permet un interfaçage simple avec de nombreux SGBD.
PHP supporte les SGBD suivants (la liste est évolutive):
Adabas D
DBase
Empress
FilePro
Informix
Interbase
MSQL
MySQL
Oracle
PostgreSQL
Solid
Sybase
Velocis
Unix dbm
Hyperwave
IBM DB2
Ingres
FrontBase
Ovrimos
FilePro (lecture seule)
Il existe aussi des couches d'abstraction de base de données comme DBX qui vous permettent de
vous connecter de manière transparente à toute base de données supportée par cette extension.
De plus, PHP supporte ODBC, ce qui vous permet de vous connecter à toute autre base de
données qui supporte ce standard.
PHP supporte de nombreux protocoles comme par exemple LDAP, IMAP, SNMP, NNTP, POP3,
HTTP, COM (sous Windows) et encore d'autres. Vous pouvez ouvrir des sockets réseau, et
intéragir avec n'importe quel autre protocole. PHP supporte le format complexe WDDX, qui permet
de communiquer entre tous les langages web. En terme d'interconnexion, PHP supporte aussi les
instanciations d'objets Java, et les utilise de manière transparente comme objets intégrés. Vous
pouvez aussi exploiter les objets distants avec CORBA.
PHP dispose de fonctionnalités extrêmement utiles pour le traitement de texte, allant des
expressions régulières POSIX étendues ou Perl aux traitements des fichiers XML, avec les
standards SAX et DOM. Vous pouvez utiliser les transformations XSLT.
En commerce électronique, vous trouverez des outils de paiement intégrés comme Cybercash,
CyberMut, VeriSign Payflow Pro et CCVS, pour réaliser des paiements en ligne.
Initiation au langage PHP Page 7 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
II.IMPLEMENTATION DU CODE
2.1. L'interprétation du code par le serveur
Un script PHP est un simple fichier texte contenant des instructions écrites à l'aide de caractères
ASCII 7 bits (des caractères non accentués) incluses dans un code HTML à l'aide de balises
spéciales et stocké sur le serveur. Ce fichier doit avoir l'extension ".php" ou".php3" ou ".php4" ou
".php5" pour être interprété par le serveur!
Ainsi, lorsqu'un navigateur (le client) désire accéder à une page dynamique réalisé en php:
le serveur reconnaît qu'il s'agit d'un fichier php
il lit le fichier php
Dès que le serveur rencontre une balise indiquant que les lignes suivantes sont du code php, il
"passe" en mode php, ce qui signifie qu'il ne lit plus les instructions: il les exécute!
Lorsque le serveur rencontre une instruction, il la transmet à l'interpréteur
L'interpréteur exécute l'instruction puis envoie les sorties éventuelles au serveur
A la fin du script, le serveur transmet le résultat au client (le navigateur)
Le code php stocké sur le serveur n'est donc jamais visible directement par le client puisque dès
qu'il en demande l'accès, le serveur l'interprète!
De cette façon aucune modification n'est à apporter sur les navigateurs...
2.2. Implantation au sein du code HTML
Pour que le script soit interprété par le serveur deux conditions sont nécessaires:
Le fichier contenant le code doit avoir l'extension .php et non .htm
Le code php contenu dans le code HTML doit être délimité par les balises
<?php et ?> ou <? et ?> ou <script language="php"> et </script>
Exemple
Voici l'exemple le plus utilisé de script php:
<?php
echo "bonjour monde"; // affiche bonjour monde
?>
On notera bien évidemment que la fonction echo permet d'afficher sur le navigateur la chaîne
délimitée par les guillemets...
Le séparateur d'instructions est le point virgule ; . Il est obligatoire, sauf si l'instruction est
suivie de la balise ?>
Initiation au langage PHP Page 8 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
2.3. Les commentaires
Une autre façon de rendre le code plus compréhensible consiste à insérer des commentaires, des
lignes qui seront tout simplement ignorées par le serveur lors de l'interprétation. Pour ce faire, il
est possible, comme en langage C ou C++ d'utiliser des balises qui vont permettre de délimiter
les explications afin que l'interpréteur les ignore et passe directement à la suite du code.
Commentaire sur une ligne: // ou #
Commentaire sur plusieurs lignes: /* ... */
Les commentaires peuvent être placés n'importe où à l'intérieur des délimiteurs de script PHP
Les commentaires ne peuvent contenir le délimiteur de fin de commentaire (*/)
Les commentaires ne peuvent être imbriqués
Les commentaires peuvent être écrits sur plusieurs lignes
Les commentaires ne peuvent pas couper un mot du code en deux
2.4. Typologie
La manière d'écrire les choses en langage PHP a son importance. Le langage PHP est sensible à la
casse (en anglais case sensitive), cela signifie qu'un nom contenant des majuscules est différent
du même nom écrit en minuscules. Toutefois, cette règle ne s'applique pas aux fonctions, les
spécifications du langage PHP précisent que la fonction print peut être appelée print(), Print()
ou PRINT().
Initiation au langage PHP Page 9 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
III.INSTALLATION SOUS WINDOWS
3.1. Introduction à WampServer
Afin de faire fonctionner PHP, il est nécessaire à la base d'en télécharger les sources depuis un site
spécialisé (par exemple PHP.net), puis de les compiler (ainsi que d'éditer les liens) afin de créer
un fichier exécutable.
Ce processus demande des notions avancées en informatique, c'est pourquoi un adepte de PHP
(Romain Bourdon) a mis au point un package WampServer contenant 3 produits
incontournables de la scène PHP :
Le serveur Web Apache
Le moteur de scripts PHP4
La base de données MySQL
WampServer est ainsi un pack fonctionnant sous Windows permettant d'installer en un clin d'oeil
les éléments nécessaires au fonctionnement d'un site web dynamique développé en PHP
Le pack WampServer est disponible sur http://www.wampserver.com
Il vous suffit dans un premier temps de télécharger et installer la version la plus récente (à ce
jour WampServer 2.0i)
3.2. Installation
Double cliquez sur le fichier téléchargé et laissez vous guider.
Tout est géré par l'installeur de WampServer. Par défaut, WampServer est livré avec les toutes
dernières versions de Apache, MySQL et PHP.
Si tout va bien, vous devriez voir apparaître un petit symbole en bas à droite de votre barre des
tâches, un symbole blanc ( il est tout à gauche) :
Si ce symbole a un fond blanc comme ici, c'est parfait. Si le fond est jaune ou rouge, cela signifie
que les services ne se sont pas installés correctement, ou qu'ils n'ont pu démarrer. Dans le doute,
relancez Wampserver après l'avoir quitté proprement (clic droit, exit).
Une fois Wampserver installé, vous allez pouvoir consulter sa page d'accueil par défaut (réalisée
en PHP).
Initiation au langage PHP Page 10 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Pour ce faire :
• Invoquez localhost du menu contextuel de wampserver
Ou bien
• Démarrez votre navigateur web, puis tapez dans la bare d'adresses ceci :
http://localhost/
OU
http://127.0.0.1/ .
(si un autre service web n’est pas activé sur le port 80 de la machine)
Initiation au langage PHP Page 11 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Les deux adresses ci-dessus représentant votre machine locale.
3.3. Editer votre site
Pour créer votre site web dynamique avec WampServer, il vous suffit de déposer vos créations
dans le sous-répertoire www/ de wamp/ depuis la racine du disque d’intallation.
Par exemple créez un fichier phpinfo.php texte contenant le texte suivant :
<?
phpinfo();
?>
Déposez-le dans le sous répertoire /www. Vous pouvez désormais visualiser le résultat à l'adresse
suivante: http://localhost/phpinfo.php ou http://127.0.0.1/phpinfo.php
3.4. Autres outils
Des packages peuvent remplacer WampServer et sont laissés à l’appréciation du lecteur.
EasyPhp
Inclu :
• Apache
• MySQL
• PHP
XAMPP
Uune "distribution" d'Apache qui contient également
• Apache
• MySQL
• PHP et PERL
LAMP
Sur Linux mais disponible aussi pour windows inclut
• Apache
• Mysql
• Php
Initiation au langage PHP Page 12 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
IV.CONCEPT DE VARIABLES AVEC PHP
4.1. Declaration et type
Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être
modifiées lors de l'exécution du programme.
Le typage des variables est implicite en php. Il n’est donc pas nécessaire de déclarer leur type au
préalable ni même de les initialiser avant leur utilisation.
Les identificateurs de variable sont précédés du symbole « $ » (dollars). Exemple : $nabson .
Les variables peuvent être de type :
• entier (integer),
• réel (double),
• chaîne de caractères (string),
• tableau (array),
• objet (object),
• booléen (boolean).
Il est possible de convertir une variable en un type primitif grâce au cast (comme en C).
Exemple :
$str = ’’12’’; // $str vaut la chaîne ‘’12’’
$nbr = (int)$str; // $nbr vaut le nombre 12
4.2. Nommage des variables
Avec PHP, les noms de variables doivent répondre à certains critères:
Un nom de variable doit commencer par une lettre (majuscule ou minuscule) ou un "_" (pas par
un chiffre)
Un nom de variable peut comporter des lettres, des chiffres et le caractère _ (les espaces ne sont
pas autorisés!)
Nom de variable correct Nom de variable incorrectRaison
$Variable $Nom de Variable comporte des espaces
$Nom_De_Variable $123Nom_De_Variable commence par un chiffre
$nom_de_variable $toto@mailcity.com caractère spécial @
$nom_de_variable_123 $Nom-de-variable signe – interdit
$nom_de_variable nom_de_variable ne commence pas par $
Les noms de variables sont sensibles à la casse (le langage PHP fait la différence entre un nom en
majuscule et un nom en minuscules), il faut donc veiller à utiliser des noms comportant la même
casse! Toutefois, les noms de fonctions font exception à cette règle...
4.3. Variables scalaires
Le langage PHP propose trois types de variables scalaires:
entiers: nombres naturels sans décimale (sans virgule)
réels: nombres décimaux (on parle généralement de type double, car il s'agit de nombre
décimaux à double précision)
chaînes de caractères: ensembles de caractères entre guillemets simples ou doubles
Il n'est pas nécessaire en PHP de typer les variables, c'est-à-dire de définir leur type, il suffit de
leur assigner une valeur pour en définir le type.
Initiation au langage PHP Page 13 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Instruction Type de la variable
$Variable = 0; type entier
$Variable = 12; type entier
$Variable = 0.0; type réel
$Variable = 12.0; type réel
$Variable = "0.0"; type chaîne
$Variable = "Bonjour tout le monde"; type chaîne
Il existe des caractères repérés par un code ASCII spécial permettant d'effectuer des opérations
particulières. Ces caractères peuvent être représentés plus simplement en langage PHP grâce au
caractère '' suivi d'une lettre, qui précise qu'il s'agit d'un caractère de contrôle:
Caractère Description
" Guillemet
 barre oblique inverse (antislash)
r retour chariot
n retour à la ligne
t Tabulation
En effet, certains de ces caractères ne pourraient pas être représentés autrement (un retour à la
ligne ne peut pas être représenté à l'écran). D'autre part, les caractères  et " ne peuvent pas faire
partie en tant que tel d'une chaîne de caractère, pour des raisons évidente d'ambiguïté...
4.4. Variables tableaux
4.4.1. Géneralités
Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la
fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes
seraient beaucoup trop lourdes à gérer. Heureusement, PHP propose des structures de données
permettant de stocker l'ensemble de ces données dans une "variable commune". Ainsi, pour
accéder à ces valeurs il suffit de parcourir la variable de type complexe composée de "variables"
de type simple.
Les tableaux stockent des données sous forme de liste. Les données contenues dans la liste sont
accessibles grâce à un index (un numéro représentant l'élément de la liste). Contrairement à des
langages tels que le langage C, il est possible de stocker des éléments de types différents dans un
même tableau.
Pour créer un tableau, utiliser la fonction array( );
Exemple
Déclaration
$fruits = array();
Affectation
$fruits[0]= "pomme";
$fruits[1]= "banane";
$fruits[] = "orange"; // equivaut a $fruits[2]= "orange"
ou
$fruits= array( "pomme", "banane", "orange" );
Ainsi, pour désigner un élément de tableau, il suffit de faire suivre au nom du tableau l'indice de
l'élément entre crochets:
Initiation au langage PHP Page 14 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Avec PHP, il n'est pas nécessaire de préciser la valeur de l'index lorsque l'on veut remplir un
tableau, car il assigne la valeur 0 au premier élément (si le tableau est vide) et incrémente les
indices suivants. De cette façon, il est facile de remplir un tableau avec des valeurs.
4.4.2. Tableaux multidimensionnels
Comme nous l'avons déjà vu dans sur les tableaux à une dimension (les vecteurs), nous savons
que nous pouvons mettre absolument tout ce que l'on veut dans chaque casier de notre tableau. Y
compris même un autre tableau. Hé bien c'est exactement comme ça qu'on déclare un tableau à
deux dimensions.
Si l'on ne sait pas à l'avance ce que l'on va mettre dans chaque casier, on déclare ce tableau de la
manière suivante :
$Tableau = array(array()) ;
Il est possible de créer directement des tableaux multidimensionnels en utilisant plusieurs paires
de crochets pour les index (autant de paires de crochets que la dimension voulue). Par exemple,
un tableau à deux dimensions pourra être déclaré comme suit:
$Tableau[0][0] = 12;
$Tableau[0][1] = "ntic";
$Tableau[1][0] = 123.4567;
$Tableau[1][1] = "Au revoir";
4.4.3. Tableau associatif
Un tableau associatif est un tableau dont l'index est une chaine de caractère au lieu d'un nombre.
On parle aussi de ``hash array'' ou ``hash''. Cette façon de nommer les indices peut parfois être
plus agréable à utiliser.Le tableau associatif se déclare comme un tableau traditionnel
Exemple1
Déclaration
$personne = array();
Affectation
$personne["Nom"] = "Konan";
$personne["Prénom"] = "Jules";
$personne["Age"] = 31;
L’initialisation d’un tableau associatif est similaire à celle d’un tableau normal.
Exemple 2
$personne = array("Nom" => "Konan", "Prénom" => "Jules", "Age" => 31 );
Les exemples 1 et 2 sont equivalents
Ici à la clé "Nom" est associée la valeur "Konan".
4.4.4. Quelques fonctions relatives aux tableaux :
a) sizeof
Renvoie le nombre d'éléments d'un tableau. Équivalent de count
$sz= sizeof( $tablo );
b) is_array
Renvoie true si la variable est de type tableau (ou tableau associatif), false sinon.
Initiation au langage PHP Page 15 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
c) reset
reset($tablo)
Place le pointeur interne sur le premier élément du tableau: Chaque variable tableau possède un
pointeur interne repérant l'élément courant.
d) end
end($tablo)
Place le pointeur interne du tableau sur le dernier élément du tableau.
e) current
Renvoie l'élément courant du tableau.
f) next
Déplace le pointeur vers l'élément suivant, et renvoie cet élément. Renvoie false s’il n'existe pas .
g) prev
Déplace le pointeur vers l'élément précédent, et renvoie cet élément. Renvoie false s’il n'existe pas
Exemple
$transport = array('pied', 'velo', 'voiture', 'avion');
$mode = current($transport); // $mode = 'pied';
$mode = next($transport); // $mode = 'velo';
$mode = next($transport); // $mode = 'voiture';
$mode = prev($transport); // $mode = 'velo';
$mode = end($transport); // $mode = 'avion';
h) each
$a=each($tablo)
Renvoie l'index et la valeur courante dans un tableau à 2 éléments; $a[0] contient l'index, $a[1] la
valeur.
i) list
list( $scalar1, $scalr2, ... )
Construit un tableau temporaire à partir des variables scalaires passées en argument.
$tableau = array('le bon', 'la brute', 'le truand');
reset($tableau);
while ( list($clef, $valeur) = each($tableau) ) {
echo "$clef = $valeur <br />";
}
/*
0 = le bon
1 = la brute
2 = le truand
*/
j) key
key($tablo)
Renvoie l'index de l'élément courant du tableau.
Initiation au langage PHP Page 16 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
4.5. Tests sur les variables
La fonction isset permet de tester si une variable est définie.
La fonction unset permet de supprimer la variable, et de désallouer la mémoire utilisée.
$a= "php";
echo isset($a); // => 1 (vrai)
unset($a);
echo isset($a); // => 0 (faux)
La fonction gettype permet de connaître le type de la variable. Elle renvoie une chaîne : ``string''
ou ``integer'' ou ``double'' ou ``array'' ou ``object''. Note : Si la variable n'est pas définie, elle
renvoie "string"
$a= 12;
echo gettype($a) ; // => "integer"
$a= $a / 10;
echo gettype($a) ; // => "double"
On peut également tester un type particulier a l'aide des fonctions is_array, is_string,
is_int,is_float, is_object .
$a= 123;
echo is_int($a); // (vrai)
echo is_double($a); // (faux)
echo is_string($a) // (faux)
$a += 0.5;;
echo is_float($a); // (vrai)
Note: Les fonctions is_double et id_real sont équivalentes a is_float. Les fonctions is_long et
is_integer sont équivalentes a is_int.
4.6. Définition de constantes
Une constante est une variable dont la valeur est inchangeable lors de l'exécution d'un
programme. Avec PHP, les constantes sont définies grâce à la fonction define(). la syntaxe de la
fonction define() est la suivante:
define("Nom_de_la_variable", Valeur);
Exemple 1
define(‘’auteur’’,’’Nabeledi’’);
echo auteur; // affiche ‘Nabeledi’
Exemple 2
define(MY_YEAR,2010);
echo MY_YEAR; // affiche 2010
Contrairement aux variables, les identificateurs de constantes (et aussi ceux de fonction) ne sont
pas sensibles à la casse.
Le nom d'une constante définie à l'aide de la fonction define() ne doit pas commencer par le
caractère $ (de cette façon aucune affectation n'est possible).
Initiation au langage PHP Page 17 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
V. LES OPERATEURS
Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer
des opérations, les évaluer, ...
On distingue plusieurs types d'opérateurs:
Les opérateurs arithmétiques
Les opérateurs d'assignation
Les opérateurs d'incrémentation
Les opérateurs de comparaison
Les opérateurs logiques
(Les opérateurs bit-à-bit)
(Les opérateurs de rotation de bit)
5.1. Les opérateurs arithmétiques
Les opérateurs de calcul permettent de modifier mathématiquement la valeur d'une variable
Opérateur Dénomination Effet Exple
Résultat
(pour x=7)
+ opérateur d'addition Ajoute deux valeurs $x+3 10
- opérateur de soustraction Soustrait deux valeurs $x-3 4
* opérateur de multiplication Multiplie deux valeurs $x*3 21
/ plus: opérateur de division Divise deux valeurs $x/3 2.3333333
% opérateur modulo
Donne le reste de la
division entière entre 2
nombres
$x%3 1
5.2. Les opérateurs d'assignation
L'opérateur d'assignation le plus simple est le signe "=". Le premier réflexe est de penser que ce
signe veut dire "égal à". Ce n'est pas le cas. Il signifie que l'opérande de gauche se voit affecter la
valeur de l'expression qui est à droite du signe égal.
La valeur d'une expression d'assignation est la valeur assignée. Par exemple, la valeur de
l'expression '$a = 3' est la valeur 3. Cela permet d'utiliser des astuces telles que :
Exemple
<?php
$b = 4 ;
$a = $b + 5;
// $b vaut 4 et $a est maintenant égal à 9
?>
En plus du simple opérateur d'assignation, il existe des "opérateurs combinés" pour tous les
opérateurs arithmétiques et pour les opérateurs sur les chaînes de caractères. Cela permet
d'utiliser la valeur d'une variable dans une expression et d'affecter le résultat de cette expression à
cette variable.
Exemple
Initiation au langage PHP Page 18 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
<?php
$a = 3;
$a += 5; // affecte la valeur 8 à la variable $a.
// correspond à l'instruction '$a = $a + 5');
$b = "Bonjour ";
$b .= " tout le monde!";
// affecte la valeur "Bonjour tout le monde!" à la
variable $b
// identique à $b = $b." tout le monde!";
?>
Ces opérateurs permettent de simplifier des opérations telles que ajouter une valeur dans une
variable et stocker le résultat dans la variable.
Opérateur Effet
= Affecte la valeur de droite à la variable de gauche
+= addition deux valeurs et stocke le résultat dans la variable (à gauche)
- = soustrait deux valeurs et stocke le résultat dans la variable
*= multiplie deux valeurs et stocke le résultat dans la variable
/= divise deux valeurs et stocke le résultat dans la variable
%= donne le reste de la division deux valeurs et stocke le résultat dans la variable
|= Effectue un OU logique entre deux valeurs et stocke le résultat dans la variable
^= Effectue un OU exclusif entre deux valeurs et stocke le résultat dans la variable
&= Effectue un Et logique entre deux valeurs et stocke le résultat dans la variable
.= Concatène deux chaînes et stocke le résultat dans la variable
5.3. Les opérateurs d'incrémentation / Décrémentation
Ce type d'opérateur permet de facilement augmenter ou diminuer d'une unité une variable. Ces
opérateurs sont très utiles pour des structures telles que des boucles, qui ont besoin d'un
compteur (variable qui augmente de un en un).
Un opérateur de type $x++ permet de remplacer des notations lourdes telles que $x=$x+1 ou
bien $x+=1
Exemple Nom Résultat
++$a Pré-incrémente Incrémente $a de 1, puis retourne $a.
$a++ Post-incrémente Retourne $a, puis l'incrémente de 1.
--$a Pré-décrémente Décrémente $a de 1, puis retourne $a.
$a-- Post-décrémente Retourne $a, puis décrémente $a de 1.
Exemple
<?php
//Post-incrémentation
$a = 5;
echo $a++ . "<br>n"; // la valeur de a est :5
echo $a . "<br>n"; // la valeur de a est :6
//Pré-incrémentation
$a = 5;
echo ++$a . "<br>n"; // la valeur de a est :6
Initiation au langage PHP Page 19 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
echo $a . "<br>n"; // la valeur de a est :6
//Post-décrémentation
$a = 5;
echo $a-- . "<br>n"; // la valeur de a est :5
echo $a . "<br>n"; // la valeur de a est :4
//Pré-décrémentation
$a = 5;
echo --$a. "<br>n" ; // la valeur de a est :4
echo $a . "<br>n"; // la valeur de a est :4
?>
5.4. Les opérateurs de comparaison
Ce type d’poperateur permet de faire ds comparaiasons
Exemple Nom Résultat
$a == $b Egal Vrai si $a est égal à $b.
$a === $b Identique
Vrai si $a est égal à $b et qu'ils sont de même type (PHP
4 seulement).
$a != $b Différent Vrai si $a est différent de $b.
$a <> $b Différent Vrai si $a est différent de $b.
$a < $b Plus petit que Vrai si $a est plus petit strictement que $b.
$a > $b Plus grand Vrai si $a est plus grand strictement que $b.
$a <= $b Inférieur ou égal Vrai si $a est plus petit ou égal à $b.
$a >= $b Supérieur ou égal Vrai si $a est plus grand ou égal à $b.
Un autre opérateur conditionnel est l'opérateur ternaire (":?"), qui fonctionne comme en langage
C.
Exemple
<?php
// Exemple d'utilisation pour l'opérateur ternaire
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// L'expression ci-dessus est identique à
if (empty($_POST['action'])) {
$action = 'default';
} else {
$action = $_POST['action'];
}
?>
L'expression (expr1) ? (expr2) : (expr3) renvoie la valeur de l'expression expr2 si
l'expression expr1 est vraie, et l'expression expr3 si l'expression expr1 est fausse.
5.5. Les opérateurs logiques (booléens)
Ce type d'opérateur permet de vérifier si plusieurs conditions sont vraies:
Exemple Nom Portée Résultat
$a and $b ET (And) ET logique Vrai si $a ET $b sont vrais.
$a or $b OU (Or) OU logique Vrai si $a OU $b est vrai
Initiation au langage PHP Page 20 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
$a xor $b XOR (Xor) OU exclusif Vrai si $a OU $b est vrai, mais pas les deux en même
temps.
! $a NON (Not) NON logique Vrai si $a est faux.
$a && $b ET (And) ET logique Vrai si $a ET $b sont vrais.
$a || $b OU (Or) OU logique Vrai si $a OU $b est vrai.
5.6. (Les opérateurs bit-à-bit)
Si vous ne comprenez pas ces opérateurs cela n'est pas important, vous n'en aurez probablement
pas besoin.
Ce type d'opérateur traite ses opérandes comme des données binaires, plutôt que des données
décimales, hexadécimales ou octales. Ces opérateurs traitent ces données selon leur
représentation binaire mais retournent des valeurs numériques standards dans leur format
d'origine.
Les opérateurs suivants effectuent des opérations bit-à-bit, c'est-à-dire avec des bits de même
poids.
Opérateur Nom Effet Syntaxe Résultat
& ET bit-à-bit Retourne 1 si les deux bits de même
poids sont à 1
9 & 12 (1001
& 1100)
8 (1000)
| OU exclusif Retourne 1 si l'un ou l'autre des deux
bits de même poids est à 1 (ou les
deux)
9 | 12 (1001 |
1100)
13 (1101)
^ OU bit-à-bit Retourne 1 si l'un des deux bits de
même poids est à 1 (mais pas les
deux)
9 ^ 12 (1001
^ 1100)
5 (0101)
~ Complément
(NON)
Retourne 1 si le bit est à 0 (et
inversement)
~9 (~1001) 6 (0110)
Exemple
<?php
echo 12 ^ 9; // Affiche '5'
?>
5.7. (Les opérateurs de rotation de bit)
Si vous ne comprenez pas ces opérateurs cela n'est pas important, vous n'en aurez probablement
pas l'utilité
Ce type d'opérateur traite ses opérandes comme des données binaires d'une longueur de 32 bits,
plutôt que des données décimales, hexadécimales ou octales. Ces opérateurs traitent ces données
selon leur représentation binaire mais retournent des valeurs numériques standards dans leur
format d'origine.
Les opérateurs suivants effectuent des rotations sur les bits, c'est-à-dire qu'il décale chacun des
bits d'un nombre de bits vers la gauche ou vers la droite. La première opérande désigne la donnée
sur laquelle on va faire le décalage, la seconde désigne le nombre de bits duquel elle va être
décalée.
Initiation au langage PHP Page 21 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Opérateur Nom Effet Syntaxe Résultat
<< Rotation à gauche
Décale les bits vers la gauche (multiplie
par 2 à chaque décalage). Les zéros qui
sortent à gauche sont perdus, tandis que
des zéros sont insérés à droite
6 << 1 (110
<< 1)
12 (1100)
>>
Rotation à droite
avec conservation
du signe
Décale les bits vers la droite (divise par 2
à chaque décalage). Les zéros qui sortent
à droite sont perdus, tandis que le bit
non-nul de poids plus fort est recopié à
gauche
6 >> 1
(0110 >> 1)
3 (0011)
5.8. Autres opérateurs
Les opérateurs ne peuvent pas être classés dans une catégorie spécifique mais ils ont tout de
même chacun leur importance!
Opérateur Nom Effet Syntaxe Résultat
. Concaténation Joint deux chaînes bout à
bout
"Bonjour"."Au
revoir"
"BonjourAu
revoir"
$ Référencement de
variable
Permet de définir une variable $MaVariable = 2;
à Propriété d'un objet Permet d'accéder aux données
membres d'une classe
$MonObjetàPropr
iete
5.9. Les priorités
Lorsque l'on associe plusieurs opérateurs, il faut que l'interprêteur PHP sache dans quel ordre les
traiter.
La priorité des opérateurs spécifie l'ordre dans lequel les valeurs doivent être analysées. Par
exemple, dans l'expression 1 + 5 * 3, le résultat est 16 et non 18, car la multiplication ("*") a une
priorité supérieure par rapport à l'addition ("+").
Le tableau suivant dresse une liste de la priorité des différents opérateurs dans un ordre croissant
de priorité.
Précédence des opérateurs
Associativité Opérateurs
Gauche ,
Gauche or
Gauche xor
Gauche and
Droite print
Droite = += -= *= /= .= %= &= |= ^= <<= >>=
Gauche ? :
Gauche ||
Gauche &&
Gauche |
Gauche ^
Gauche &
Non-associatif == != === !==
Initiation au langage PHP Page 22 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Non-associatif < <= > >=
Gauche << >>
Gauche + - .
gauche * / %
droite ! ~ ++ -- (int) (float) (string) (array) (object) @
droite [
Non-associatif new
Bien que ! soit prioritaire sur =, PHP va tout de même exécuter des expressions comme : if
(!$a = ntic()). Dans cette situation, le résultat de ntic() sera placé dans la variable $a.
Initiation au langage PHP Page 23 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
VI. STRUCTURES CONDITIONNELLES
On appelle structure conditionnelle les instructions qui permettent de tester si une condition est
vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true
à 1 et false à 0). Ces structures conditionnelles peuvent être associées à des structures qui se
répètent suivant la réalisation de la condition, parle alors de structures de boucle
6.1. La notion de bloc
Une expression suivie d'un point-virgule est appelée instruction. Par exemple a++; est une
instruction.
Lorsque l'on veut regrouper plusieurs instructions, on peut créer ce que l'on appelle un bloc, c'est-
à-dire un ensemble d'instructions (suivies respectivement par des point-virgules) et comprises
entre les accolades { et }.
Les instructions if, while et for peuvent par exemple être suivies d'un bloc d'instructions à
exécuter...
6.2. Les primitives de choix
6.2.1. L'instruction if
L'instruction if est la structure de test la plus basique, on la retrouve dans tous les langages (avec
une syntaxe différente...). Elle permet d'exécuter une série d'instruction si une condition est
réalisée.
La syntaxe de cette expression est la suivante:
if (condition réalisée) {
liste d'instructions
}
6.2.2. L'instruction if ... else
L'instruction if dans sa forme basique ne permet de tester qu'une condition, or la plupart du temps
on aimerait pouvoir choisir les instructions à exécuter en cas de non réalisation de la condition...
L'expression if ... else permet d'exécuter une autre série d'instruction en cas de non-réalisation de
la condition.
La syntaxe de cette expression est la suivante:
if (condition réalisée)
{
liste d'instructions
}
La condition doit être entre des parenthèses
Il est possible de définir plusieurs conditions à remplir avec les opérateurs ET et OU (&& et ||)
par exemple l'instruction suivante teste si les deux conditions sont vraies :
if ((condition1)&&(condition2))
L'instruction ci-dessous exécutera les instructions si l'une ou l'autre des deux conditions est vraie :
if ((condition1)||(condition2))
S’il n'y a qu'une instruction, les accolades ne sont pas nécessaires...
Initiation au langage PHP Page 24 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
else
{
autre série d'instructions
}
6.3. L'instruction if ... elseif ... else
L'instruction if ... else ne permet de tester qu'une condition, or il est parfois nécessaire de tester
plusieurs conditions de façon exclusive, c'est-à-dire que sur toutes les conditions une seule sera
réalisée ...
L'expression if ... elseif ... else permet d'enchaîner une série d'instructions et évite d'avoir à
imbriquer des instructions if.
La syntaxe de cette expression est la suivante:
if (condition réalisée) {
liste d'instructions
}
elseif (autre condition réalisée)
{
autre série d'instructions
}
...
else (dernière condition réalisée)
{
série d'instructions
}
Exemple
<?php
if ($a > $b) {
print "a est plus grand que b";
}
elseif ($a == $b)
{
print "a est égal à b";
}
else
{
print "a est plus petit que b";
}
?>
Une façon plus courte de faire un test (opérateur ternaire)
Il est possible de faire un test avec une structure beaucoup moins lourde grâce à la structure
suivante, appelée opérateur ternaire:
(condition) ? instruction si vrai : instruction si faux
La condition doit être entre des parenthèses
Lorsque la condition est vraie, l'instruction de gauche est exécutée
Lorsque la condition est fausse, l'instruction de droite est exécutée
6.3.1. L'instruction switch
Initiation au langage PHP Page 25 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
L'instruction switch permet de faire plusieurs tests de valeurs sur le contenu d'une même variable.
Ce branchement conditionnel simplifie beaucoup le test de plusieurs valeurs d'une variable, car
cette opération aurait été compliquée (mais possible) avec des if imbriqués. Sa syntaxe est la
suivante:
switch (Variable) {
case Valeur1:
Liste d'instructions
break;
case Valeur2:
Liste d'instructions
break;
case Valeurs...:
Liste d'instructions
break;
default:
Liste d'instructions
break;
}
Les parenthèses qui suivent le mot clé switch indiquent une expression dont la valeur est testée
successivement par chacun des case. Lorsque l'expression testée est égale à une des valeurs
suivant un case, la liste d'instructions qui suit celui-ci est exécutée. Le mot clé break indique la
sortie de la structure conditionnelle. Le mot clé default précède la liste d'instructions qui sera
exécutée si l'expression n'est jamais égale à une des valeurs.
Exemple 1
Cet exemple donne deux manières différentes d'écrire la même chose, l'une en utilisant une séries
de if, et l'autre en utilisant l'instruction switch:
<?php
if ($i == 0) {
print "i égale 0";
}
if ($i == 1) {
print "i égale 1";
}
if ($i == 2) {
print "i égale 2";
}
switch ($i) {
case 0:
print "i égale 0";
break;
case 1:
print "i égale 1";
break;
case 2:
print "i égale 2";
break;
}
?>
Initiation au langage PHP Page 26 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Exemple 2
<?php
switch ($i) {
case 0:
print "i égale 0";
break;
case 1:
print "i égale 1";
break;
case 2:
print "i égale 2";
break;
default:
print "i n'est ni égal à 2, ni à 1, ni à 0.";
}
?>
N'oubliez pas d'insérer des instructions break après chaque test, ce genre d'oubli est difficile à
détecter car aucune erreur n'est signalée...
6.4. Les boucles
Les boucles sont des structures qui permettent d'exécuter plusieurs fois la même série
d'instructions jusqu'à ce qu'une condition ne soit plus réalisée...
On appelle parfois ces structures instructions répétitives ou bien itérations.
La façon la plus commune de faire une boucle, est de créer un compteur (une variable qui
s'incrémente, c'est-à-dire qui augmente de 1 à chaque tour de boucle) et de faire arrêter la boucle
lorsque le compteur dépasse une certaine valeur.
6.4.1. La boucle for
L'instruction for permet d'exécuter plusieurs fois la même série d'instructions: c'est une boucle!
Dans sa syntaxe, il suffit de préciser le nom de la variable qui sert de compteur (et éventuellement
sa valeur de départ, la condition sur la variable pour laquelle la boucle s'arrête (basiquement une
condition qui teste si la valeur du compteur dépasse une limite) et enfin une instruction qui
incrémente (ou décrémente) le compteur.
La syntaxe de cette expression est la suivante:
for (compteur; condition; modification du compteur)
{
liste d'instructions
}
Exemple:
for ($i=1; $i<6; $i++)
{
echo "$i<br>";
/* Cette boucle affiche 5 fois la valeur de $i, c'est-à-dire
1
Initiation au langage PHP Page 27 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
2
3
4
5
*/
}
Elle commence à $i=1, vérifie que $i est bien inférieur à 6, etc... jusqu'à atteindre la valeur $i=6,
pour laquelle la condition ne sera plus réalisée, la boucle s'interrompra et le programme
continuera son cours.
D'autre part, le langage PHP autorise la déclaration de la variable de boucle dans l'instruction for
elle-même!
for( [initialisations] ; [test sortie] ; [faire a chaque fois] )
il faudra toujours vérifier que la boucle a bien une condition de sortie (i.e le compteur
s'incrémente correctement)
une instruction echo dans votre boucle est un bon moyen pour vérifier la valeur du compteur pas
à pas en l'affichant!
il faut bien compter le nombre de fois que l'on veut faire exécuter la boucle:
for($i=0;$i<10;$i++) exécute 10 fois la boucle ($i de 0 à 9)
for($i=0;$i<=10;$i++) exécute 11 fois la boucle ($i de 0 à 10)
for($i=1;$i<10;$i++) exécute 9 fois la boucle ($i de 1 à 9)
for($i=1;$i<=10;$i++) exécute 10 fois la boucle ($i de 1 à 10)
6.4.2. L'instruction while
L'instruction while représente un autre moyen d'exécuter plusieurs fois la même série
d'instructions.
La syntaxe de cette expression est la suivante:
while (condition réalisée)
{
liste d'instructions
}
Exemple
$i = 1;
while ($i <= 10)
{
print $i++; /* La valeur affiche est $i avant l'incrémentation
(post-incrémentation) */
}
Cette instruction exécute la liste d'instructions tant que (while est un mot anglais qui signifie tant
que) la condition est réalisée.
La condition de sortie pouvant être n'importe quelle structure conditionnelle, les risques de
boucle infinie (boucle dont la condition est toujours vraie) sont grands, c'est-à-dire qu'elle risque
de provoquer un plantage du navigateur!
6.4.3. Saut inconditionnel
Il peut être nécessaire de faire sauter à la boucle une ou plusieurs valeurs sans pour autant mettre
fin à celle-ci.
Initiation au langage PHP Page 28 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
La syntaxe de cette expression est "continue;" (cette instruction se place dans une boucle!), on
l'associe généralement à une structure conditionnelle, sinon les lignes situées entre cette
instruction et la fin de la boucle seraient obsolètes.
Exemple: Imaginons que l'on veuille imprimer pour $x allant de 1 à 10 la valeur de 1/($x-7) ... il
est évident que pour $x=7 il y aura une erreur. Heureusement, grâce à l'instruction continue il est
possible de traiter cette valeur à part puis de continuer la boucle!
$x=1;
while ($x<=10)
{
if ($x == 7)
{
echo "Division par zéro!";
continue;
}
$a = 1/($x-7);
echo "$a<br>";
$x++;
}
Il y avait une erreur dans ce programme... peut-être ne l'avez-vous pas vue:
Lorsque $x est égal à 7, le compteur ne s'incrémente plus, il reste constamment à la valeur 7, il
aurait fallu écrire:
$x=1;
while ($x<=10)
{
if ($x == 7)
{
echo "division par 0 <br>";
$x++;
continue;
}
$a = 1/($x-7);
echo "$a<br>";
$x++;
}
6.4.4. Arrêt inconditionnel
A l'inverse, il peut être voulu d'arrêter prématurément la boucle, pour une autre condition que
celle précisé dans l'en-tète de la boucle. L'instruction break permet d'arrêter une boucle (for ou
bien while). Il s'agit, tout comme continue, de l'associer à une structure conditionnelle, sans
laquelle la boucle ne ferait jamais plus d'un tour!
Dans l'exemple de tout à l'heure, par exemple si l'on ne savait pas à quel moment le dénominateur
($x-7) s'annule (bon...OK...pour des équations plus compliquées par exemple) il serait possible de
faire arrêter la boucle en cas d'annulation du dénominateur, pour éviter une division par zéro!
for ($x=1; $x<=10; $x++)
{
$a = $x-7;
if ($a == 0)
{
echo "division par 0";
break;
Initiation au langage PHP Page 29 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
}
echo "1/$a<br>";
}
6.4.5. Arrêt d'exécution du script
PHP autorise l'utilisation de la commande exit ou la fonction exit(), qui permet d'interrompre
totalement l'interprétation du script, ce qui signifie que le serveur n'envoie plus d'informations au
navigateur: le script est figé dans son état actuel. Cette instruction est particulièrement utile lors
de l'apparition d'erreur!
Initiation au langage PHP Page 30 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
VII.LA NOTION DE FONCTION
On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par
simple appel dans le corps du programme principal. Les fonctions permettent d'exécuter dans
plusieurs parties du programme une série d'instructions, cela permet une simplicité du code et
donc une taille de programme minimale. D'autre part, une fonction peut faire appel à elle-même,
on parle alors de fonction récursive (il ne faut pas oublier de mettre une condition de sortie au
risque sinon de ne pas pouvoir arrêter le programme...).
Il n'y a pas de distinction fonctions / procédures en PHP
7.1. La déclaration d'une fonction
PHP recèle de nombreuses fonctions intégrées permettant d'effectuer des actions courantes.
Toutefois, il est possible de définir des fonctions, dites fonctions utilisateurs afin de simplifier
l'exécution de séries d'instructions répétitives. Contrairement à de nombreux autres langages, PHP
nécessite que l'on définisse une fonction avant que celle-ci puisse être utilisée, car pour l'appeler
dans le corps du programme il faut que l'interpréteur la connaisse, c'est-à-dire qu'il connaisse son
nom, ses arguments et les instructions qu'elle contient. La définition d'une fonction s'appelle
"déclaration" et peut se faire n'importe où dans le code. La déclaration d'une fonction se fait grâce
au mot-clé function, selon la syntaxe suivante:
function Nom_De_La_Fonction(argument1, argument2, ...)
{
liste d'instructions
}
Le nom de la fonction suit les mêmes règles que les noms de variables:
Le nom doit commencer par une lettre un nom de fonction peut comporter des lettres, des chiffres
et les caractères _ et & (les espaces ne sont pas autorisés!)
Le nom de la fonction, comme celui des variables est sensible à la casse (différenciation entre les
minuscules et majuscules)
Les arguments sont facultatifs, mais s'il n'y a pas d'arguments, les parenthèses doivent rester
présentes. Il ne faut pas oublier de refermer les accolades
Le nombre d'accolades ouvertes (fonction, boucles et autres structures) doit être égal au nombre
d'accolades fermées!
La même chose s'applique pour les parenthèses, les crochets ou les guillemets!
Une fois cette étape franchie, votre fonction ne s'exécutera pas tant que l'on ne fait pas appel à
elle quelque part dans la page!
7.2. Appel de fonction
Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom (une fois de plus en
respectant la casse) suivie d'une parenthèse ouverte (éventuellement des arguments) puis d'une
parenthèse fermée:
Nom_De_La_Fonction();
Le point virgule signifie la fin d'une instruction et permet à l'interpréteur de distinguer les
différents blocs d'instructions
Initiation au langage PHP Page 31 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Si jamais vous avez défini des arguments dans la déclaration de la fonction, il faudra veiller à les
inclure lors de l'appel de la fonction (le même nombre d'arguments séparés par des virgules!)
Nom_De_La_Fonction(argument1, argument2);
7.2.1. Renvoi d'une valeur par une fonction
La fonction peut renvoyer une valeur (et donc se terminer) grâce au mot-clé return. Lorsque
l'instruction return est rencontrée, la fonction évalue la valeur qui la suit, puis la renvoie au
programme appelant (programme à partir duquel la fonction a été appelée).
Une fonction peut contenir plusieurs instructions return, ce sera toutefois la première instruction
return rencontrée qui provoquera la fin de la fonction et le renvoi de la valeur qui la suit.
La syntaxe de l'instruction return est simple:
return valeur_ou_variable;
7.2.2. Les arguments d'une fonction
Il est possible de passer des arguments à une fonction, c'est-à-dire lui fournir une valeur ou le
nom d'une variable afin que la fonction puisse effectuer des opérations sur ces arguments ou bien
grâce à ces arguments.
Le passage d'arguments à une fonction se fait au moyen d'une liste d'arguments (séparés par des
virgules) entre parenthèses suivant immédiatement le nom de la fonction. Les arguments peuvent
être de simples variables, mais aussi des tableaux ou des objets. A noter qu'il est possible de
donner une valeur par défaut à ces arguments en faisant suivre le nom de la variable par le signe
"=" puis la valeur que l'on affecte par défaut à la variable.
Lorsque vous voulez utiliser un argument dans le corps de la fonction en tant que variable, celui-ci
doit être précédé par le signe $.
<?
function dire_texte($qui, $texte = 'Bonjour')
{
if(empty($qui)){ // $qui est vide, on retourne faux
return false;
}
Else
{
echo "$texte $qui"; // on affiche le texte
return true; // fonction exécutée avec succès
}
}
?>
Ainsi cette fonction peut être appelée de deux façons différentes:
<?
// Passage des deux paramètres
dire_texte("cher phpeur", "Bienvenue"); // affiche "Bienvenue cher
phpeur"
// Utilisation de la valeur par défaut du deuxième paramètre
dire_texte("cher phpeur"); // affiche "Bonjour cher phpeur"
?>
Initiation au langage PHP Page 32 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
7.3. Portée (visibilité) des variables
Voyons maintenant un caractère propre à beaucoup de langages de programmation fonctionnels:
la portée des variables.
En PHP, jusqu'à présent, lorsque vous déclariez une variable dans votre script, vous aviez
l'habitude d'accéder à cette variable dans tout le reste de votre page.
En effet, d'après le code suivant :
<?php
$toto = 5;
?>
$toto est une variable qui sera accessible par votre script PHP une fois sa déclaration faite, c'est-à-
dire juste après l'instruction $toto = 5.
Vous savez également, qu'une variable déclarée dans le corps d'une fonction n'est accessible que
dans le corps de cette même fonction.
Exemple :
<?php
$toto = 5;
function ma_fonction ()
{
echo $toto;
}
ma_fonction();
?>
Dans ce cas, l'exécution de ce code PHP n'affichera rien vu que $toto (contenu dans le code de la
fonction ma_fonction()) n'a strictement aucun rapport avec la variable $toto contenu dans le script
courant.
On appellera la variable $toto (celle contenue dans le code de la fonction) comme étant une
variable locale à la fonction ma_fonction() (elle n'est pas globale au script).
7.3.1. Le mot clé global
Sachez qu'il est possible d'utiliser dans le code même de vos fonctions des variables que vous avez
déclarées dans votre script courant à l'aide du mot clé global.
Reprenons notre exemple précédent :
<?php
$toto = 5;
function ma_fonction ()
{
global $toto;
echo $toto;
}
ma_fonction(); // Cet exemple affichera :5
?>
En effet, dans ce script, nous déclarons la variable (qui était jusque là locale) $toto comme étant
une variable globale du script.
PHP sait alors qu'il doit récupérer la valeur de cette variable dans le script courant.
Initiation au langage PHP Page 33 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Il n'y a aucune limite au nombre de variables globales qui peuvent être manipulées par une
fonction.
Vous pouvez également effectuer la même opération en utilisant le tableau associatif $_GLOBALS.
Le code suivant donnera le même résultat que le code précédent :
<?php
$toto = 5;
function ma_fonction ()
{
echo $_GLOBALS["toto"];
}
ma_fonction();
?>
7.3.2. Le mot clé static
Les amateurs de programmation par objets doivent bien connaître ce terme de static .
Une variable dite static est une variable locale à une fonction mais qui a la particularité de se
souvenir de sa valeur.
Prenons comme exemple le code suivant :
<?php
function ma_fonction ()
{
$toto = 1;
echo $toto;
$toto++;
}
for($i=1;$i<=50;$i++)
{
ma_fonction();
}
?>
Si je lance cette fonction 50 fois, vous allez tous penser que cette fonction affichera 50 fois la
valeur 1, et vous aurez raison :
Dans ce cas, l'incrémentation ne sert à rien puisque lorsque l'on a fini d'exécuter cette fonction
PHP "perd connaissance" de la valeur de la variable $toto.
En revanche, si on déclare la variable $toto comme étant une variable statique (grâce au mot clé
static), le comportement de cette fonction sera totalement différent.
En effet, vu que $toto est statique, PHP se souviendra de sa valeur lors de la dernière exécution
de la fonction.
Avec le code suivant :
<?php
function ma_fonction ()
{
static $toto = 1;
echo $toto;
$toto++;
}
for($i=1;$i<=50;$i++)
{
Initiation au langage PHP Page 34 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
ma_fonction();
}
?>
Si je lance 50 fois ma fonction, et bien nous verrons sur l'écran, la suite des nombres entre 1 et
50.
Explication : à chaque appel, PHP se souvient de la précédente valeur de la variable $toto (parce
qu'elle est static) et notre fonction incrémente alors cette valeur pour ensuite l'afficher.
7.3.3. Le passage par référence
Dans nos exemples précédents, vous savez que grâce au mot clé global, les fonctions pouvaient
récupérer les valeurs des variables globales.
Sachez qu'il est également possible de modifier la valeur d'une variable d'un script (une variable
globale) grâce à une fonction en utilisant un passage de variable par référence.
Le passage par référence se caractérise par l'utilisation d'un & avant le nom de votre variable dans
les arguments de votre fonction.
Exemple 1:
<?php
$toto = 5;
function ma_fonction ($var)
{
$var++;
}
ma_fonction(&$toto);
echo $toto; // Ce script affichera : 6
?>
Pour les personnes qui ont fait du C, le passage par référence s'assimile à la notion de pointeur.
En passant une variable par référence à une fonction, nous ne passons pas en fait la variable en
elle-même (la preuve : notre fonction utilise une variable $var alors qu'elle modifie tout de même
la valeur de la variable $toto du script courant) mais une référence vers la zone mémoire où est
stockée la valeur de notre variable $toto.
Notre fonction modifie alors directement cette zone mémoire en lui donnant une nouvelle valeur,
ce qui explique que dans le script courant, et bien la valeur de $toto a changé.
D'une manière générale il est préférable de donner des noms différents aux variables locales et
globales pour des raisons de lisibilité et de compréhension du code...
Exemple 2:
<?
function dire_texte($qui, &$texte)
{
$texte = "Bienvenue $qui";
}
$chaine = "Bonjour ";
dire_texte("cher phpeur",$chaine);
echo $chaine; // affiche "Bienvenue cher phpeur"
?>
Initiation au langage PHP Page 35 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
7.4. Retourner plusieurs variables
Lorsque vous souhaitez qu'une fonction retourne plusieurs valeurs, le plus simple est d'utiliser un
tableau.
<?
function nom_fonction()
{
.....
return array( $variable1, $variable2, $variable3 );
// on retourne les valeurs voulues dans un tableau
}
$retour = nom_fonction();
echo "$retour[0] - $retour[1] - $retour[2]";
?>
<?PHP
function calcul($a, $b)
{
$add = $a+$b;
$sous = $a-$b;
$multi = $a*$b;
$div = $a/$b;
return array($add, $sous, $multi, $div);
}
list($add, $sous, $multi, $div) = calcul(30, 6);
// affiche le resultat
echo $add . '<br />';
echo $sous . '<br />';
echo $multi . '<br />';
echo $div . '<br> /';
?>
7.5. La récursivité
Les fonctions récursives sont des fonctions qui s'appellent elles-mêmes. Ce type de fonction se
révéle indispensable pour parcourir une arborescence par exemple.
Voici un exemple simple.
<?
function fonction_recursive($n=0)
{
$n++;
echo "$n <br>";
if($n < 10){ // si n est inférieur à 10 on continue
fonction_recursive($n);
}
}
fonction_recursive(); // affiche les nb de 1 à 10
?>
Initiation au langage PHP Page 36 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
7.6. Les fonctions standards d’affichage
PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces fonctions ont la
particularité de pouvoir insérer dans les données envoyées des valeurs variables, pouvant être
fonction d'une valeur récupérée par exemple, c'est ce qui rend possible la création de pages
dynamiques. Les 3 fonctions sont les suivantes:
echo , print et printf
7.6.1. La fonction echo
La fonction echo permet d'envoyer au navigateur la chaîne de caractères (délimitée par des
guillemets ou des cotes simples) qui la suit. La syntaxe de cette fonction est la suivante:
echo Expression;
L'expression peut être une chaîne de caractères ou une expression que l'interpréteur évalue
echo "Chaine de caracteres";
echo (1+2)*87;
Ainsi, étant donné que la chaîne de caractères est délimitée par des guillemets, l'insertion de
guillemets doubles dans la chaîne provoquerait une erreur. C'est la raison pour laquelle les
guillemets doubles, ainsi que tous les caractères spéciaux, doivent être précédés d'un antislash.
Voici un récapitulatif des caractères spéciaux nécessitant l'ajout d'un antislash:
Caractère Description
" Guillemet
$ caractère $
 barre oblique inverse (antislash)
r retour chariot
n retour à la ligne
t Tabulation
Le caractère $ a un rôle particulier dans la mesure où l'interpréteur le comprend comme une
variable, ce qui signifie que lorsque le caractère $ est rencontré dans la chaîne qui suit la fonction
echo, l'interpréteur récupère le nom de la variable qui suit le caractère $ et le remplace par sa
valeur.
Prenons un autre exemple où nous allons afficher la date et l'heure du jour.
On a le code suivant :
<?
$date_du_jour = date ("d-m-Y");
$heure_courante = date ("H:i");
echo 'Nous sommes le : ';
echo $date_du_jour;
echo ' Et il est : ';
echo $heure_courante; //affiche: Nous sommes le 25-10-2005 Et il est
11:59
?>
Dans ce cas, nous venons d'utiliser la fonction date() qui nous permet d'afficher la date du jour
ainsi que l'heure courante (en fait, la date du serveur). Dans un premier temps, nous avons
affecté à la variable $date_du_jour le contenu que retourne la fonction date() munie des
Initiation au langage PHP Page 37 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
paramètres "d-m-Y", soit 27-09-2005, puis nous avons affecté à la variable $heure_courante le
contenu que retourne la fonction date() munie des paramètres "H:i", soit 11:59.
Voici la liste des paramètres possibles pour la fonction date() :
- a : "am" (matin) ou "pm" (après-midi)
- A : "AM" (matin) ou "PM" (après-midi)
- d : Jour du mois, sur deux chiffres (éventuellement avec un zéros) : "01" à "31"
- D : Jour de la semaine, en trois lettres (et en anglais) : par exemple "Fri" (pour Vendredi)
- F : Mois, textuel, version longue; en anglais, i.e. "January" (pour Janvier)
- h : Heure, au format 12h, "01" à "12"
- H : heure, au format 24h, "00" à "23"
- g : Heure, au format 12h sans les zéros initiaux, "1" à "12"
- G : Heure, au format 24h sans les zéros initiaux, "0" à "23"
- i : Minutes; "00" à "59"
- j : Jour du mois sans les zéros initiaux: "1" à "31"
- l : Jour de la semaine, textuel, version longue; en anglais, i.e. "Friday" (pour Vendredi)
- L : Booléen pour savoir si l'année est bissextile ("1") ou pas ("0")
- m : Mois; i.e. "01" à "12"
- n : Mois sans les zéros initiaux; i.e. "1" à "12"
- M : Mois, en trois lettres (et en anglais) : par exemple "Jan" (pour Janvier)
- s : Secondes; i.e. "00" à "59"
- S : Suffixe ordinal d'un nom
- w : Jour de la semaine au format numérique 0 (pour dimanche) à 6 (pour samedi)
7.6.2. La fonction print
La fonction print est similaire à la fonction echo .
La syntaxe de la fonction print est la suivante:
print(expression);
L'expression peut, comme pour la fonction echo être une chaîne de caractères ou une expression
que l'interpréteur évalue:
print("Chaine de caracteres");
print ((1+2)*87); // affiche le resultat de (1+2)x87
les parenthèses ne sont pas obligatoires mais question de lisibilité
7.6.3. La fonction printf
La fonction printf() (empruntée au langage C) est rarement utilisée car sa syntaxe est plus
lourde. Toutefois, contrairement aux deux fonctions précédentes, elle permet un formatage des
données, cela signifie que l'on peut choisir le format dans lequel une variable sera affichée à
l'écran.
La syntaxe de printf() est la suivante:
printf (chaîne formatée);
Une chaîne formatée est une chaîne contenant des codes spéciaux permettant de repérer
l'emplacement d'une valeur à insérer et son format, c'est-à-dire sa représentation. A chaque code
rencontré doit être associé une valeur ou une variable, que l'on retrouve en paramètre à la fin de
Initiation au langage PHP Page 38 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
la fonction printf. Les valeurs à insérer dans la chaîne formatées sont séparées par des virgules et
doivent apparaître dans l'ordre où les codes apparaissent dans la chaîne formatée Les codes de
formatage des types de données sont les suivants:
Code Type de format
%b Entier en notation binaire
%c Caractère codé par son code ASCII
%d Entier en notation décimale
%e Type double (nombre à virgule) au format scientifique (1.76e+3)
%f Type double (nombre à virgule)
%o Entier en notation octale
%s Chaîne de caractères
%x Entier en notation hexadécimale (lettres en minuscules)
%X Entier en notation hexadécimale (lettres en majuscules)
%% Caractère %
Imaginons que l'on définisse une variable en virgule flottante, afin d'obtenir une précision de calcul
plus grande qu'avec un entier, mais qu'on désire l'afficher en tant qu'entier. Dans ce cas la
fonction printf prend toute son importance:
$Pi = 3.1415927;
$R = 24.546;
$Perimetre = 2 * $Pi * $R;
printf ("Le périmètre du cercle est %d",$Perimetre);
Initiation au langage PHP Page 39 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
VIII.FONCTION MAIL
PHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de
communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé
sur Internet étant la messagerie électronique, il est naturel que PHP permette d'envoyer des mails.
8.1. La fonction mail()
En PHP il existe une fonction très simple qui permet d'envoyer un email. Voilà sa syntaxe
Entier mail(chaîne email_destinataire,
chaîne Sujet,
chaîne corps_du_message,
chaîne options);
Le dernier champ est facultatif, on en parlera juste après. Dans un premier temps nous allons
envoyer un email de base. Voilà le nouveau code du fichier traitant les données envoyées par le
formulaire précédant :
<?
mail( "webmaster@ntic.ci", "Commentaire sur le site ", "$nom a laissé
un commentaire à propos de www.ntic.ci: nn$texte" );
?>
Les n à l'intérieur du corps de m'email permettent d'aller à la ligne
Chez certains hébergeurs (dont Free) la fonction mail est désactivée car elle permet de simuler
un envoi de mail à partir de n'importe quelle adresse. Ainsi elle est parfois remplacée par la
fonction email()
8.2. Les options / en-têtes
Le champ options de la fonction mail permet d'ajouter une en-tête au message que l'on envoie.
On peut par exemple y mettre la date, le logiciel utilisé pour envoyer l'email ou encore l'adresse de
retour...
Voilà un exemple d'en-tête à utiliser lors d'un envoi de mail :
$from_email = "contact@ntic.ci";
$entetedate = date("D, j M Y H:i:s -0600"); // Offset horaire
$entetemail = "From: $from_email n"; // Adresse expéditeur
$entetemail .= "Cc: n";
$entetemail .= "Bcc: n"; // Copies cachées
$entetemail .= "Reply-To: $from_email n"; // Adresse de retour
$entetemail .= "X-Mailer: PHP/" . phpversion() . "n" ;
$entetemail .= "Date: $entetedate";
La commande précédente équivaut donc à :
mail(
"webmaster@ntic.ci",
"Commentaire sur le site",
"$nom a laissé un commentaire à propos de www.ntic.ci: nn$texte",
Initiation au langage PHP Page 40 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
$entetemail
);
8.3. La fonction email()
La fonction email() remplace parfois la fonction mail() chez certains hébergeurs (dont Free) car
elle permet uniquement d'envoyer des mails à partir de votre adresse email.
Elle s'utilise à peu près de façon similaire à la fonction mail() mais sa syntaxe est quelque peu
différente:
email(chaîne compte,chaîne destinataire,chaîne titre,chaîne
message[,options]);
Initiation au langage PHP Page 41 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
IX.NOTION DE VARIABLES D'ENVIRONNEMENT
Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des
variables permettant au programme d'avoir des informations sur son environnement.
L'environnement, dans le cas du script PHP est:
Le serveur
Le client
Ces variables sont créées par le serveur à chaque fois que le script PHP est appelé, le serveur les
lui fournit en paramètres cachés lors de l'exécution de l'interpréteur.
Elles permettent notamment d'avoir des informations sur le type de serveur, son administrateur, la
date à laquelle le script a été appelé, l'adresse IP et le type de navigateur du client,...
9.1. Les variables d'environnement
On peut donc classer les variables d'environnement en deux catégories:
Les variables d'environnement dépendant du client
Les variables d'environnement dépendant du serveur
9.1.1. Les variables d'environnement dépendant du client
Variable
d'environnement
Description
$AUTH_TYPE
Il s'agit de la méthode d'authentification qui a été utilisée par le
client pour accéder au script PHP
$COMSPEC
Location de l'interpréteur de commandes sur la machine (Sous
Windows)
$CONTENT_TYPE
Type de données contenu présent dans le corps de la requête. Il
s'agit du type MIME des données
$DOCUMENT_ROOT Racine des documents sur le serveur
$DOCUMENT_URI Adresse du script PHP en relatif (à partir de la racine du serveur)
$HTTP_ACCEPT Types MIME reconnus par le serveur (séparés par des virgules)
$HTTP_ACCEPT_ENCODING Types d'encodage que le serveur peut réaliser (gzip,deflate)
$HTTP_ACCEPT_LANGUAGE Langue utilisée par le serveur (par défaut en-us)
$HTTP_CONNECTION
Type de connexion ouverte entre le client et le serveur (par
exemple Keep-Alive)
$HTTP_HOST Nom d'hôte de la machine du client (associée à l'adresse IP)
$HTTP_REFERER URL de la page qui a appelé le script PHP
$HTTP_USER_AGENT
Cette variable permet d'avoir des informations sur le type de
navigateur utilisé par le client, ainsi que son système d'exploitation.
Voici quelques exemples de User-Agents:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT; TUCOWS
Network)
Mozilla/4.7 [en] (X11; I; Linux 2.2.14-15mdk i686)
$LAST_MODIFIED Date et heure de dernière modification du fichier
$PATH Il s'agit du chemin d'accès aux différents répertoires sur le serveur
$PATH_INFO
Il s'agit du chemin d'accès au script PHP en relatif (de la racine du
serveur jusqu'au script PHP)
$PHP_SELF Nom du script PHP
$REDIRECT_STATUS Il s'agit de l'état de la redirection (echec ou succès)
$REDIRECT_URL Il s'agit de l'URL vers laquelle le navigateur du client a été redirigé
Initiation au langage PHP Page 42 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
$QUERY_STRING
Il s'agit de la partie de l'URL (ayant servi à accéder au script PHP)
située après le point d'interrogation. C'est de cette manière que
sont transmises les données d'un formulaire dans le cas de la
méthode GET
$REMOTE_ADDR Cette variable contient l'adresse IP du client appelant le script CGI
$REMOTE_PORT
Cette variable permet de savoir le port sur lequel la requête HTTP
a été envoyée au serveur
$SCRIPT_FILENAME
Chemin d'accès complet au script PHP
Sous windows, il sera de la forme:
c:/php/php.exe
$SCRIPT_NAME
Chemin d'accès relatif (par rapport au chemin d'accès à la racine
web ($DOCUMENT_ROOT)) au script PHP
9.1.2. Les variables d'environnement dépendant du serveur
Variable d'environnement Description
$DATE_GMT Date actuelle au format GMT
$DATE_LOCAL Date actuelle au format local
$DOCUMENT_ROOT Racine des documents Web sur le serveur
$GATEWAY_INTERFACE Version des spécifications CGI utilisées par le serveur
$HTTP_HOST Nom de domaine du serveur
$SERVER_ADDR Adresse IP du serveur
$SERVER_ADMIN Adresse de l'administrateur du serveur
$SERVER_NAME Nom donné au serveur en local
$SERVER_PORT Numéro de port associé au protocole HTTP sur le serveur
$SERVER_PROTOCOL Nom et version du protocole utilisé pour envoyer la requête au
script PHP
$SERVER_SOFTWARE Type (logiciel) du serveur web
Pour un serveur Apache sous Unix:
Apache/1.3.2 (Unix) PHP/3.0.5
Pour un serveur Apache sous Windows:
Apache/1.3.2 (Win32) PHP/3.0.5
9.2. Affichage des variables d'environnement
Il est possible de créer un script permettant de visualiser l'ensemble des variables
d'environnement.
La première façon consiste à utiliser la fonction phpinfo() qui affiche toute seule un tableau
récapitulatif des paramètres du serveur et de l'intepréteur PHP, ainsi qu'un tableau des variables
d'environnement
<?
phpinfo();
?>
PHP fournit la fonction getenv() permettant de retourner la valeur de la variable d'environnement
passée en paramètre:
<?
echo getenv("HTTP_USER_AGENT");
?>
Initiation au langage PHP Page 43 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
Enfin il est possible de définir des variables d'environnement :
<?
echo putenv("MA_VARIABLE=mavaleur");
?>
Initiation au langage PHP Page 44 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
X.LA GESTION DES FICHIERS AVEC PHP
Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une
multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et
le fichier est repérée par une variable, indiquant l'état du fichier et que l'on peut passer en
paramètre aux fonctions spécialisées pour le manipuler.
10.1. La fonction fopen()
La fonction de base est la fonction fopen(). C'est elle qui permet d'ouvrir un fichier, que ce soit
pour le lire, le créer, ou y écrire. Voilà sa syntaxe :
entier fopen(chaine nomdufichier, chaine mode);
Le mode indique le type d'opération qu'il sera possible d'effectuer sur le fichier après ouverture. Il
s'agit d'une lettre (en réalité une chaîne de caractères) indiquant l'opération possible:
r (comme read) indique une ouverture en lecture seulement
w (comme write) indique une ouverture en écriture seulement (la fonction crée le fichier s'il
n'existe pas)
a (comme append) indique une ouverture en éciture seulement avec ajout du contenu à la fin du
fichier (la fonction crée le fichier s'il n'existe pas)
Lorsque le mode est suivie du caractère + celui-ci peut être lu et écrit. Enfin, le fait de faire suivre
le mode par la lettre b entre crochets indique que le fichier est traité de façon binaire.
Voici un tableau récapitulant l'ensemble des modes de fichiers possibles:
Mode Description
R ouverture en lecture seulement
W ouverture en écriture seulement (la fonction crée le fichier s'il n'existe pas)
A
ouverture en écriture seulement avec ajout du contenu à la fin du fichier (la fonction
crée le fichier s'il n'existe pas)
R+ ouverture en lecture et écriture
W+ ouverture en lecture et écriture (la fonction crée le fichier s'il n'existe pas)
A+
ouverture en lecture et écriture avec ajout du contenu à la fin du fichier (la fonction
crée le fichier s'il n'existe pas)
Voici des exemples d'utilisations possibles de cette fonction:
$fp = fopen("../fichier.txt","r"); //lecture
$fp = fopen("http://www.cup.ci/fichier.txt","w"); //écriture depuis
début du fichier
$fp = fopen("http://www.cup.ci/fichier.txt","a"); //écriture depuis
fin du fichier
De plus, la fonction fopen permet d'ouvrir des fichiers présents sur le web grâce à leur URL. Voici
un script permettant de récupérer le contenu d'une page d'un site site web:
<?
$fp = fopen("http://www.cup.ci/fichier.txt","r"); //lecture du fichier
while (!feof($fp)) { //on parcourt toutes les lignes
Initiation au langage PHP Page 45 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
$page .= fgets($fp, 4096); // lecture du contenu de la ligne
}
?>
Il est généralement utile de tester si l'ouverture de fichier s'est bien déroulée ainsi que
d'éventuellement stopper le script PHP si cela n'est pas le cas:
<?
if (!$fp = fopen("http://www.cup.ci/fichier.txt","r")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
// votre code;
}
?>
Un fichier ouvert avec la fonction fopen() doit être fermé, à la fin de son utilisation, par la
fonction fclose() en lui passant en paramètre l'entier retourné par la fonction fopen()
10.2. Lecture et écriture
Une fois que le fichier a été ouvert avec le mode désiré, il est possible de lire son contenu et d'y
écrire des informations grâce aux fonctions:
fputs() (aussi parfois appelée fwrite(), les deux noms sont équivalents, on parle d'alias)
permettant d'écrire une chaîne de caractères dans le fichier
entier fputs(entier Etat_du_fichier, chaine Sortie);
La fonction fputs() renvoie le nombre de caractères effectivement écrits dans le fichier
fgets() permettant de récupérer une ligne du fichier
chaîne fgets(entier Etat_du_fichier, entier Longueur);
Le paramètre Longueur désigne le nombre de caractères maximum que la fonction est sensée
récupérer sur la ligne. La fonction fgets() renvoie 0 en cas d'échec, la chaîne dans le cas contraire
Etant donné que la fonction fgets() récupére à chaque appel une nouvelle ligne du fichier, il est
essentiel, pour récupérer l'intégralité du contenu d'un fichier de l'insérer dans une boucle while.
Ainsi, on utilise la fonction feof(), fonction testant si la fin du fichier n'a pas été atteinte, en tant
que test de la boucle while. De cette façon, tant que la fin du fichier n'a pas été atteinte, on lit la
ligne suivante du fichier...
<?
if (!$fp = fopen("fichier.txt","r")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
while(!feof($fp)) {
// On récupère une ligne
$Ligne = fgets($fp,255);
// On affiche la ligne
echo $Ligne;
// On stocke l'ensemble des lignes dans une variable
Initiation au langage PHP Page 46 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
$Fichier .= $Ligne;
}
fclose($fp); // On ferme le fichier
}
?>
Pour stocker des infos dans le fichier, il faut dans un premier temps ouvrir le fichier en écriture en
le créant si il n'existe pas. On a donc le choix entre le mode 'w' et le mode 'a'. On préférera le
second puisque le pointeur se trouve en fin de fichier (autrement dit on écrit à la suite de ce qui
se trouve dans le fichier au lieu d'écraser le contenu existant éventuellement déjà).
<?
$fp = fopen("fichier.txt","a"); // ouverture du fichier en écriture
fputs($fp, "n"); // on va a la ligne
fputs($fp, "$nom|$email"); // on écrit le nom et email dans le fichier
fclose($fp);
?>
Voici un petit script permettant de récupérer le titre d'une page Web (le texte compris entre les
balises <TITLE> et </TITLE>). Il utilise les expressions régulières pour localiser le texte.
<?
$fp = fopen("http://www.ntic.ci/index.html","r"); //lecture du fichier
while (!feof($fp)) { //on parcourt toutes les lignes
$page .= fgets($fp, 4096); // lecture du contenu de la ligne
}
$titre = eregi("<title>(.*)</title>",$page,$regs); //on isole le titre
echo $regs[1];
fclose($fp);
?>
10.3. Les tests de fichiers
PHP fournit de nombreuses fonctions permettant de faire des tests sur les fichiers pour connaître
leurs propriétés. Voici la liste des fonctions des test:
is_dir()
is_dir() permet de savoir si le fichier dont le nom est passé en paramètre correspond à un
répertoire
booléen is_dir(chaine Nom_du_fichier);
La fonction is_dir() renvoie 1 si il s'agit d'un répertoire, 0 dans le cas contraire
<?
if (!is_dir("install")) {
echo "Il ne s'agit pas d'un répertoire
";
}
else {
echo "Il s'agit bien d'un répertoire
";
}
?>
Initiation au langage PHP Page 47 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
is_executable()
Permet de savoir si le fichier dont le nom est passé en paramètre est exécutable
booléen is_executable(chaine Nom_du_fichier);
La fonction is_executable() renvoie 1 si le fichier est exécutable, 0 dans le cas contraire
is_file()
Permet de savoir si le fichier dont le nom est passé en paramètre ne correspond ni à un répertoire,
ni à un lien symbolique
booléen is_file(chaine Nom_du_fichier);
La fonction is_file() renvoie 1 si il s'agit d'un fichier, 0 dans le cas contraire
is_link()
Permet de savoir si le fichier dont le nom est passé en paramètre correpond à un lien symbolique
booléen is_link(chaine Nom_du_fichier);
La fonction is_link() renvoie 1 si il s'agit d'un lien symbolique, 0 dans le cas contraire
10.4. Quelques fonctions de manipulation de fichiers
basename -- Sépare le nom du fichier et le nom du dossier.
chgrp -- Change le groupe propriétaire d'un fichier
chmod -- Change le mode du fichier
chown -- Change le groupe propriétaire du fichier
clearstatcache -- Efface le cache de stat()
copy -- Copie un fichier
delete -- Effacer
dirname -- Renvoie le nom du dossier
disk_free_space -- Renvoie l'espace disque disponible dans le répertoire.
disk_total_space -- Retourne la taille d'un dossier
diskfreespace -- Alias de disk_free_space()
fclose -- Ferme un fichier
feof -- Teste la fin du fichier
fflush -- Envoi tout le contenu généré dans un fichier
fgetc -- Lit un caractère dans un fichier
fgetcsv -- Renvoie la ligne courante et cherche les champs CSV
fgets -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier.
fgetss -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier et élimine les
balises HTML
file_exists -- Vérifie si un fichier existe
file_get_contents -- Lit tout un fichier dans une chaîne
file_put_contents -- Ecrit une chaîne dans un fichier
file -- Lit le fichier et renvoie le résultat dans un tableau
fileatime -- Renvoie la date à laquelle le fichier a été accédé pour la dernière fois.
filectime -- Renvoie l'heure à laquelle l'inode a été accédé pour la dernière fois.
filegroup -- Lire le nom du groupe
fileinode -- Renvoie le numéro d'inode du fichier
filemtime -- Renvoie la date de dernière modification du fichier.
fileowner -- Renvoie le nom du propriétaire du fichier
fileperms -- Renvoie les permissions affectées au fichier.
filesize -- Renvoie la taille du fichier
filetype -- Retourne le type de fichier
flock -- Verrouille le fichier
fnmatch -- Repère un fichier à partir d'un masque
Initiation au langage PHP Page 48 sur 72
__________________________________________________________________________
Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009
fopen -- Ouverture d'un fichier ou d'une URL
fpassthru -- Affiche le reste du fichier
fputs -- Ecrit dans un fichier
fread -- Lecture du fichier en mode binaire
fscanf -- Analyse un fichier en fonction d'un format
fseek -- Modifie le pointeur de fichier
fstat -- Lit les informations sur un fichier à partir d'un pointeur de fichier
ftell -- Renvoie la position du pointeur du fichier
ftruncate -- Tronque un fichier
fwrite -- Ecriture du fichier en mode binaire
glob -- Recherche des chemins qui vérifient un masque
is_dir -- Indique si le nom de fichier est un dossier
is_executable -- Indique si le fichier est exécutable
is_file -- Indique si le fichier est un véritable fichier.
is_link -- Indique si le fichier est un lien symbolique.
is_readable -- Indique si un fichier est autorisé en lecture
is_uploaded_file -- Indique si le fichier a été téléchargé par HTTP POST
is_writable -- Indique si un fichier est autorisé en écriture
is_writeable -- Indique si un fichier est autorisé en écriture
link -- Crée un lien
linkinfo -- Renvoie les informations à propos d'un lien
lstat -- Retourne les informations à propos d'un fichier ou d'un lien symbolique.
mkdir -- Crée un dossier
move_uploaded_file -- Déplace un fichier téléchargé
parse_ini_file -- Traite un fichier de configuration
pathinfo -- Retourne des informations sur un chemin système
pclose -- Ferme un processus de pointeur de fichier
popen -- Crée un processus de pointeur de fichier
readfile -- Affiche un fichier
readlink -- Renvoie le nom du fichier vers lequel pointe un lien symbolique
realpath -- Retourne le chemin canonique absolu
rename -- Renomme un fichier ou un dossier
rewind -- Replace le pointeur de fichier au début
rmdir -- Efface un dossier
set_file_buffer -- Alias de stream_set_write_buffer()
stat -- Renvoie les informations à propos d'un fichier
symlink -- Crée un lien symbolique
tempnam -- Crée un fichier avec un nom unique
tmpfile -- Crée un fichier temporaire
touch -- Modifie la date de modification et de dernier accès d'un fichier
umask -- Change le "umask" courant
unlink -- Efface un fichier
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009
INITIATION_PHP_NAB_2009

More Related Content

What's hot

Maintenance electricite-industrielle-print
Maintenance electricite-industrielle-printMaintenance electricite-industrielle-print
Maintenance electricite-industrielle-printmehdiJABRANE4
 
Polycope java enseignant
Polycope java enseignantPolycope java enseignant
Polycope java enseignanthnsfr
 
Automatisme) www.cours-online.com
Automatisme) www.cours-online.comAutomatisme) www.cours-online.com
Automatisme) www.cours-online.commorin moli
 
Tutoriel Ruby on Rails : apprendre Rails par l'exemple de Michael Hartl
Tutoriel Ruby on Rails : apprendre Rails par l'exemple de Michael HartlTutoriel Ruby on Rails : apprendre Rails par l'exemple de Michael Hartl
Tutoriel Ruby on Rails : apprendre Rails par l'exemple de Michael HartlMarc Maurer
 
Annexes Logiciel Pl7
Annexes Logiciel Pl7Annexes Logiciel Pl7
Annexes Logiciel Pl7youri59490
 
Architectures logicielles et materielles
Architectures logicielles et materiellesArchitectures logicielles et materielles
Architectures logicielles et materiellesAdnane Farid
 
Oracle
OracleOracle
OracleMyBlj
 
oecoil condens-2-notice-utilisation
oecoil condens-2-notice-utilisationoecoil condens-2-notice-utilisation
oecoil condens-2-notice-utilisationClothildeBenares
 
Etude du comportement mécanique de sols grossiers à matrice version definitiv...
Etude du comportement mécanique de sols grossiers à matrice version definitiv...Etude du comportement mécanique de sols grossiers à matrice version definitiv...
Etude du comportement mécanique de sols grossiers à matrice version definitiv...abdelkrim abdellaoui
 

What's hot (18)

PMP Report
PMP ReportPMP Report
PMP Report
 
Maintenance electricite-industrielle-print
Maintenance electricite-industrielle-printMaintenance electricite-industrielle-print
Maintenance electricite-industrielle-print
 
Polycope java enseignant
Polycope java enseignantPolycope java enseignant
Polycope java enseignant
 
Automatisme) www.cours-online.com
Automatisme) www.cours-online.comAutomatisme) www.cours-online.com
Automatisme) www.cours-online.com
 
9782212127829
97822121278299782212127829
9782212127829
 
Tutoriel Ruby on Rails : apprendre Rails par l'exemple de Michael Hartl
Tutoriel Ruby on Rails : apprendre Rails par l'exemple de Michael HartlTutoriel Ruby on Rails : apprendre Rails par l'exemple de Michael Hartl
Tutoriel Ruby on Rails : apprendre Rails par l'exemple de Michael Hartl
 
Unity
UnityUnity
Unity
 
Guide administrateur rubedo 2.2
Guide administrateur rubedo 2.2Guide administrateur rubedo 2.2
Guide administrateur rubedo 2.2
 
Annexes Logiciel Pl7
Annexes Logiciel Pl7Annexes Logiciel Pl7
Annexes Logiciel Pl7
 
Architectures logicielles et materielles
Architectures logicielles et materiellesArchitectures logicielles et materielles
Architectures logicielles et materielles
 
Oracle
OracleOracle
Oracle
 
Jmetertest
JmetertestJmetertest
Jmetertest
 
Tutorial Autocad 2006 2D
Tutorial Autocad 2006 2DTutorial Autocad 2006 2D
Tutorial Autocad 2006 2D
 
Programmation en-java-api
Programmation en-java-apiProgrammation en-java-api
Programmation en-java-api
 
Livret java
Livret javaLivret java
Livret java
 
Analyse numérique
Analyse numériqueAnalyse numérique
Analyse numérique
 
oecoil condens-2-notice-utilisation
oecoil condens-2-notice-utilisationoecoil condens-2-notice-utilisation
oecoil condens-2-notice-utilisation
 
Etude du comportement mécanique de sols grossiers à matrice version definitiv...
Etude du comportement mécanique de sols grossiers à matrice version definitiv...Etude du comportement mécanique de sols grossiers à matrice version definitiv...
Etude du comportement mécanique de sols grossiers à matrice version definitiv...
 

Viewers also liked

L'activité e-commerce des TPE-PME en région - Edition 2013
L'activité e-commerce des TPE-PME en région - Edition 2013L'activité e-commerce des TPE-PME en région - Edition 2013
L'activité e-commerce des TPE-PME en région - Edition 2013PowerBoutique
 
Soins dentaires en Hongrie : les Francais sont-ils satisfaits après leur trai...
Soins dentaires en Hongrie : les Francais sont-ils satisfaits après leur trai...Soins dentaires en Hongrie : les Francais sont-ils satisfaits après leur trai...
Soins dentaires en Hongrie : les Francais sont-ils satisfaits après leur trai...Nicolas Pineau
 
Papa, maman, les écrans et moi1
Papa, maman, les écrans et moi1Papa, maman, les écrans et moi1
Papa, maman, les écrans et moi1Nadya Benyounes
 
SUCESOS Ocho jóvenes detenidos por robar en más de 150 viviendas en el noroes...
SUCESOS Ocho jóvenes detenidos por robar en más de 150 viviendas en el noroes...SUCESOS Ocho jóvenes detenidos por robar en más de 150 viviendas en el noroes...
SUCESOS Ocho jóvenes detenidos por robar en más de 150 viviendas en el noroes...fernandoatienzagarcia
 
Matrimonio A La Fuerza
Matrimonio A La FuerzaMatrimonio A La Fuerza
Matrimonio A La FuerzaAdriana Gotsis
 
Literatura + Internet: tomo 2
Literatura + Internet: tomo 2Literatura + Internet: tomo 2
Literatura + Internet: tomo 2Juan J. Merelo
 
Regimes de Responsabilite Americains: Conference MARSH-AFJE
Regimes de Responsabilite Americains: Conference MARSH-AFJE Regimes de Responsabilite Americains: Conference MARSH-AFJE
Regimes de Responsabilite Americains: Conference MARSH-AFJE Eliot Norman
 
Diaporama grande-bretagne[1]
Diaporama grande-bretagne[1]Diaporama grande-bretagne[1]
Diaporama grande-bretagne[1]lucifer
 
Bonjour du Monde: la plateforme numérique pour professeurs de FLE
Bonjour du Monde: la plateforme numérique pour professeurs de FLEBonjour du Monde: la plateforme numérique pour professeurs de FLE
Bonjour du Monde: la plateforme numérique pour professeurs de FLEJürgen Wagner
 
“Open Data” & “Big Data” présentation de Romain Lacombe, mission Etalab, févr...
“Open Data” & “Big Data” présentation de Romain Lacombe, mission Etalab, févr...“Open Data” & “Big Data” présentation de Romain Lacombe, mission Etalab, févr...
“Open Data” & “Big Data” présentation de Romain Lacombe, mission Etalab, févr...ADBS
 
Juan Pablo II
Juan Pablo IIJuan Pablo II
Juan Pablo IIlucasjdd
 
Contrapublicidade navideña
Contrapublicidade navideñaContrapublicidade navideña
Contrapublicidade navideñaParrotroca
 

Viewers also liked (20)

L'activité e-commerce des TPE-PME en région - Edition 2013
L'activité e-commerce des TPE-PME en région - Edition 2013L'activité e-commerce des TPE-PME en région - Edition 2013
L'activité e-commerce des TPE-PME en région - Edition 2013
 
Verdi sa vie ses operas
Verdi sa vie ses operasVerdi sa vie ses operas
Verdi sa vie ses operas
 
Soins dentaires en Hongrie : les Francais sont-ils satisfaits après leur trai...
Soins dentaires en Hongrie : les Francais sont-ils satisfaits après leur trai...Soins dentaires en Hongrie : les Francais sont-ils satisfaits après leur trai...
Soins dentaires en Hongrie : les Francais sont-ils satisfaits après leur trai...
 
Papa, maman, les écrans et moi1
Papa, maman, les écrans et moi1Papa, maman, les écrans et moi1
Papa, maman, les écrans et moi1
 
SUCESOS Ocho jóvenes detenidos por robar en más de 150 viviendas en el noroes...
SUCESOS Ocho jóvenes detenidos por robar en más de 150 viviendas en el noroes...SUCESOS Ocho jóvenes detenidos por robar en más de 150 viviendas en el noroes...
SUCESOS Ocho jóvenes detenidos por robar en más de 150 viviendas en el noroes...
 
Matrimonio A La Fuerza
Matrimonio A La FuerzaMatrimonio A La Fuerza
Matrimonio A La Fuerza
 
Futbol
FutbolFutbol
Futbol
 
Modelo digital del proceso pedagógico
Modelo digital del proceso pedagógicoModelo digital del proceso pedagógico
Modelo digital del proceso pedagógico
 
Storyboard
StoryboardStoryboard
Storyboard
 
Atelier n 4
Atelier n 4Atelier n 4
Atelier n 4
 
Literatura + Internet: tomo 2
Literatura + Internet: tomo 2Literatura + Internet: tomo 2
Literatura + Internet: tomo 2
 
Regimes de Responsabilite Americains: Conference MARSH-AFJE
Regimes de Responsabilite Americains: Conference MARSH-AFJE Regimes de Responsabilite Americains: Conference MARSH-AFJE
Regimes de Responsabilite Americains: Conference MARSH-AFJE
 
Diaporama grande-bretagne[1]
Diaporama grande-bretagne[1]Diaporama grande-bretagne[1]
Diaporama grande-bretagne[1]
 
Bonjour du Monde: la plateforme numérique pour professeurs de FLE
Bonjour du Monde: la plateforme numérique pour professeurs de FLEBonjour du Monde: la plateforme numérique pour professeurs de FLE
Bonjour du Monde: la plateforme numérique pour professeurs de FLE
 
“Open Data” & “Big Data” présentation de Romain Lacombe, mission Etalab, févr...
“Open Data” & “Big Data” présentation de Romain Lacombe, mission Etalab, févr...“Open Data” & “Big Data” présentation de Romain Lacombe, mission Etalab, févr...
“Open Data” & “Big Data” présentation de Romain Lacombe, mission Etalab, févr...
 
trabajo 3 Biologia y Conducta
trabajo 3 Biologia y Conductatrabajo 3 Biologia y Conducta
trabajo 3 Biologia y Conducta
 
República bolivariana de venezuela
República bolivariana de venezuelaRepública bolivariana de venezuela
República bolivariana de venezuela
 
Juan Pablo II
Juan Pablo IIJuan Pablo II
Juan Pablo II
 
AVP SUMINISTROS INDUSTRIALES
AVP SUMINISTROS INDUSTRIALESAVP SUMINISTROS INDUSTRIALES
AVP SUMINISTROS INDUSTRIALES
 
Contrapublicidade navideña
Contrapublicidade navideñaContrapublicidade navideña
Contrapublicidade navideña
 

Similar to INITIATION_PHP_NAB_2009

Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...mouafekmazia
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testahmed oumezzine
 
Introduction aux systèmes automatisés
Introduction aux systèmes automatisésIntroduction aux systèmes automatisés
Introduction aux systèmes automatisésmorin moli
 
Introduction á C-sharp
Introduction á C-sharpIntroduction á C-sharp
Introduction á C-sharpmedfa
 
Course outline p6
Course outline p6Course outline p6
Course outline p6Kazim Naqvi
 
Bi methodes agiles
Bi methodes agilesBi methodes agiles
Bi methodes agilesyoussef222
 
Implémentation et mise en place d’un système décisionnel pour la solution Meg...
Implémentation et mise en place d’un système décisionnel pour la solution Meg...Implémentation et mise en place d’un système décisionnel pour la solution Meg...
Implémentation et mise en place d’un système décisionnel pour la solution Meg...Houssem Eddine Jebri
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)safwenbenfredj
 
dede
dededede
dedezaiim
 
vcbn
vcbnvcbn
vcbnzaiim
 
ututu
ututuututu
ututuzaiim
 
POO en C++
POO en C++POO en C++
POO en C++elharraj
 
OpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientOpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientTaieb Kristou
 
Le Référentiel Nouvelles Plateformes Technologiques
Le Référentiel Nouvelles Plateformes TechnologiquesLe Référentiel Nouvelles Plateformes Technologiques
Le Référentiel Nouvelles Plateformes TechnologiquesGenève Lab
 

Similar to INITIATION_PHP_NAB_2009 (20)

Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de test
 
Guide administrateur22
Guide administrateur22Guide administrateur22
Guide administrateur22
 
Mémoire seo-fb
Mémoire seo-fbMémoire seo-fb
Mémoire seo-fb
 
Introduction aux systèmes automatisés
Introduction aux systèmes automatisésIntroduction aux systèmes automatisés
Introduction aux systèmes automatisés
 
Introduction á C-sharp
Introduction á C-sharpIntroduction á C-sharp
Introduction á C-sharp
 
Course outline p6
Course outline p6Course outline p6
Course outline p6
 
19
1919
19
 
Pmbok methodes agiles
Pmbok methodes agilesPmbok methodes agiles
Pmbok methodes agiles
 
Bi methodes agiles
Bi methodes agilesBi methodes agiles
Bi methodes agiles
 
Implémentation et mise en place d’un système décisionnel pour la solution Meg...
Implémentation et mise en place d’un système décisionnel pour la solution Meg...Implémentation et mise en place d’un système décisionnel pour la solution Meg...
Implémentation et mise en place d’un système décisionnel pour la solution Meg...
 
Rapport pfev7
Rapport pfev7Rapport pfev7
Rapport pfev7
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 
dede
dededede
dede
 
vcbn
vcbnvcbn
vcbn
 
ututu
ututuututu
ututu
 
POO en C++
POO en C++POO en C++
POO en C++
 
Cours java v1.4
Cours java v1.4Cours java v1.4
Cours java v1.4
 
OpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientOpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revient
 
Le Référentiel Nouvelles Plateformes Technologiques
Le Référentiel Nouvelles Plateformes TechnologiquesLe Référentiel Nouvelles Plateformes Technologiques
Le Référentiel Nouvelles Plateformes Technologiques
 

INITIATION_PHP_NAB_2009

  • 2. Initiation au langage PHP Page 2 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 SOMMAIRE AVERTISEMENT ............................................................................................................................. 4   I.   PRESENTATION ................................................................................................................. 5   1.1.   Origines ............................................................................................................................ 5   1.2.   principaux atouts.......................................................................................................... 5   1.3.   SGBD supportés par PHP........................................................................................... 6   II.   IMPLEMENTATION DU CODE........................................................................................ 7   2.1.   L'interprétation du code par le serveur ............................................................... 7   2.2.   Implantation au sein du code HTML...................................................................... 7   2.3.   Les commentaires ........................................................................................................ 8   2.4.   Typologie.......................................................................................................................... 8   III.   INSTALLATION SOUS WINDOWS............................................................................... 9   3.1.   Introduction à WampServer..................................................................................... 9   3.2.   Installation ...................................................................................................................... 9   3.3.   Editer votre site........................................................................................................... 11   3.4.   Autres outils.................................................................................................................. 11   IV.   CONCEPT DE VARIABLES AVEC PHP....................................................................... 12   4.1.   Declaration et type .................................................................................................... 12   4.2.   Nommage des variables........................................................................................... 12   4.3.   Variables scalaires...................................................................................................... 12   4.4.   Variables tableaux...................................................................................................... 13   4.5.   Tests sur les variables.............................................................................................. 16   4.6.   Définition de constantes .......................................................................................... 16   V.   LES OPERATEURS........................................................................................................... 17   5.1.   Les opérateurs arithmétiques .............................................................................. 17   5.2.   Les opérateurs d'assignation ................................................................................. 17   5.3.   Les opérateurs d'incrémentation / Décrémentation ..................................... 18   5.4.   Les opérateurs de comparaison............................................................................ 19   5.5.   Les opérateurs logiques (booléens) .................................................................... 19   5.6.   (Les opérateurs bit-à-bit)........................................................................................ 20   5.7.   (Les opérateurs de rotation de bit) ..................................................................... 20   5.8.   Autres opérateurs....................................................................................................... 21   5.9.   Les priorités .................................................................................................................. 21   VI.   STRUCTURES CONDITIONNELLES........................................................................... 23   6.1.   La notion de bloc ........................................................................................................ 23   6.2.   Les primitives de choix............................................................................................. 23   6.3.   L'instruction if ... elseif ... else.............................................................................. 24   6.4.   Les boucles.................................................................................................................... 26   VII.   LA NOTION DE FONCTION.......................................................................................... 30   7.1.   La déclaration d'une fonction................................................................................. 30   7.2.   Appel de fonction........................................................................................................ 30   7.3.   Portée (visibilité) des variables............................................................................. 32   7.4.   Retourner plusieurs variables................................................................................ 35   7.5.   La récursivité................................................................................................................ 35   7.6.   Les fonctions standards d’affichage................................................................... 36   VIII.   FONCTION MAIL.............................................................................................................. 39   8.1.   La fonction mail() ....................................................................................................... 39   8.2.   Les options / en-têtes............................................................................................... 39  
  • 3. Initiation au langage PHP Page 3 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 8.3.   La fonction email()..................................................................................................... 40   IX.   NOTION DE VARIABLES D'ENVIRONNEMENT .................................................... 41   9.1.   Les variables d'environnement ............................................................................. 41   9.2.   Affichage des variables d'environnement ......................................................... 42   X.   LA GESTION DES FICHIERS AVEC PHP.................................................................. 44   10.1.   La fonction fopen() .................................................................................................... 44   10.2.   Lecture et écriture...................................................................................................... 45   10.3.   Les tests de fichiers................................................................................................... 46   10.4.   Quelques fonctions de manipulation de fichiers............................................. 47   XI.   LES EXPRESSIONS REGULIERES.............................................................................. 49   11.1.   Construire une expression régulière................................................................... 49   11.2.   Les classes de caractères........................................................................................ 51   11.3.   Les fonctions de manipulation d'expressions régulières............................. 51   XII.   CREATION D’IMAGES.................................................................................................... 54   12.1.   Prérequis........................................................................................................................ 54   12.2.   Comment utiliser ces fonctions............................................................................. 54   12.3.   L'allocation de couleur.............................................................................................. 55   12.4.   La création de formes............................................................................................... 55   12.5.   Les chaînes de caractères ....................................................................................... 56   12.6.   Un diagramme de visiteurs..................................................................................... 58   XIII.   LES SESSIONS ET LES COOKIES ............................................................................. 61   13.1.   Les sessions.................................................................................................................. 61   13.2.   Les cookies.................................................................................................................... 63   XIV.   NOTION DE CLASSES ................................................................................................... 66   14.1.   introduction................................................................................................................... 66   14.2.   sousclasse...................................................................................................................... 66   14.3.   Quelques fonctions : ................................................................................................. 66   14.4.   remarque ....................................................................................................................... 67   XV.   INTRODUCTION AUX BASES DE DONNEES (MYSQL)....................................... 68   15.1.   Introduction .................................................................................................................. 68   15.2.   Connexion à une base de données...................................................................... 68   15.3.   manipulation................................................................................................................. 69   15.4.   Quelques fonctions supplémentaires très utiles............................................. 70   XVI.   MINI PROJET..................................................................................................................... 71  
  • 4. Initiation au langage PHP Page 4 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 AVERTISEMENT Cet ouvrage s’adresse aux étudiants des filières informatiques et à tous ceux qui sont passionnés de la programmation informatique en generale et en particulier du developpement web dynamique. Pour toutes vos remarques et suggestion contactez nabeledi@yahoo.fr
  • 5. Initiation au langage PHP Page 5 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 I.PRESENTATION 1.1. Origines C’est un langage incrusté au HTML et interprété côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (comme un script écrit en Javascript ou une applet Java ...). Il dérive du C et du Perl dont il reprend la syntaxe. Il est extensible grâce à de nombreux modules et son code source est ouvert. Comme il supporte tous les standards du web et qu’il est gratuit, il s’est rapidement répandu sur la toile. Le langage PHP a été créé au début d'automne 1994 par Rasmus Lerdorf. Ce langage de script lui permettait de conserver la trace des utilisateurs venant consulter son CV sur son site, grâce à l'accès à une base de données par l'intermédiaire de requêtes SQL. Ainsi, étant donné que de nombreux internautes lui demandèrent ce programme, Rasmus Lerdorf mit en ligne en 1995 la première version de ce programme qu'il baptisa Personal Sommaire Page Tools, puis Personal Home Page v1.0 (traduisez page personnelle version 1.0). Etant donné le succès de PHP 1.0, Rasmus Lerdorf décida d'améliorer ce langage en y intégrant des structures plus avancées telles que des boucles, des structures conditionnelles, et y intégra un package permettant d'interpréter les formulaires qu'il avait développé (FI, Form Interpreter) ainsi que le support de mSQL. C'est de cette façon que la version 2 du langage, baptisée pour l'occasion PHP/FI version 2, vit le jour durant l'été 1995. Il fut rapidement utilisé sur de nombreux sites (15000 fin 1996, puis 50000 en milieu d'année 1997). A partir de 1997, Zeev Suraski et Andi Gutmans rejoignirent Rasmus pour former une équipe de programmeurs afin de mettre au point PHP 3 (Stig Bakken, Shane Caraveo et Jim Winstead les rejoignèrent par la suite). C'est ainsi que la version 3.0 de PHP fut disponible le 6 juin 1998. Le nouveau moteur, appelé 'Zend Engine' (combinaison des noms de Zeev et Andi), atteint ces objectifs avec succès, et la première version fut publiée vers la mi-1999. PHP 4.0, s'appuyant sur ce moteur et amélioré par un grand nombre de nouvelles fonctionnalités fut publié officiellement en mai 2000, presque 2 ans après son prédécesseur. En plus de performances nettement plus élevées, PHP 4.0 apportait le support de nombreux serveurs web, les sessions HTTP, la bufferisation de sortie, une sécurité accrue des informations visiteurs et plusieurs nouvelles structures de langage. Hypertext Preprocessor (acronyme récursif à l’exemple du système Open Source Linux : Is Not UniX) est la signification officielle de PHP. En juillet 2000 plus de 300.000 sites tournaient sous PHP ! PHP 5 est sorti en Juillet 2004 après un long développement et plusieurs pré-versions. Il est régi par son moteur, le Zend Engine 2.0 avec un nouveau modèle et des dizaines de nouvelles fonctionnalités. 30 juin 2009 , PHP 5.3 est enfin disponible en version finale . La dernière mise à jour est la 5.3.2 datant du 4 mars 2010 La nouvelle monture de la plateforme star du Web est en cours de préparation : PHP 6 avec l’amélioration de la Programmation Orienté Objet, l’amélioration et sécurisation des fonctionnalités, 1.2. principaux atouts La gratuité et la disponibilité du code source (PHP est distribué sous licence GNU GPL), La simplicité d'écriture de scripts, La possibilité d'inclure le script PHP au sein d'une page HTML (contrairement aux scripts CGI, pour lesquels il faut écrire des lignes de code pour afficher chaque ligne en langage HTML)
  • 6. Initiation au langage PHP Page 6 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 La simplicité d'interfaçage avec des bases de données (de nombreux SGBD sont supportés, mais le plus utilisé avec ce langage est MySQL, un SGBD gratuit disponible sur les plateformes Linux, et Windows). L'intégration au sein de nombreux serveurs web (Apache, Microsoft IIS, ...) 1.3. SGBD supportés par PHP PHP permet un interfaçage simple avec de nombreux SGBD. PHP supporte les SGBD suivants (la liste est évolutive): Adabas D DBase Empress FilePro Informix Interbase MSQL MySQL Oracle PostgreSQL Solid Sybase Velocis Unix dbm Hyperwave IBM DB2 Ingres FrontBase Ovrimos FilePro (lecture seule) Il existe aussi des couches d'abstraction de base de données comme DBX qui vous permettent de vous connecter de manière transparente à toute base de données supportée par cette extension. De plus, PHP supporte ODBC, ce qui vous permet de vous connecter à toute autre base de données qui supporte ce standard. PHP supporte de nombreux protocoles comme par exemple LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (sous Windows) et encore d'autres. Vous pouvez ouvrir des sockets réseau, et intéragir avec n'importe quel autre protocole. PHP supporte le format complexe WDDX, qui permet de communiquer entre tous les langages web. En terme d'interconnexion, PHP supporte aussi les instanciations d'objets Java, et les utilise de manière transparente comme objets intégrés. Vous pouvez aussi exploiter les objets distants avec CORBA. PHP dispose de fonctionnalités extrêmement utiles pour le traitement de texte, allant des expressions régulières POSIX étendues ou Perl aux traitements des fichiers XML, avec les standards SAX et DOM. Vous pouvez utiliser les transformations XSLT. En commerce électronique, vous trouverez des outils de paiement intégrés comme Cybercash, CyberMut, VeriSign Payflow Pro et CCVS, pour réaliser des paiements en ligne.
  • 7. Initiation au langage PHP Page 7 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 II.IMPLEMENTATION DU CODE 2.1. L'interprétation du code par le serveur Un script PHP est un simple fichier texte contenant des instructions écrites à l'aide de caractères ASCII 7 bits (des caractères non accentués) incluses dans un code HTML à l'aide de balises spéciales et stocké sur le serveur. Ce fichier doit avoir l'extension ".php" ou".php3" ou ".php4" ou ".php5" pour être interprété par le serveur! Ainsi, lorsqu'un navigateur (le client) désire accéder à une page dynamique réalisé en php: le serveur reconnaît qu'il s'agit d'un fichier php il lit le fichier php Dès que le serveur rencontre une balise indiquant que les lignes suivantes sont du code php, il "passe" en mode php, ce qui signifie qu'il ne lit plus les instructions: il les exécute! Lorsque le serveur rencontre une instruction, il la transmet à l'interpréteur L'interpréteur exécute l'instruction puis envoie les sorties éventuelles au serveur A la fin du script, le serveur transmet le résultat au client (le navigateur) Le code php stocké sur le serveur n'est donc jamais visible directement par le client puisque dès qu'il en demande l'accès, le serveur l'interprète! De cette façon aucune modification n'est à apporter sur les navigateurs... 2.2. Implantation au sein du code HTML Pour que le script soit interprété par le serveur deux conditions sont nécessaires: Le fichier contenant le code doit avoir l'extension .php et non .htm Le code php contenu dans le code HTML doit être délimité par les balises <?php et ?> ou <? et ?> ou <script language="php"> et </script> Exemple Voici l'exemple le plus utilisé de script php: <?php echo "bonjour monde"; // affiche bonjour monde ?> On notera bien évidemment que la fonction echo permet d'afficher sur le navigateur la chaîne délimitée par les guillemets... Le séparateur d'instructions est le point virgule ; . Il est obligatoire, sauf si l'instruction est suivie de la balise ?>
  • 8. Initiation au langage PHP Page 8 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 2.3. Les commentaires Une autre façon de rendre le code plus compréhensible consiste à insérer des commentaires, des lignes qui seront tout simplement ignorées par le serveur lors de l'interprétation. Pour ce faire, il est possible, comme en langage C ou C++ d'utiliser des balises qui vont permettre de délimiter les explications afin que l'interpréteur les ignore et passe directement à la suite du code. Commentaire sur une ligne: // ou # Commentaire sur plusieurs lignes: /* ... */ Les commentaires peuvent être placés n'importe où à l'intérieur des délimiteurs de script PHP Les commentaires ne peuvent contenir le délimiteur de fin de commentaire (*/) Les commentaires ne peuvent être imbriqués Les commentaires peuvent être écrits sur plusieurs lignes Les commentaires ne peuvent pas couper un mot du code en deux 2.4. Typologie La manière d'écrire les choses en langage PHP a son importance. Le langage PHP est sensible à la casse (en anglais case sensitive), cela signifie qu'un nom contenant des majuscules est différent du même nom écrit en minuscules. Toutefois, cette règle ne s'applique pas aux fonctions, les spécifications du langage PHP précisent que la fonction print peut être appelée print(), Print() ou PRINT().
  • 9. Initiation au langage PHP Page 9 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 III.INSTALLATION SOUS WINDOWS 3.1. Introduction à WampServer Afin de faire fonctionner PHP, il est nécessaire à la base d'en télécharger les sources depuis un site spécialisé (par exemple PHP.net), puis de les compiler (ainsi que d'éditer les liens) afin de créer un fichier exécutable. Ce processus demande des notions avancées en informatique, c'est pourquoi un adepte de PHP (Romain Bourdon) a mis au point un package WampServer contenant 3 produits incontournables de la scène PHP : Le serveur Web Apache Le moteur de scripts PHP4 La base de données MySQL WampServer est ainsi un pack fonctionnant sous Windows permettant d'installer en un clin d'oeil les éléments nécessaires au fonctionnement d'un site web dynamique développé en PHP Le pack WampServer est disponible sur http://www.wampserver.com Il vous suffit dans un premier temps de télécharger et installer la version la plus récente (à ce jour WampServer 2.0i) 3.2. Installation Double cliquez sur le fichier téléchargé et laissez vous guider. Tout est géré par l'installeur de WampServer. Par défaut, WampServer est livré avec les toutes dernières versions de Apache, MySQL et PHP. Si tout va bien, vous devriez voir apparaître un petit symbole en bas à droite de votre barre des tâches, un symbole blanc ( il est tout à gauche) : Si ce symbole a un fond blanc comme ici, c'est parfait. Si le fond est jaune ou rouge, cela signifie que les services ne se sont pas installés correctement, ou qu'ils n'ont pu démarrer. Dans le doute, relancez Wampserver après l'avoir quitté proprement (clic droit, exit). Une fois Wampserver installé, vous allez pouvoir consulter sa page d'accueil par défaut (réalisée en PHP).
  • 10. Initiation au langage PHP Page 10 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Pour ce faire : • Invoquez localhost du menu contextuel de wampserver Ou bien • Démarrez votre navigateur web, puis tapez dans la bare d'adresses ceci : http://localhost/ OU http://127.0.0.1/ . (si un autre service web n’est pas activé sur le port 80 de la machine)
  • 11. Initiation au langage PHP Page 11 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Les deux adresses ci-dessus représentant votre machine locale. 3.3. Editer votre site Pour créer votre site web dynamique avec WampServer, il vous suffit de déposer vos créations dans le sous-répertoire www/ de wamp/ depuis la racine du disque d’intallation. Par exemple créez un fichier phpinfo.php texte contenant le texte suivant : <? phpinfo(); ?> Déposez-le dans le sous répertoire /www. Vous pouvez désormais visualiser le résultat à l'adresse suivante: http://localhost/phpinfo.php ou http://127.0.0.1/phpinfo.php 3.4. Autres outils Des packages peuvent remplacer WampServer et sont laissés à l’appréciation du lecteur. EasyPhp Inclu : • Apache • MySQL • PHP XAMPP Uune "distribution" d'Apache qui contient également • Apache • MySQL • PHP et PERL LAMP Sur Linux mais disponible aussi pour windows inclut • Apache • Mysql • Php
  • 12. Initiation au langage PHP Page 12 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 IV.CONCEPT DE VARIABLES AVEC PHP 4.1. Declaration et type Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Le typage des variables est implicite en php. Il n’est donc pas nécessaire de déclarer leur type au préalable ni même de les initialiser avant leur utilisation. Les identificateurs de variable sont précédés du symbole « $ » (dollars). Exemple : $nabson . Les variables peuvent être de type : • entier (integer), • réel (double), • chaîne de caractères (string), • tableau (array), • objet (object), • booléen (boolean). Il est possible de convertir une variable en un type primitif grâce au cast (comme en C). Exemple : $str = ’’12’’; // $str vaut la chaîne ‘’12’’ $nbr = (int)$str; // $nbr vaut le nombre 12 4.2. Nommage des variables Avec PHP, les noms de variables doivent répondre à certains critères: Un nom de variable doit commencer par une lettre (majuscule ou minuscule) ou un "_" (pas par un chiffre) Un nom de variable peut comporter des lettres, des chiffres et le caractère _ (les espaces ne sont pas autorisés!) Nom de variable correct Nom de variable incorrectRaison $Variable $Nom de Variable comporte des espaces $Nom_De_Variable $123Nom_De_Variable commence par un chiffre $nom_de_variable $toto@mailcity.com caractère spécial @ $nom_de_variable_123 $Nom-de-variable signe – interdit $nom_de_variable nom_de_variable ne commence pas par $ Les noms de variables sont sensibles à la casse (le langage PHP fait la différence entre un nom en majuscule et un nom en minuscules), il faut donc veiller à utiliser des noms comportant la même casse! Toutefois, les noms de fonctions font exception à cette règle... 4.3. Variables scalaires Le langage PHP propose trois types de variables scalaires: entiers: nombres naturels sans décimale (sans virgule) réels: nombres décimaux (on parle généralement de type double, car il s'agit de nombre décimaux à double précision) chaînes de caractères: ensembles de caractères entre guillemets simples ou doubles Il n'est pas nécessaire en PHP de typer les variables, c'est-à-dire de définir leur type, il suffit de leur assigner une valeur pour en définir le type.
  • 13. Initiation au langage PHP Page 13 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Instruction Type de la variable $Variable = 0; type entier $Variable = 12; type entier $Variable = 0.0; type réel $Variable = 12.0; type réel $Variable = "0.0"; type chaîne $Variable = "Bonjour tout le monde"; type chaîne Il existe des caractères repérés par un code ASCII spécial permettant d'effectuer des opérations particulières. Ces caractères peuvent être représentés plus simplement en langage PHP grâce au caractère '' suivi d'une lettre, qui précise qu'il s'agit d'un caractère de contrôle: Caractère Description " Guillemet barre oblique inverse (antislash) r retour chariot n retour à la ligne t Tabulation En effet, certains de ces caractères ne pourraient pas être représentés autrement (un retour à la ligne ne peut pas être représenté à l'écran). D'autre part, les caractères et " ne peuvent pas faire partie en tant que tel d'une chaîne de caractère, pour des raisons évidente d'ambiguïté... 4.4. Variables tableaux 4.4.1. Géneralités Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes à gérer. Heureusement, PHP propose des structures de données permettant de stocker l'ensemble de ces données dans une "variable commune". Ainsi, pour accéder à ces valeurs il suffit de parcourir la variable de type complexe composée de "variables" de type simple. Les tableaux stockent des données sous forme de liste. Les données contenues dans la liste sont accessibles grâce à un index (un numéro représentant l'élément de la liste). Contrairement à des langages tels que le langage C, il est possible de stocker des éléments de types différents dans un même tableau. Pour créer un tableau, utiliser la fonction array( ); Exemple Déclaration $fruits = array(); Affectation $fruits[0]= "pomme"; $fruits[1]= "banane"; $fruits[] = "orange"; // equivaut a $fruits[2]= "orange" ou $fruits= array( "pomme", "banane", "orange" ); Ainsi, pour désigner un élément de tableau, il suffit de faire suivre au nom du tableau l'indice de l'élément entre crochets:
  • 14. Initiation au langage PHP Page 14 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Avec PHP, il n'est pas nécessaire de préciser la valeur de l'index lorsque l'on veut remplir un tableau, car il assigne la valeur 0 au premier élément (si le tableau est vide) et incrémente les indices suivants. De cette façon, il est facile de remplir un tableau avec des valeurs. 4.4.2. Tableaux multidimensionnels Comme nous l'avons déjà vu dans sur les tableaux à une dimension (les vecteurs), nous savons que nous pouvons mettre absolument tout ce que l'on veut dans chaque casier de notre tableau. Y compris même un autre tableau. Hé bien c'est exactement comme ça qu'on déclare un tableau à deux dimensions. Si l'on ne sait pas à l'avance ce que l'on va mettre dans chaque casier, on déclare ce tableau de la manière suivante : $Tableau = array(array()) ; Il est possible de créer directement des tableaux multidimensionnels en utilisant plusieurs paires de crochets pour les index (autant de paires de crochets que la dimension voulue). Par exemple, un tableau à deux dimensions pourra être déclaré comme suit: $Tableau[0][0] = 12; $Tableau[0][1] = "ntic"; $Tableau[1][0] = 123.4567; $Tableau[1][1] = "Au revoir"; 4.4.3. Tableau associatif Un tableau associatif est un tableau dont l'index est une chaine de caractère au lieu d'un nombre. On parle aussi de ``hash array'' ou ``hash''. Cette façon de nommer les indices peut parfois être plus agréable à utiliser.Le tableau associatif se déclare comme un tableau traditionnel Exemple1 Déclaration $personne = array(); Affectation $personne["Nom"] = "Konan"; $personne["Prénom"] = "Jules"; $personne["Age"] = 31; L’initialisation d’un tableau associatif est similaire à celle d’un tableau normal. Exemple 2 $personne = array("Nom" => "Konan", "Prénom" => "Jules", "Age" => 31 ); Les exemples 1 et 2 sont equivalents Ici à la clé "Nom" est associée la valeur "Konan". 4.4.4. Quelques fonctions relatives aux tableaux : a) sizeof Renvoie le nombre d'éléments d'un tableau. Équivalent de count $sz= sizeof( $tablo ); b) is_array Renvoie true si la variable est de type tableau (ou tableau associatif), false sinon.
  • 15. Initiation au langage PHP Page 15 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 c) reset reset($tablo) Place le pointeur interne sur le premier élément du tableau: Chaque variable tableau possède un pointeur interne repérant l'élément courant. d) end end($tablo) Place le pointeur interne du tableau sur le dernier élément du tableau. e) current Renvoie l'élément courant du tableau. f) next Déplace le pointeur vers l'élément suivant, et renvoie cet élément. Renvoie false s’il n'existe pas . g) prev Déplace le pointeur vers l'élément précédent, et renvoie cet élément. Renvoie false s’il n'existe pas Exemple $transport = array('pied', 'velo', 'voiture', 'avion'); $mode = current($transport); // $mode = 'pied'; $mode = next($transport); // $mode = 'velo'; $mode = next($transport); // $mode = 'voiture'; $mode = prev($transport); // $mode = 'velo'; $mode = end($transport); // $mode = 'avion'; h) each $a=each($tablo) Renvoie l'index et la valeur courante dans un tableau à 2 éléments; $a[0] contient l'index, $a[1] la valeur. i) list list( $scalar1, $scalr2, ... ) Construit un tableau temporaire à partir des variables scalaires passées en argument. $tableau = array('le bon', 'la brute', 'le truand'); reset($tableau); while ( list($clef, $valeur) = each($tableau) ) { echo "$clef = $valeur <br />"; } /* 0 = le bon 1 = la brute 2 = le truand */ j) key key($tablo) Renvoie l'index de l'élément courant du tableau.
  • 16. Initiation au langage PHP Page 16 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 4.5. Tests sur les variables La fonction isset permet de tester si une variable est définie. La fonction unset permet de supprimer la variable, et de désallouer la mémoire utilisée. $a= "php"; echo isset($a); // => 1 (vrai) unset($a); echo isset($a); // => 0 (faux) La fonction gettype permet de connaître le type de la variable. Elle renvoie une chaîne : ``string'' ou ``integer'' ou ``double'' ou ``array'' ou ``object''. Note : Si la variable n'est pas définie, elle renvoie "string" $a= 12; echo gettype($a) ; // => "integer" $a= $a / 10; echo gettype($a) ; // => "double" On peut également tester un type particulier a l'aide des fonctions is_array, is_string, is_int,is_float, is_object . $a= 123; echo is_int($a); // (vrai) echo is_double($a); // (faux) echo is_string($a) // (faux) $a += 0.5;; echo is_float($a); // (vrai) Note: Les fonctions is_double et id_real sont équivalentes a is_float. Les fonctions is_long et is_integer sont équivalentes a is_int. 4.6. Définition de constantes Une constante est une variable dont la valeur est inchangeable lors de l'exécution d'un programme. Avec PHP, les constantes sont définies grâce à la fonction define(). la syntaxe de la fonction define() est la suivante: define("Nom_de_la_variable", Valeur); Exemple 1 define(‘’auteur’’,’’Nabeledi’’); echo auteur; // affiche ‘Nabeledi’ Exemple 2 define(MY_YEAR,2010); echo MY_YEAR; // affiche 2010 Contrairement aux variables, les identificateurs de constantes (et aussi ceux de fonction) ne sont pas sensibles à la casse. Le nom d'une constante définie à l'aide de la fonction define() ne doit pas commencer par le caractère $ (de cette façon aucune affectation n'est possible).
  • 17. Initiation au langage PHP Page 17 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 V. LES OPERATEURS Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs: Les opérateurs arithmétiques Les opérateurs d'assignation Les opérateurs d'incrémentation Les opérateurs de comparaison Les opérateurs logiques (Les opérateurs bit-à-bit) (Les opérateurs de rotation de bit) 5.1. Les opérateurs arithmétiques Les opérateurs de calcul permettent de modifier mathématiquement la valeur d'une variable Opérateur Dénomination Effet Exple Résultat (pour x=7) + opérateur d'addition Ajoute deux valeurs $x+3 10 - opérateur de soustraction Soustrait deux valeurs $x-3 4 * opérateur de multiplication Multiplie deux valeurs $x*3 21 / plus: opérateur de division Divise deux valeurs $x/3 2.3333333 % opérateur modulo Donne le reste de la division entière entre 2 nombres $x%3 1 5.2. Les opérateurs d'assignation L'opérateur d'assignation le plus simple est le signe "=". Le premier réflexe est de penser que ce signe veut dire "égal à". Ce n'est pas le cas. Il signifie que l'opérande de gauche se voit affecter la valeur de l'expression qui est à droite du signe égal. La valeur d'une expression d'assignation est la valeur assignée. Par exemple, la valeur de l'expression '$a = 3' est la valeur 3. Cela permet d'utiliser des astuces telles que : Exemple <?php $b = 4 ; $a = $b + 5; // $b vaut 4 et $a est maintenant égal à 9 ?> En plus du simple opérateur d'assignation, il existe des "opérateurs combinés" pour tous les opérateurs arithmétiques et pour les opérateurs sur les chaînes de caractères. Cela permet d'utiliser la valeur d'une variable dans une expression et d'affecter le résultat de cette expression à cette variable. Exemple
  • 18. Initiation au langage PHP Page 18 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 <?php $a = 3; $a += 5; // affecte la valeur 8 à la variable $a. // correspond à l'instruction '$a = $a + 5'); $b = "Bonjour "; $b .= " tout le monde!"; // affecte la valeur "Bonjour tout le monde!" à la variable $b // identique à $b = $b." tout le monde!"; ?> Ces opérateurs permettent de simplifier des opérations telles que ajouter une valeur dans une variable et stocker le résultat dans la variable. Opérateur Effet = Affecte la valeur de droite à la variable de gauche += addition deux valeurs et stocke le résultat dans la variable (à gauche) - = soustrait deux valeurs et stocke le résultat dans la variable *= multiplie deux valeurs et stocke le résultat dans la variable /= divise deux valeurs et stocke le résultat dans la variable %= donne le reste de la division deux valeurs et stocke le résultat dans la variable |= Effectue un OU logique entre deux valeurs et stocke le résultat dans la variable ^= Effectue un OU exclusif entre deux valeurs et stocke le résultat dans la variable &= Effectue un Et logique entre deux valeurs et stocke le résultat dans la variable .= Concatène deux chaînes et stocke le résultat dans la variable 5.3. Les opérateurs d'incrémentation / Décrémentation Ce type d'opérateur permet de facilement augmenter ou diminuer d'une unité une variable. Ces opérateurs sont très utiles pour des structures telles que des boucles, qui ont besoin d'un compteur (variable qui augmente de un en un). Un opérateur de type $x++ permet de remplacer des notations lourdes telles que $x=$x+1 ou bien $x+=1 Exemple Nom Résultat ++$a Pré-incrémente Incrémente $a de 1, puis retourne $a. $a++ Post-incrémente Retourne $a, puis l'incrémente de 1. --$a Pré-décrémente Décrémente $a de 1, puis retourne $a. $a-- Post-décrémente Retourne $a, puis décrémente $a de 1. Exemple <?php //Post-incrémentation $a = 5; echo $a++ . "<br>n"; // la valeur de a est :5 echo $a . "<br>n"; // la valeur de a est :6 //Pré-incrémentation $a = 5; echo ++$a . "<br>n"; // la valeur de a est :6
  • 19. Initiation au langage PHP Page 19 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 echo $a . "<br>n"; // la valeur de a est :6 //Post-décrémentation $a = 5; echo $a-- . "<br>n"; // la valeur de a est :5 echo $a . "<br>n"; // la valeur de a est :4 //Pré-décrémentation $a = 5; echo --$a. "<br>n" ; // la valeur de a est :4 echo $a . "<br>n"; // la valeur de a est :4 ?> 5.4. Les opérateurs de comparaison Ce type d’poperateur permet de faire ds comparaiasons Exemple Nom Résultat $a == $b Egal Vrai si $a est égal à $b. $a === $b Identique Vrai si $a est égal à $b et qu'ils sont de même type (PHP 4 seulement). $a != $b Différent Vrai si $a est différent de $b. $a <> $b Différent Vrai si $a est différent de $b. $a < $b Plus petit que Vrai si $a est plus petit strictement que $b. $a > $b Plus grand Vrai si $a est plus grand strictement que $b. $a <= $b Inférieur ou égal Vrai si $a est plus petit ou égal à $b. $a >= $b Supérieur ou égal Vrai si $a est plus grand ou égal à $b. Un autre opérateur conditionnel est l'opérateur ternaire (":?"), qui fonctionne comme en langage C. Exemple <?php // Exemple d'utilisation pour l'opérateur ternaire $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; // L'expression ci-dessus est identique à if (empty($_POST['action'])) { $action = 'default'; } else { $action = $_POST['action']; } ?> L'expression (expr1) ? (expr2) : (expr3) renvoie la valeur de l'expression expr2 si l'expression expr1 est vraie, et l'expression expr3 si l'expression expr1 est fausse. 5.5. Les opérateurs logiques (booléens) Ce type d'opérateur permet de vérifier si plusieurs conditions sont vraies: Exemple Nom Portée Résultat $a and $b ET (And) ET logique Vrai si $a ET $b sont vrais. $a or $b OU (Or) OU logique Vrai si $a OU $b est vrai
  • 20. Initiation au langage PHP Page 20 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 $a xor $b XOR (Xor) OU exclusif Vrai si $a OU $b est vrai, mais pas les deux en même temps. ! $a NON (Not) NON logique Vrai si $a est faux. $a && $b ET (And) ET logique Vrai si $a ET $b sont vrais. $a || $b OU (Or) OU logique Vrai si $a OU $b est vrai. 5.6. (Les opérateurs bit-à-bit) Si vous ne comprenez pas ces opérateurs cela n'est pas important, vous n'en aurez probablement pas besoin. Ce type d'opérateur traite ses opérandes comme des données binaires, plutôt que des données décimales, hexadécimales ou octales. Ces opérateurs traitent ces données selon leur représentation binaire mais retournent des valeurs numériques standards dans leur format d'origine. Les opérateurs suivants effectuent des opérations bit-à-bit, c'est-à-dire avec des bits de même poids. Opérateur Nom Effet Syntaxe Résultat & ET bit-à-bit Retourne 1 si les deux bits de même poids sont à 1 9 & 12 (1001 & 1100) 8 (1000) | OU exclusif Retourne 1 si l'un ou l'autre des deux bits de même poids est à 1 (ou les deux) 9 | 12 (1001 | 1100) 13 (1101) ^ OU bit-à-bit Retourne 1 si l'un des deux bits de même poids est à 1 (mais pas les deux) 9 ^ 12 (1001 ^ 1100) 5 (0101) ~ Complément (NON) Retourne 1 si le bit est à 0 (et inversement) ~9 (~1001) 6 (0110) Exemple <?php echo 12 ^ 9; // Affiche '5' ?> 5.7. (Les opérateurs de rotation de bit) Si vous ne comprenez pas ces opérateurs cela n'est pas important, vous n'en aurez probablement pas l'utilité Ce type d'opérateur traite ses opérandes comme des données binaires d'une longueur de 32 bits, plutôt que des données décimales, hexadécimales ou octales. Ces opérateurs traitent ces données selon leur représentation binaire mais retournent des valeurs numériques standards dans leur format d'origine. Les opérateurs suivants effectuent des rotations sur les bits, c'est-à-dire qu'il décale chacun des bits d'un nombre de bits vers la gauche ou vers la droite. La première opérande désigne la donnée sur laquelle on va faire le décalage, la seconde désigne le nombre de bits duquel elle va être décalée.
  • 21. Initiation au langage PHP Page 21 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Opérateur Nom Effet Syntaxe Résultat << Rotation à gauche Décale les bits vers la gauche (multiplie par 2 à chaque décalage). Les zéros qui sortent à gauche sont perdus, tandis que des zéros sont insérés à droite 6 << 1 (110 << 1) 12 (1100) >> Rotation à droite avec conservation du signe Décale les bits vers la droite (divise par 2 à chaque décalage). Les zéros qui sortent à droite sont perdus, tandis que le bit non-nul de poids plus fort est recopié à gauche 6 >> 1 (0110 >> 1) 3 (0011) 5.8. Autres opérateurs Les opérateurs ne peuvent pas être classés dans une catégorie spécifique mais ils ont tout de même chacun leur importance! Opérateur Nom Effet Syntaxe Résultat . Concaténation Joint deux chaînes bout à bout "Bonjour"."Au revoir" "BonjourAu revoir" $ Référencement de variable Permet de définir une variable $MaVariable = 2; à Propriété d'un objet Permet d'accéder aux données membres d'une classe $MonObjetàPropr iete 5.9. Les priorités Lorsque l'on associe plusieurs opérateurs, il faut que l'interprêteur PHP sache dans quel ordre les traiter. La priorité des opérateurs spécifie l'ordre dans lequel les valeurs doivent être analysées. Par exemple, dans l'expression 1 + 5 * 3, le résultat est 16 et non 18, car la multiplication ("*") a une priorité supérieure par rapport à l'addition ("+"). Le tableau suivant dresse une liste de la priorité des différents opérateurs dans un ordre croissant de priorité. Précédence des opérateurs Associativité Opérateurs Gauche , Gauche or Gauche xor Gauche and Droite print Droite = += -= *= /= .= %= &= |= ^= <<= >>= Gauche ? : Gauche || Gauche && Gauche | Gauche ^ Gauche & Non-associatif == != === !==
  • 22. Initiation au langage PHP Page 22 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Non-associatif < <= > >= Gauche << >> Gauche + - . gauche * / % droite ! ~ ++ -- (int) (float) (string) (array) (object) @ droite [ Non-associatif new Bien que ! soit prioritaire sur =, PHP va tout de même exécuter des expressions comme : if (!$a = ntic()). Dans cette situation, le résultat de ntic() sera placé dans la variable $a.
  • 23. Initiation au langage PHP Page 23 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 VI. STRUCTURES CONDITIONNELLES On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1 et false à 0). Ces structures conditionnelles peuvent être associées à des structures qui se répètent suivant la réalisation de la condition, parle alors de structures de boucle 6.1. La notion de bloc Une expression suivie d'un point-virgule est appelée instruction. Par exemple a++; est une instruction. Lorsque l'on veut regrouper plusieurs instructions, on peut créer ce que l'on appelle un bloc, c'est- à-dire un ensemble d'instructions (suivies respectivement par des point-virgules) et comprises entre les accolades { et }. Les instructions if, while et for peuvent par exemple être suivies d'un bloc d'instructions à exécuter... 6.2. Les primitives de choix 6.2.1. L'instruction if L'instruction if est la structure de test la plus basique, on la retrouve dans tous les langages (avec une syntaxe différente...). Elle permet d'exécuter une série d'instruction si une condition est réalisée. La syntaxe de cette expression est la suivante: if (condition réalisée) { liste d'instructions } 6.2.2. L'instruction if ... else L'instruction if dans sa forme basique ne permet de tester qu'une condition, or la plupart du temps on aimerait pouvoir choisir les instructions à exécuter en cas de non réalisation de la condition... L'expression if ... else permet d'exécuter une autre série d'instruction en cas de non-réalisation de la condition. La syntaxe de cette expression est la suivante: if (condition réalisée) { liste d'instructions } La condition doit être entre des parenthèses Il est possible de définir plusieurs conditions à remplir avec les opérateurs ET et OU (&& et ||) par exemple l'instruction suivante teste si les deux conditions sont vraies : if ((condition1)&&(condition2)) L'instruction ci-dessous exécutera les instructions si l'une ou l'autre des deux conditions est vraie : if ((condition1)||(condition2)) S’il n'y a qu'une instruction, les accolades ne sont pas nécessaires...
  • 24. Initiation au langage PHP Page 24 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 else { autre série d'instructions } 6.3. L'instruction if ... elseif ... else L'instruction if ... else ne permet de tester qu'une condition, or il est parfois nécessaire de tester plusieurs conditions de façon exclusive, c'est-à-dire que sur toutes les conditions une seule sera réalisée ... L'expression if ... elseif ... else permet d'enchaîner une série d'instructions et évite d'avoir à imbriquer des instructions if. La syntaxe de cette expression est la suivante: if (condition réalisée) { liste d'instructions } elseif (autre condition réalisée) { autre série d'instructions } ... else (dernière condition réalisée) { série d'instructions } Exemple <?php if ($a > $b) { print "a est plus grand que b"; } elseif ($a == $b) { print "a est égal à b"; } else { print "a est plus petit que b"; } ?> Une façon plus courte de faire un test (opérateur ternaire) Il est possible de faire un test avec une structure beaucoup moins lourde grâce à la structure suivante, appelée opérateur ternaire: (condition) ? instruction si vrai : instruction si faux La condition doit être entre des parenthèses Lorsque la condition est vraie, l'instruction de gauche est exécutée Lorsque la condition est fausse, l'instruction de droite est exécutée 6.3.1. L'instruction switch
  • 25. Initiation au langage PHP Page 25 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 L'instruction switch permet de faire plusieurs tests de valeurs sur le contenu d'une même variable. Ce branchement conditionnel simplifie beaucoup le test de plusieurs valeurs d'une variable, car cette opération aurait été compliquée (mais possible) avec des if imbriqués. Sa syntaxe est la suivante: switch (Variable) { case Valeur1: Liste d'instructions break; case Valeur2: Liste d'instructions break; case Valeurs...: Liste d'instructions break; default: Liste d'instructions break; } Les parenthèses qui suivent le mot clé switch indiquent une expression dont la valeur est testée successivement par chacun des case. Lorsque l'expression testée est égale à une des valeurs suivant un case, la liste d'instructions qui suit celui-ci est exécutée. Le mot clé break indique la sortie de la structure conditionnelle. Le mot clé default précède la liste d'instructions qui sera exécutée si l'expression n'est jamais égale à une des valeurs. Exemple 1 Cet exemple donne deux manières différentes d'écrire la même chose, l'une en utilisant une séries de if, et l'autre en utilisant l'instruction switch: <?php if ($i == 0) { print "i égale 0"; } if ($i == 1) { print "i égale 1"; } if ($i == 2) { print "i égale 2"; } switch ($i) { case 0: print "i égale 0"; break; case 1: print "i égale 1"; break; case 2: print "i égale 2"; break; } ?>
  • 26. Initiation au langage PHP Page 26 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Exemple 2 <?php switch ($i) { case 0: print "i égale 0"; break; case 1: print "i égale 1"; break; case 2: print "i égale 2"; break; default: print "i n'est ni égal à 2, ni à 1, ni à 0."; } ?> N'oubliez pas d'insérer des instructions break après chaque test, ce genre d'oubli est difficile à détecter car aucune erreur n'est signalée... 6.4. Les boucles Les boucles sont des structures qui permettent d'exécuter plusieurs fois la même série d'instructions jusqu'à ce qu'une condition ne soit plus réalisée... On appelle parfois ces structures instructions répétitives ou bien itérations. La façon la plus commune de faire une boucle, est de créer un compteur (une variable qui s'incrémente, c'est-à-dire qui augmente de 1 à chaque tour de boucle) et de faire arrêter la boucle lorsque le compteur dépasse une certaine valeur. 6.4.1. La boucle for L'instruction for permet d'exécuter plusieurs fois la même série d'instructions: c'est une boucle! Dans sa syntaxe, il suffit de préciser le nom de la variable qui sert de compteur (et éventuellement sa valeur de départ, la condition sur la variable pour laquelle la boucle s'arrête (basiquement une condition qui teste si la valeur du compteur dépasse une limite) et enfin une instruction qui incrémente (ou décrémente) le compteur. La syntaxe de cette expression est la suivante: for (compteur; condition; modification du compteur) { liste d'instructions } Exemple: for ($i=1; $i<6; $i++) { echo "$i<br>"; /* Cette boucle affiche 5 fois la valeur de $i, c'est-à-dire 1
  • 27. Initiation au langage PHP Page 27 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 2 3 4 5 */ } Elle commence à $i=1, vérifie que $i est bien inférieur à 6, etc... jusqu'à atteindre la valeur $i=6, pour laquelle la condition ne sera plus réalisée, la boucle s'interrompra et le programme continuera son cours. D'autre part, le langage PHP autorise la déclaration de la variable de boucle dans l'instruction for elle-même! for( [initialisations] ; [test sortie] ; [faire a chaque fois] ) il faudra toujours vérifier que la boucle a bien une condition de sortie (i.e le compteur s'incrémente correctement) une instruction echo dans votre boucle est un bon moyen pour vérifier la valeur du compteur pas à pas en l'affichant! il faut bien compter le nombre de fois que l'on veut faire exécuter la boucle: for($i=0;$i<10;$i++) exécute 10 fois la boucle ($i de 0 à 9) for($i=0;$i<=10;$i++) exécute 11 fois la boucle ($i de 0 à 10) for($i=1;$i<10;$i++) exécute 9 fois la boucle ($i de 1 à 9) for($i=1;$i<=10;$i++) exécute 10 fois la boucle ($i de 1 à 10) 6.4.2. L'instruction while L'instruction while représente un autre moyen d'exécuter plusieurs fois la même série d'instructions. La syntaxe de cette expression est la suivante: while (condition réalisée) { liste d'instructions } Exemple $i = 1; while ($i <= 10) { print $i++; /* La valeur affiche est $i avant l'incrémentation (post-incrémentation) */ } Cette instruction exécute la liste d'instructions tant que (while est un mot anglais qui signifie tant que) la condition est réalisée. La condition de sortie pouvant être n'importe quelle structure conditionnelle, les risques de boucle infinie (boucle dont la condition est toujours vraie) sont grands, c'est-à-dire qu'elle risque de provoquer un plantage du navigateur! 6.4.3. Saut inconditionnel Il peut être nécessaire de faire sauter à la boucle une ou plusieurs valeurs sans pour autant mettre fin à celle-ci.
  • 28. Initiation au langage PHP Page 28 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 La syntaxe de cette expression est "continue;" (cette instruction se place dans une boucle!), on l'associe généralement à une structure conditionnelle, sinon les lignes situées entre cette instruction et la fin de la boucle seraient obsolètes. Exemple: Imaginons que l'on veuille imprimer pour $x allant de 1 à 10 la valeur de 1/($x-7) ... il est évident que pour $x=7 il y aura une erreur. Heureusement, grâce à l'instruction continue il est possible de traiter cette valeur à part puis de continuer la boucle! $x=1; while ($x<=10) { if ($x == 7) { echo "Division par zéro!"; continue; } $a = 1/($x-7); echo "$a<br>"; $x++; } Il y avait une erreur dans ce programme... peut-être ne l'avez-vous pas vue: Lorsque $x est égal à 7, le compteur ne s'incrémente plus, il reste constamment à la valeur 7, il aurait fallu écrire: $x=1; while ($x<=10) { if ($x == 7) { echo "division par 0 <br>"; $x++; continue; } $a = 1/($x-7); echo "$a<br>"; $x++; } 6.4.4. Arrêt inconditionnel A l'inverse, il peut être voulu d'arrêter prématurément la boucle, pour une autre condition que celle précisé dans l'en-tète de la boucle. L'instruction break permet d'arrêter une boucle (for ou bien while). Il s'agit, tout comme continue, de l'associer à une structure conditionnelle, sans laquelle la boucle ne ferait jamais plus d'un tour! Dans l'exemple de tout à l'heure, par exemple si l'on ne savait pas à quel moment le dénominateur ($x-7) s'annule (bon...OK...pour des équations plus compliquées par exemple) il serait possible de faire arrêter la boucle en cas d'annulation du dénominateur, pour éviter une division par zéro! for ($x=1; $x<=10; $x++) { $a = $x-7; if ($a == 0) { echo "division par 0"; break;
  • 29. Initiation au langage PHP Page 29 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 } echo "1/$a<br>"; } 6.4.5. Arrêt d'exécution du script PHP autorise l'utilisation de la commande exit ou la fonction exit(), qui permet d'interrompre totalement l'interprétation du script, ce qui signifie que le serveur n'envoie plus d'informations au navigateur: le script est figé dans son état actuel. Cette instruction est particulièrement utile lors de l'apparition d'erreur!
  • 30. Initiation au langage PHP Page 30 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 VII.LA NOTION DE FONCTION On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du programme une série d'instructions, cela permet une simplicité du code et donc une taille de programme minimale. D'autre part, une fonction peut faire appel à elle-même, on parle alors de fonction récursive (il ne faut pas oublier de mettre une condition de sortie au risque sinon de ne pas pouvoir arrêter le programme...). Il n'y a pas de distinction fonctions / procédures en PHP 7.1. La déclaration d'une fonction PHP recèle de nombreuses fonctions intégrées permettant d'effectuer des actions courantes. Toutefois, il est possible de définir des fonctions, dites fonctions utilisateurs afin de simplifier l'exécution de séries d'instructions répétitives. Contrairement à de nombreux autres langages, PHP nécessite que l'on définisse une fonction avant que celle-ci puisse être utilisée, car pour l'appeler dans le corps du programme il faut que l'interpréteur la connaisse, c'est-à-dire qu'il connaisse son nom, ses arguments et les instructions qu'elle contient. La définition d'une fonction s'appelle "déclaration" et peut se faire n'importe où dans le code. La déclaration d'une fonction se fait grâce au mot-clé function, selon la syntaxe suivante: function Nom_De_La_Fonction(argument1, argument2, ...) { liste d'instructions } Le nom de la fonction suit les mêmes règles que les noms de variables: Le nom doit commencer par une lettre un nom de fonction peut comporter des lettres, des chiffres et les caractères _ et & (les espaces ne sont pas autorisés!) Le nom de la fonction, comme celui des variables est sensible à la casse (différenciation entre les minuscules et majuscules) Les arguments sont facultatifs, mais s'il n'y a pas d'arguments, les parenthèses doivent rester présentes. Il ne faut pas oublier de refermer les accolades Le nombre d'accolades ouvertes (fonction, boucles et autres structures) doit être égal au nombre d'accolades fermées! La même chose s'applique pour les parenthèses, les crochets ou les guillemets! Une fois cette étape franchie, votre fonction ne s'exécutera pas tant que l'on ne fait pas appel à elle quelque part dans la page! 7.2. Appel de fonction Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom (une fois de plus en respectant la casse) suivie d'une parenthèse ouverte (éventuellement des arguments) puis d'une parenthèse fermée: Nom_De_La_Fonction(); Le point virgule signifie la fin d'une instruction et permet à l'interpréteur de distinguer les différents blocs d'instructions
  • 31. Initiation au langage PHP Page 31 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Si jamais vous avez défini des arguments dans la déclaration de la fonction, il faudra veiller à les inclure lors de l'appel de la fonction (le même nombre d'arguments séparés par des virgules!) Nom_De_La_Fonction(argument1, argument2); 7.2.1. Renvoi d'une valeur par une fonction La fonction peut renvoyer une valeur (et donc se terminer) grâce au mot-clé return. Lorsque l'instruction return est rencontrée, la fonction évalue la valeur qui la suit, puis la renvoie au programme appelant (programme à partir duquel la fonction a été appelée). Une fonction peut contenir plusieurs instructions return, ce sera toutefois la première instruction return rencontrée qui provoquera la fin de la fonction et le renvoi de la valeur qui la suit. La syntaxe de l'instruction return est simple: return valeur_ou_variable; 7.2.2. Les arguments d'une fonction Il est possible de passer des arguments à une fonction, c'est-à-dire lui fournir une valeur ou le nom d'une variable afin que la fonction puisse effectuer des opérations sur ces arguments ou bien grâce à ces arguments. Le passage d'arguments à une fonction se fait au moyen d'une liste d'arguments (séparés par des virgules) entre parenthèses suivant immédiatement le nom de la fonction. Les arguments peuvent être de simples variables, mais aussi des tableaux ou des objets. A noter qu'il est possible de donner une valeur par défaut à ces arguments en faisant suivre le nom de la variable par le signe "=" puis la valeur que l'on affecte par défaut à la variable. Lorsque vous voulez utiliser un argument dans le corps de la fonction en tant que variable, celui-ci doit être précédé par le signe $. <? function dire_texte($qui, $texte = 'Bonjour') { if(empty($qui)){ // $qui est vide, on retourne faux return false; } Else { echo "$texte $qui"; // on affiche le texte return true; // fonction exécutée avec succès } } ?> Ainsi cette fonction peut être appelée de deux façons différentes: <? // Passage des deux paramètres dire_texte("cher phpeur", "Bienvenue"); // affiche "Bienvenue cher phpeur" // Utilisation de la valeur par défaut du deuxième paramètre dire_texte("cher phpeur"); // affiche "Bonjour cher phpeur" ?>
  • 32. Initiation au langage PHP Page 32 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 7.3. Portée (visibilité) des variables Voyons maintenant un caractère propre à beaucoup de langages de programmation fonctionnels: la portée des variables. En PHP, jusqu'à présent, lorsque vous déclariez une variable dans votre script, vous aviez l'habitude d'accéder à cette variable dans tout le reste de votre page. En effet, d'après le code suivant : <?php $toto = 5; ?> $toto est une variable qui sera accessible par votre script PHP une fois sa déclaration faite, c'est-à- dire juste après l'instruction $toto = 5. Vous savez également, qu'une variable déclarée dans le corps d'une fonction n'est accessible que dans le corps de cette même fonction. Exemple : <?php $toto = 5; function ma_fonction () { echo $toto; } ma_fonction(); ?> Dans ce cas, l'exécution de ce code PHP n'affichera rien vu que $toto (contenu dans le code de la fonction ma_fonction()) n'a strictement aucun rapport avec la variable $toto contenu dans le script courant. On appellera la variable $toto (celle contenue dans le code de la fonction) comme étant une variable locale à la fonction ma_fonction() (elle n'est pas globale au script). 7.3.1. Le mot clé global Sachez qu'il est possible d'utiliser dans le code même de vos fonctions des variables que vous avez déclarées dans votre script courant à l'aide du mot clé global. Reprenons notre exemple précédent : <?php $toto = 5; function ma_fonction () { global $toto; echo $toto; } ma_fonction(); // Cet exemple affichera :5 ?> En effet, dans ce script, nous déclarons la variable (qui était jusque là locale) $toto comme étant une variable globale du script. PHP sait alors qu'il doit récupérer la valeur de cette variable dans le script courant.
  • 33. Initiation au langage PHP Page 33 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Il n'y a aucune limite au nombre de variables globales qui peuvent être manipulées par une fonction. Vous pouvez également effectuer la même opération en utilisant le tableau associatif $_GLOBALS. Le code suivant donnera le même résultat que le code précédent : <?php $toto = 5; function ma_fonction () { echo $_GLOBALS["toto"]; } ma_fonction(); ?> 7.3.2. Le mot clé static Les amateurs de programmation par objets doivent bien connaître ce terme de static . Une variable dite static est une variable locale à une fonction mais qui a la particularité de se souvenir de sa valeur. Prenons comme exemple le code suivant : <?php function ma_fonction () { $toto = 1; echo $toto; $toto++; } for($i=1;$i<=50;$i++) { ma_fonction(); } ?> Si je lance cette fonction 50 fois, vous allez tous penser que cette fonction affichera 50 fois la valeur 1, et vous aurez raison : Dans ce cas, l'incrémentation ne sert à rien puisque lorsque l'on a fini d'exécuter cette fonction PHP "perd connaissance" de la valeur de la variable $toto. En revanche, si on déclare la variable $toto comme étant une variable statique (grâce au mot clé static), le comportement de cette fonction sera totalement différent. En effet, vu que $toto est statique, PHP se souviendra de sa valeur lors de la dernière exécution de la fonction. Avec le code suivant : <?php function ma_fonction () { static $toto = 1; echo $toto; $toto++; } for($i=1;$i<=50;$i++) {
  • 34. Initiation au langage PHP Page 34 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 ma_fonction(); } ?> Si je lance 50 fois ma fonction, et bien nous verrons sur l'écran, la suite des nombres entre 1 et 50. Explication : à chaque appel, PHP se souvient de la précédente valeur de la variable $toto (parce qu'elle est static) et notre fonction incrémente alors cette valeur pour ensuite l'afficher. 7.3.3. Le passage par référence Dans nos exemples précédents, vous savez que grâce au mot clé global, les fonctions pouvaient récupérer les valeurs des variables globales. Sachez qu'il est également possible de modifier la valeur d'une variable d'un script (une variable globale) grâce à une fonction en utilisant un passage de variable par référence. Le passage par référence se caractérise par l'utilisation d'un & avant le nom de votre variable dans les arguments de votre fonction. Exemple 1: <?php $toto = 5; function ma_fonction ($var) { $var++; } ma_fonction(&$toto); echo $toto; // Ce script affichera : 6 ?> Pour les personnes qui ont fait du C, le passage par référence s'assimile à la notion de pointeur. En passant une variable par référence à une fonction, nous ne passons pas en fait la variable en elle-même (la preuve : notre fonction utilise une variable $var alors qu'elle modifie tout de même la valeur de la variable $toto du script courant) mais une référence vers la zone mémoire où est stockée la valeur de notre variable $toto. Notre fonction modifie alors directement cette zone mémoire en lui donnant une nouvelle valeur, ce qui explique que dans le script courant, et bien la valeur de $toto a changé. D'une manière générale il est préférable de donner des noms différents aux variables locales et globales pour des raisons de lisibilité et de compréhension du code... Exemple 2: <? function dire_texte($qui, &$texte) { $texte = "Bienvenue $qui"; } $chaine = "Bonjour "; dire_texte("cher phpeur",$chaine); echo $chaine; // affiche "Bienvenue cher phpeur" ?>
  • 35. Initiation au langage PHP Page 35 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 7.4. Retourner plusieurs variables Lorsque vous souhaitez qu'une fonction retourne plusieurs valeurs, le plus simple est d'utiliser un tableau. <? function nom_fonction() { ..... return array( $variable1, $variable2, $variable3 ); // on retourne les valeurs voulues dans un tableau } $retour = nom_fonction(); echo "$retour[0] - $retour[1] - $retour[2]"; ?> <?PHP function calcul($a, $b) { $add = $a+$b; $sous = $a-$b; $multi = $a*$b; $div = $a/$b; return array($add, $sous, $multi, $div); } list($add, $sous, $multi, $div) = calcul(30, 6); // affiche le resultat echo $add . '<br />'; echo $sous . '<br />'; echo $multi . '<br />'; echo $div . '<br> /'; ?> 7.5. La récursivité Les fonctions récursives sont des fonctions qui s'appellent elles-mêmes. Ce type de fonction se révéle indispensable pour parcourir une arborescence par exemple. Voici un exemple simple. <? function fonction_recursive($n=0) { $n++; echo "$n <br>"; if($n < 10){ // si n est inférieur à 10 on continue fonction_recursive($n); } } fonction_recursive(); // affiche les nb de 1 à 10 ?>
  • 36. Initiation au langage PHP Page 36 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 7.6. Les fonctions standards d’affichage PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces fonctions ont la particularité de pouvoir insérer dans les données envoyées des valeurs variables, pouvant être fonction d'une valeur récupérée par exemple, c'est ce qui rend possible la création de pages dynamiques. Les 3 fonctions sont les suivantes: echo , print et printf 7.6.1. La fonction echo La fonction echo permet d'envoyer au navigateur la chaîne de caractères (délimitée par des guillemets ou des cotes simples) qui la suit. La syntaxe de cette fonction est la suivante: echo Expression; L'expression peut être une chaîne de caractères ou une expression que l'interpréteur évalue echo "Chaine de caracteres"; echo (1+2)*87; Ainsi, étant donné que la chaîne de caractères est délimitée par des guillemets, l'insertion de guillemets doubles dans la chaîne provoquerait une erreur. C'est la raison pour laquelle les guillemets doubles, ainsi que tous les caractères spéciaux, doivent être précédés d'un antislash. Voici un récapitulatif des caractères spéciaux nécessitant l'ajout d'un antislash: Caractère Description " Guillemet $ caractère $ barre oblique inverse (antislash) r retour chariot n retour à la ligne t Tabulation Le caractère $ a un rôle particulier dans la mesure où l'interpréteur le comprend comme une variable, ce qui signifie que lorsque le caractère $ est rencontré dans la chaîne qui suit la fonction echo, l'interpréteur récupère le nom de la variable qui suit le caractère $ et le remplace par sa valeur. Prenons un autre exemple où nous allons afficher la date et l'heure du jour. On a le code suivant : <? $date_du_jour = date ("d-m-Y"); $heure_courante = date ("H:i"); echo 'Nous sommes le : '; echo $date_du_jour; echo ' Et il est : '; echo $heure_courante; //affiche: Nous sommes le 25-10-2005 Et il est 11:59 ?> Dans ce cas, nous venons d'utiliser la fonction date() qui nous permet d'afficher la date du jour ainsi que l'heure courante (en fait, la date du serveur). Dans un premier temps, nous avons affecté à la variable $date_du_jour le contenu que retourne la fonction date() munie des
  • 37. Initiation au langage PHP Page 37 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 paramètres "d-m-Y", soit 27-09-2005, puis nous avons affecté à la variable $heure_courante le contenu que retourne la fonction date() munie des paramètres "H:i", soit 11:59. Voici la liste des paramètres possibles pour la fonction date() : - a : "am" (matin) ou "pm" (après-midi) - A : "AM" (matin) ou "PM" (après-midi) - d : Jour du mois, sur deux chiffres (éventuellement avec un zéros) : "01" à "31" - D : Jour de la semaine, en trois lettres (et en anglais) : par exemple "Fri" (pour Vendredi) - F : Mois, textuel, version longue; en anglais, i.e. "January" (pour Janvier) - h : Heure, au format 12h, "01" à "12" - H : heure, au format 24h, "00" à "23" - g : Heure, au format 12h sans les zéros initiaux, "1" à "12" - G : Heure, au format 24h sans les zéros initiaux, "0" à "23" - i : Minutes; "00" à "59" - j : Jour du mois sans les zéros initiaux: "1" à "31" - l : Jour de la semaine, textuel, version longue; en anglais, i.e. "Friday" (pour Vendredi) - L : Booléen pour savoir si l'année est bissextile ("1") ou pas ("0") - m : Mois; i.e. "01" à "12" - n : Mois sans les zéros initiaux; i.e. "1" à "12" - M : Mois, en trois lettres (et en anglais) : par exemple "Jan" (pour Janvier) - s : Secondes; i.e. "00" à "59" - S : Suffixe ordinal d'un nom - w : Jour de la semaine au format numérique 0 (pour dimanche) à 6 (pour samedi) 7.6.2. La fonction print La fonction print est similaire à la fonction echo . La syntaxe de la fonction print est la suivante: print(expression); L'expression peut, comme pour la fonction echo être une chaîne de caractères ou une expression que l'interpréteur évalue: print("Chaine de caracteres"); print ((1+2)*87); // affiche le resultat de (1+2)x87 les parenthèses ne sont pas obligatoires mais question de lisibilité 7.6.3. La fonction printf La fonction printf() (empruntée au langage C) est rarement utilisée car sa syntaxe est plus lourde. Toutefois, contrairement aux deux fonctions précédentes, elle permet un formatage des données, cela signifie que l'on peut choisir le format dans lequel une variable sera affichée à l'écran. La syntaxe de printf() est la suivante: printf (chaîne formatée); Une chaîne formatée est une chaîne contenant des codes spéciaux permettant de repérer l'emplacement d'une valeur à insérer et son format, c'est-à-dire sa représentation. A chaque code rencontré doit être associé une valeur ou une variable, que l'on retrouve en paramètre à la fin de
  • 38. Initiation au langage PHP Page 38 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 la fonction printf. Les valeurs à insérer dans la chaîne formatées sont séparées par des virgules et doivent apparaître dans l'ordre où les codes apparaissent dans la chaîne formatée Les codes de formatage des types de données sont les suivants: Code Type de format %b Entier en notation binaire %c Caractère codé par son code ASCII %d Entier en notation décimale %e Type double (nombre à virgule) au format scientifique (1.76e+3) %f Type double (nombre à virgule) %o Entier en notation octale %s Chaîne de caractères %x Entier en notation hexadécimale (lettres en minuscules) %X Entier en notation hexadécimale (lettres en majuscules) %% Caractère % Imaginons que l'on définisse une variable en virgule flottante, afin d'obtenir une précision de calcul plus grande qu'avec un entier, mais qu'on désire l'afficher en tant qu'entier. Dans ce cas la fonction printf prend toute son importance: $Pi = 3.1415927; $R = 24.546; $Perimetre = 2 * $Pi * $R; printf ("Le périmètre du cercle est %d",$Perimetre);
  • 39. Initiation au langage PHP Page 39 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 VIII.FONCTION MAIL PHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est naturel que PHP permette d'envoyer des mails. 8.1. La fonction mail() En PHP il existe une fonction très simple qui permet d'envoyer un email. Voilà sa syntaxe Entier mail(chaîne email_destinataire, chaîne Sujet, chaîne corps_du_message, chaîne options); Le dernier champ est facultatif, on en parlera juste après. Dans un premier temps nous allons envoyer un email de base. Voilà le nouveau code du fichier traitant les données envoyées par le formulaire précédant : <? mail( "webmaster@ntic.ci", "Commentaire sur le site ", "$nom a laissé un commentaire à propos de www.ntic.ci: nn$texte" ); ?> Les n à l'intérieur du corps de m'email permettent d'aller à la ligne Chez certains hébergeurs (dont Free) la fonction mail est désactivée car elle permet de simuler un envoi de mail à partir de n'importe quelle adresse. Ainsi elle est parfois remplacée par la fonction email() 8.2. Les options / en-têtes Le champ options de la fonction mail permet d'ajouter une en-tête au message que l'on envoie. On peut par exemple y mettre la date, le logiciel utilisé pour envoyer l'email ou encore l'adresse de retour... Voilà un exemple d'en-tête à utiliser lors d'un envoi de mail : $from_email = "contact@ntic.ci"; $entetedate = date("D, j M Y H:i:s -0600"); // Offset horaire $entetemail = "From: $from_email n"; // Adresse expéditeur $entetemail .= "Cc: n"; $entetemail .= "Bcc: n"; // Copies cachées $entetemail .= "Reply-To: $from_email n"; // Adresse de retour $entetemail .= "X-Mailer: PHP/" . phpversion() . "n" ; $entetemail .= "Date: $entetedate"; La commande précédente équivaut donc à : mail( "webmaster@ntic.ci", "Commentaire sur le site", "$nom a laissé un commentaire à propos de www.ntic.ci: nn$texte",
  • 40. Initiation au langage PHP Page 40 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 $entetemail ); 8.3. La fonction email() La fonction email() remplace parfois la fonction mail() chez certains hébergeurs (dont Free) car elle permet uniquement d'envoyer des mails à partir de votre adresse email. Elle s'utilise à peu près de façon similaire à la fonction mail() mais sa syntaxe est quelque peu différente: email(chaîne compte,chaîne destinataire,chaîne titre,chaîne message[,options]);
  • 41. Initiation au langage PHP Page 41 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 IX.NOTION DE VARIABLES D'ENVIRONNEMENT Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script PHP est: Le serveur Le client Ces variables sont créées par le serveur à chaque fois que le script PHP est appelé, le serveur les lui fournit en paramètres cachés lors de l'exécution de l'interpréteur. Elles permettent notamment d'avoir des informations sur le type de serveur, son administrateur, la date à laquelle le script a été appelé, l'adresse IP et le type de navigateur du client,... 9.1. Les variables d'environnement On peut donc classer les variables d'environnement en deux catégories: Les variables d'environnement dépendant du client Les variables d'environnement dépendant du serveur 9.1.1. Les variables d'environnement dépendant du client Variable d'environnement Description $AUTH_TYPE Il s'agit de la méthode d'authentification qui a été utilisée par le client pour accéder au script PHP $COMSPEC Location de l'interpréteur de commandes sur la machine (Sous Windows) $CONTENT_TYPE Type de données contenu présent dans le corps de la requête. Il s'agit du type MIME des données $DOCUMENT_ROOT Racine des documents sur le serveur $DOCUMENT_URI Adresse du script PHP en relatif (à partir de la racine du serveur) $HTTP_ACCEPT Types MIME reconnus par le serveur (séparés par des virgules) $HTTP_ACCEPT_ENCODING Types d'encodage que le serveur peut réaliser (gzip,deflate) $HTTP_ACCEPT_LANGUAGE Langue utilisée par le serveur (par défaut en-us) $HTTP_CONNECTION Type de connexion ouverte entre le client et le serveur (par exemple Keep-Alive) $HTTP_HOST Nom d'hôte de la machine du client (associée à l'adresse IP) $HTTP_REFERER URL de la page qui a appelé le script PHP $HTTP_USER_AGENT Cette variable permet d'avoir des informations sur le type de navigateur utilisé par le client, ainsi que son système d'exploitation. Voici quelques exemples de User-Agents: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT; TUCOWS Network) Mozilla/4.7 [en] (X11; I; Linux 2.2.14-15mdk i686) $LAST_MODIFIED Date et heure de dernière modification du fichier $PATH Il s'agit du chemin d'accès aux différents répertoires sur le serveur $PATH_INFO Il s'agit du chemin d'accès au script PHP en relatif (de la racine du serveur jusqu'au script PHP) $PHP_SELF Nom du script PHP $REDIRECT_STATUS Il s'agit de l'état de la redirection (echec ou succès) $REDIRECT_URL Il s'agit de l'URL vers laquelle le navigateur du client a été redirigé
  • 42. Initiation au langage PHP Page 42 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 $QUERY_STRING Il s'agit de la partie de l'URL (ayant servi à accéder au script PHP) située après le point d'interrogation. C'est de cette manière que sont transmises les données d'un formulaire dans le cas de la méthode GET $REMOTE_ADDR Cette variable contient l'adresse IP du client appelant le script CGI $REMOTE_PORT Cette variable permet de savoir le port sur lequel la requête HTTP a été envoyée au serveur $SCRIPT_FILENAME Chemin d'accès complet au script PHP Sous windows, il sera de la forme: c:/php/php.exe $SCRIPT_NAME Chemin d'accès relatif (par rapport au chemin d'accès à la racine web ($DOCUMENT_ROOT)) au script PHP 9.1.2. Les variables d'environnement dépendant du serveur Variable d'environnement Description $DATE_GMT Date actuelle au format GMT $DATE_LOCAL Date actuelle au format local $DOCUMENT_ROOT Racine des documents Web sur le serveur $GATEWAY_INTERFACE Version des spécifications CGI utilisées par le serveur $HTTP_HOST Nom de domaine du serveur $SERVER_ADDR Adresse IP du serveur $SERVER_ADMIN Adresse de l'administrateur du serveur $SERVER_NAME Nom donné au serveur en local $SERVER_PORT Numéro de port associé au protocole HTTP sur le serveur $SERVER_PROTOCOL Nom et version du protocole utilisé pour envoyer la requête au script PHP $SERVER_SOFTWARE Type (logiciel) du serveur web Pour un serveur Apache sous Unix: Apache/1.3.2 (Unix) PHP/3.0.5 Pour un serveur Apache sous Windows: Apache/1.3.2 (Win32) PHP/3.0.5 9.2. Affichage des variables d'environnement Il est possible de créer un script permettant de visualiser l'ensemble des variables d'environnement. La première façon consiste à utiliser la fonction phpinfo() qui affiche toute seule un tableau récapitulatif des paramètres du serveur et de l'intepréteur PHP, ainsi qu'un tableau des variables d'environnement <? phpinfo(); ?> PHP fournit la fonction getenv() permettant de retourner la valeur de la variable d'environnement passée en paramètre: <? echo getenv("HTTP_USER_AGENT"); ?>
  • 43. Initiation au langage PHP Page 43 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 Enfin il est possible de définir des variables d'environnement : <? echo putenv("MA_VARIABLE=mavaleur"); ?>
  • 44. Initiation au langage PHP Page 44 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 X.LA GESTION DES FICHIERS AVEC PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier est repérée par une variable, indiquant l'état du fichier et que l'on peut passer en paramètre aux fonctions spécialisées pour le manipuler. 10.1. La fonction fopen() La fonction de base est la fonction fopen(). C'est elle qui permet d'ouvrir un fichier, que ce soit pour le lire, le créer, ou y écrire. Voilà sa syntaxe : entier fopen(chaine nomdufichier, chaine mode); Le mode indique le type d'opération qu'il sera possible d'effectuer sur le fichier après ouverture. Il s'agit d'une lettre (en réalité une chaîne de caractères) indiquant l'opération possible: r (comme read) indique une ouverture en lecture seulement w (comme write) indique une ouverture en écriture seulement (la fonction crée le fichier s'il n'existe pas) a (comme append) indique une ouverture en éciture seulement avec ajout du contenu à la fin du fichier (la fonction crée le fichier s'il n'existe pas) Lorsque le mode est suivie du caractère + celui-ci peut être lu et écrit. Enfin, le fait de faire suivre le mode par la lettre b entre crochets indique que le fichier est traité de façon binaire. Voici un tableau récapitulant l'ensemble des modes de fichiers possibles: Mode Description R ouverture en lecture seulement W ouverture en écriture seulement (la fonction crée le fichier s'il n'existe pas) A ouverture en écriture seulement avec ajout du contenu à la fin du fichier (la fonction crée le fichier s'il n'existe pas) R+ ouverture en lecture et écriture W+ ouverture en lecture et écriture (la fonction crée le fichier s'il n'existe pas) A+ ouverture en lecture et écriture avec ajout du contenu à la fin du fichier (la fonction crée le fichier s'il n'existe pas) Voici des exemples d'utilisations possibles de cette fonction: $fp = fopen("../fichier.txt","r"); //lecture $fp = fopen("http://www.cup.ci/fichier.txt","w"); //écriture depuis début du fichier $fp = fopen("http://www.cup.ci/fichier.txt","a"); //écriture depuis fin du fichier De plus, la fonction fopen permet d'ouvrir des fichiers présents sur le web grâce à leur URL. Voici un script permettant de récupérer le contenu d'une page d'un site site web: <? $fp = fopen("http://www.cup.ci/fichier.txt","r"); //lecture du fichier while (!feof($fp)) { //on parcourt toutes les lignes
  • 45. Initiation au langage PHP Page 45 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 $page .= fgets($fp, 4096); // lecture du contenu de la ligne } ?> Il est généralement utile de tester si l'ouverture de fichier s'est bien déroulée ainsi que d'éventuellement stopper le script PHP si cela n'est pas le cas: <? if (!$fp = fopen("http://www.cup.ci/fichier.txt","r")) { echo "Echec de l'ouverture du fichier"; exit; } else { // votre code; } ?> Un fichier ouvert avec la fonction fopen() doit être fermé, à la fin de son utilisation, par la fonction fclose() en lui passant en paramètre l'entier retourné par la fonction fopen() 10.2. Lecture et écriture Une fois que le fichier a été ouvert avec le mode désiré, il est possible de lire son contenu et d'y écrire des informations grâce aux fonctions: fputs() (aussi parfois appelée fwrite(), les deux noms sont équivalents, on parle d'alias) permettant d'écrire une chaîne de caractères dans le fichier entier fputs(entier Etat_du_fichier, chaine Sortie); La fonction fputs() renvoie le nombre de caractères effectivement écrits dans le fichier fgets() permettant de récupérer une ligne du fichier chaîne fgets(entier Etat_du_fichier, entier Longueur); Le paramètre Longueur désigne le nombre de caractères maximum que la fonction est sensée récupérer sur la ligne. La fonction fgets() renvoie 0 en cas d'échec, la chaîne dans le cas contraire Etant donné que la fonction fgets() récupére à chaque appel une nouvelle ligne du fichier, il est essentiel, pour récupérer l'intégralité du contenu d'un fichier de l'insérer dans une boucle while. Ainsi, on utilise la fonction feof(), fonction testant si la fin du fichier n'a pas été atteinte, en tant que test de la boucle while. De cette façon, tant que la fin du fichier n'a pas été atteinte, on lit la ligne suivante du fichier... <? if (!$fp = fopen("fichier.txt","r")) { echo "Echec de l'ouverture du fichier"; exit; } else { while(!feof($fp)) { // On récupère une ligne $Ligne = fgets($fp,255); // On affiche la ligne echo $Ligne; // On stocke l'ensemble des lignes dans une variable
  • 46. Initiation au langage PHP Page 46 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 $Fichier .= $Ligne; } fclose($fp); // On ferme le fichier } ?> Pour stocker des infos dans le fichier, il faut dans un premier temps ouvrir le fichier en écriture en le créant si il n'existe pas. On a donc le choix entre le mode 'w' et le mode 'a'. On préférera le second puisque le pointeur se trouve en fin de fichier (autrement dit on écrit à la suite de ce qui se trouve dans le fichier au lieu d'écraser le contenu existant éventuellement déjà). <? $fp = fopen("fichier.txt","a"); // ouverture du fichier en écriture fputs($fp, "n"); // on va a la ligne fputs($fp, "$nom|$email"); // on écrit le nom et email dans le fichier fclose($fp); ?> Voici un petit script permettant de récupérer le titre d'une page Web (le texte compris entre les balises <TITLE> et </TITLE>). Il utilise les expressions régulières pour localiser le texte. <? $fp = fopen("http://www.ntic.ci/index.html","r"); //lecture du fichier while (!feof($fp)) { //on parcourt toutes les lignes $page .= fgets($fp, 4096); // lecture du contenu de la ligne } $titre = eregi("<title>(.*)</title>",$page,$regs); //on isole le titre echo $regs[1]; fclose($fp); ?> 10.3. Les tests de fichiers PHP fournit de nombreuses fonctions permettant de faire des tests sur les fichiers pour connaître leurs propriétés. Voici la liste des fonctions des test: is_dir() is_dir() permet de savoir si le fichier dont le nom est passé en paramètre correspond à un répertoire booléen is_dir(chaine Nom_du_fichier); La fonction is_dir() renvoie 1 si il s'agit d'un répertoire, 0 dans le cas contraire <? if (!is_dir("install")) { echo "Il ne s'agit pas d'un répertoire "; } else { echo "Il s'agit bien d'un répertoire "; } ?>
  • 47. Initiation au langage PHP Page 47 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 is_executable() Permet de savoir si le fichier dont le nom est passé en paramètre est exécutable booléen is_executable(chaine Nom_du_fichier); La fonction is_executable() renvoie 1 si le fichier est exécutable, 0 dans le cas contraire is_file() Permet de savoir si le fichier dont le nom est passé en paramètre ne correspond ni à un répertoire, ni à un lien symbolique booléen is_file(chaine Nom_du_fichier); La fonction is_file() renvoie 1 si il s'agit d'un fichier, 0 dans le cas contraire is_link() Permet de savoir si le fichier dont le nom est passé en paramètre correpond à un lien symbolique booléen is_link(chaine Nom_du_fichier); La fonction is_link() renvoie 1 si il s'agit d'un lien symbolique, 0 dans le cas contraire 10.4. Quelques fonctions de manipulation de fichiers basename -- Sépare le nom du fichier et le nom du dossier. chgrp -- Change le groupe propriétaire d'un fichier chmod -- Change le mode du fichier chown -- Change le groupe propriétaire du fichier clearstatcache -- Efface le cache de stat() copy -- Copie un fichier delete -- Effacer dirname -- Renvoie le nom du dossier disk_free_space -- Renvoie l'espace disque disponible dans le répertoire. disk_total_space -- Retourne la taille d'un dossier diskfreespace -- Alias de disk_free_space() fclose -- Ferme un fichier feof -- Teste la fin du fichier fflush -- Envoi tout le contenu généré dans un fichier fgetc -- Lit un caractère dans un fichier fgetcsv -- Renvoie la ligne courante et cherche les champs CSV fgets -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier. fgetss -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier et élimine les balises HTML file_exists -- Vérifie si un fichier existe file_get_contents -- Lit tout un fichier dans une chaîne file_put_contents -- Ecrit une chaîne dans un fichier file -- Lit le fichier et renvoie le résultat dans un tableau fileatime -- Renvoie la date à laquelle le fichier a été accédé pour la dernière fois. filectime -- Renvoie l'heure à laquelle l'inode a été accédé pour la dernière fois. filegroup -- Lire le nom du groupe fileinode -- Renvoie le numéro d'inode du fichier filemtime -- Renvoie la date de dernière modification du fichier. fileowner -- Renvoie le nom du propriétaire du fichier fileperms -- Renvoie les permissions affectées au fichier. filesize -- Renvoie la taille du fichier filetype -- Retourne le type de fichier flock -- Verrouille le fichier fnmatch -- Repère un fichier à partir d'un masque
  • 48. Initiation au langage PHP Page 48 sur 72 __________________________________________________________________________ Cours réalisé par Mr Nabeledi Ouattara *** Développeur Web*** Edition 2009 fopen -- Ouverture d'un fichier ou d'une URL fpassthru -- Affiche le reste du fichier fputs -- Ecrit dans un fichier fread -- Lecture du fichier en mode binaire fscanf -- Analyse un fichier en fonction d'un format fseek -- Modifie le pointeur de fichier fstat -- Lit les informations sur un fichier à partir d'un pointeur de fichier ftell -- Renvoie la position du pointeur du fichier ftruncate -- Tronque un fichier fwrite -- Ecriture du fichier en mode binaire glob -- Recherche des chemins qui vérifient un masque is_dir -- Indique si le nom de fichier est un dossier is_executable -- Indique si le fichier est exécutable is_file -- Indique si le fichier est un véritable fichier. is_link -- Indique si le fichier est un lien symbolique. is_readable -- Indique si un fichier est autorisé en lecture is_uploaded_file -- Indique si le fichier a été téléchargé par HTTP POST is_writable -- Indique si un fichier est autorisé en écriture is_writeable -- Indique si un fichier est autorisé en écriture link -- Crée un lien linkinfo -- Renvoie les informations à propos d'un lien lstat -- Retourne les informations à propos d'un fichier ou d'un lien symbolique. mkdir -- Crée un dossier move_uploaded_file -- Déplace un fichier téléchargé parse_ini_file -- Traite un fichier de configuration pathinfo -- Retourne des informations sur un chemin système pclose -- Ferme un processus de pointeur de fichier popen -- Crée un processus de pointeur de fichier readfile -- Affiche un fichier readlink -- Renvoie le nom du fichier vers lequel pointe un lien symbolique realpath -- Retourne le chemin canonique absolu rename -- Renomme un fichier ou un dossier rewind -- Replace le pointeur de fichier au début rmdir -- Efface un dossier set_file_buffer -- Alias de stream_set_write_buffer() stat -- Renvoie les informations à propos d'un fichier symlink -- Crée un lien symbolique tempnam -- Crée un fichier avec un nom unique tmpfile -- Crée un fichier temporaire touch -- Modifie la date de modification et de dernier accès d'un fichier umask -- Change le "umask" courant unlink -- Efface un fichier