0% ont trouvé ce document utile (0 vote)
28 vues121 pages

Cours PHP

Le document présente une introduction à la programmation web avec PHP, en expliquant les concepts fondamentaux du World Wide Web, l'architecture client/serveur, et les choix pour la mise en œuvre d'un serveur web. Il aborde également les langages de programmation web et les différentes architectures client/serveur, en détaillant leurs caractéristiques et avantages. Enfin, il souligne l'importance des langages et des technologies dans le développement d'applications web interactives.

Transféré par

OusmaneFall
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
28 vues121 pages

Cours PHP

Le document présente une introduction à la programmation web avec PHP, en expliquant les concepts fondamentaux du World Wide Web, l'architecture client/serveur, et les choix pour la mise en œuvre d'un serveur web. Il aborde également les langages de programmation web et les différentes architectures client/serveur, en détaillant leurs caractéristiques et avantages. Enfin, il souligne l'importance des langages et des technologies dans le développement d'applications web interactives.

Transféré par

OusmaneFall
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

04/03/2010

PROGRAMMATION WEB
AVEC PHP

2009 - 2010 Pr. Benabbou Fouzia

Plan
 Introduction World Wide Web
 Architecture client/serveur
 Choix dans la mise en œuvre d’un serveur web
 Le Langages de programmation web: PHP

1
04/03/2010

Introduction
3

 Le World Wide Web est un ensemble de sources


d’informations disponible à travers le réseau Internet.
 Initié en 1989, son but est de relier différents
systèmes pour échanger divers types d’information
(textes, images, audio, vidéo).
 Principale caractéristique : ne pas concentrer
géographiquement l’information.

Le World Wide Web


4

2
04/03/2010

Définitions
 Hypertexte
 fichierde type texte dont certains mots (ou groupe de
mots) ancres sont reliés à d'autres documents par des
liens.
 Hypermédia
 fichier dont les liens peuvent référencer des fichiers
sons, images ...
 Les ressources référencées peuvent être sur le même
ordinateur ou sur une machine distante.

Topologie du WWW
6

 La topologie du Web permet une distribution de


l’information qui ne nécessite donc pas d’être stockées
localement.

3
04/03/2010

Topologie du WWW
7

 Cette distribution de l’information apporte les avantages


suivants :
 Pour ajouter une nouvelle source d’information, il suffit de
rajouter un nouveau lien.

 Les liens peuvent facilement être supprimés ou modifiés.

 Les informations peuvent être dupliquées sur différents sites


pour conserver la connectivité en cas de panne d’un site.

 Les informations d’un site peuvent être utilisées pour plusieurs


sujets.

Topologie du WWW
8

 Les inconvénients sont :


 Si un site est indisponible et qu’il est le seul à détenir une
information, celle-ci n’est plus accessible.
 Les informations peuvent être fragmentée sur plusieurs
sites.
 Les liens peuvent être obsolètes s’ils ne sont pas mis à
jour régulièrement.

4
04/03/2010

Topologie du WWW
9

 L’utilisateur trouve une information en suivant des


liens qui pointent sur d’autres liens pour finalement
obtenir l’information désirée ou utilise un «moteur
de recherche»
 Il existe beaucoup de programmes (moteurs)
permettant d’effectuer des recherches sur le Web :
Google, Lycos, Altavista, . . ..

Qui normalise le Web ?


10

 l’évolution du trafic et l’émergence d’enjeux


commerciaux ont amené les spécialistes à formaliser les
travaux portant sur l’évolution des protocoles du Web.
 Ils ont donc lancé le W3C(Wolrd Wice Web
Consortium)
 piloté pas le MIT (Masstrash Internet Technology) aux Etats-
Unis
 par l’INRIA (Institut National de Recherche en Informatique et
Automatique) en Europe.
 Sa mission est d’assurer une évolution harmonieuse du
Web

5
04/03/2010

Uniform Resource Locator (URL)


 Permet de référencer un document de manière
unique.
 Un URL est formé par :
 un préfixe qui indique la méthode d'accès.
 un délimiteur ":"
 un champ de localisation, en général le nom de la machine.
 un champ qui dépend de la méthode d'accès
 Exemples
 [Link]
 [Link]
 file:/home/tuy/public_html/[Link]
 Un lien hypermédia est un URL

12

ARCHITECTURE
CLIENT/SERVEUR

6
04/03/2010

Caractéristiques des Applications


13
web
 Des programmes qui vont s’exécuter sur au moins
deux machines
 Les machines peuvent jouer le rôle de client ou serveur
 Des programmes qui vont s’exécuter sur le réseau
Internet
 Des programmes qui communiquent pour réaliser un
service donnée
 …

Architecture client/serveur
14

 Le WWW est constitué de clients et de serveurs,


les clients accédant aux services fournis par les
serveurs.

 L’architecture des applications web sont souvent


des applications client/serveur

7
04/03/2010

Définition
15

 Une application est conforme au modèle client-serveur


lorsqu'elle fait appel à des services distants au travers
d'un échanges de messages plutôt que par un échanges de
fichiers.
 Ce modèle suppose que les ordinateurs reliés entre eux
par un réseau
 Le dialogue se fait par :
 émission de requêtes : appels de service par le client
 émission des résultats par le serveur vers le client

Architecture client/serveur
16

 Les deux programmes ne sont pas identiques:


 ni dans leur nature,
 ni dans leurs rôles,

 ni dans les systèmes d'exploitations qui les supportent

 Le programme client initie le dialogue


 Le programme serveur se contente de répondre
CLIENT 1
SERVEUR
CLIENT 2

CLIENT N

8
04/03/2010

Le client Web
17

 Le client Web est un programme qui tourne sur un


ordinateur
 il envoie des requêtes à un serveur
 Celui-ci lui répond en lui envoyant un document
(HTML, XML, . . .)
 Le client Analyse le fichier
 Puis l’affiche
 Exemple: IExplorer, Netscape,…

Serveur Web
18

 Dénommé aussi serveur HTTP-D (Hypertext Transfer


Protocol Daemon) est un processus qui tourne sur un
ordinateur et qui attend des requêtes en provenance
des clients Web
 Le serveur et le client communiquent à l’aide des
protocoles TCP/IP
 Le client émet une requête pour demander un document
caractérisé par son adresse URL
 Le serveur répond à cette requête en renvoyant le
document au client
 Puis la connexion est coupée par le serveur

9
04/03/2010

Découpage d’une application


19

 Fondamentalement, une application informatique se


compose de trois niveaux principaux :
 l'interface avec l'utilisateur
 les traitements
 les données
serveur

clients

Conception d’une application


20

 Problématique
 Pour un client donné qui assure ces fonctionnalités ?
 Notion d'application client/serveur 2 tiers ou 3 tiers
 Tiers signifiant tierce partie

10
04/03/2010

Client/Serveur 1 tiers
21

 Toutes les ressources sont reliées à un même ordinateur


 Tous les utilisateurs exécutent leur programmes sur une
seule machine
 Le coût de la machine centrale est très élevé

Client/Serveur 2 tiers
22

 L'architecture à deux niveaux caractérise les systèmes


dans lesquels le client demande une ressource et le
serveur la lui fournit directement
 le serveur est polyvalent, c'est-à-dire qu'il est capable
de fournir directement l'ensemble des ressources
demandées par le client.
 Cela signifie que le serveur ne fait pas appel à une
autre application afin de fournir le service.
 Coût du serveur, Nombre d’utilisateur limité

11
04/03/2010

Client/Serveur 2 tiers
23

Niveau 1 Niveau 2

Client/Serveur 3 tiers
24

 Dans l'architecture à 3 niveaux


 Il existe un niveau intermédiaire, c'est-à-
dire que l'on a généralement une
architecture partagée entre:
 Le client: le demandeur de ressources
 Le serveur d'application : c’est le serveur chargé
de fournir la ressource mais faisant appel à un
autre serveur
 Le serveur secondaire (généralement un serveur
de base de données), fournissant un service au
premier serveur

12
04/03/2010

Client/Serveur 3 tiers
25

Envoi de requête

Niveau 3:
Niveau 2:
Niveau 1 Serveur de
Serveur
Requête http Base de
d’applications
données

Envoi de réponse

Client/Serveur 3 tiers
26

 Les applications au niveau serveur sont délocalisées


 Chaque serveur est spécialisé dans une tâche (serveur
web, serveur de base de données …).
 L'architecture à trois niveaux permet :
 une plus grande flexibilité/souplesse

 une plus grande sécurité (la sécurité peut être définie


pour chaque service)
 de meilleures performances (les tâches sont partagées)

13
04/03/2010

Client/Serveur N tiers
27

Le dialogue entre client et serveur


28

 Ce dialogue s'effectue à travers le réseau qui relie les


deux machines participants à la conversation.
 Une conversation de type client/serveur est un dialogue
inter-processus
 Cela nécessite la présence d’outils de communication de
bas niveaux
 Nécessité d’une interface de communication
indépendante des applications : Middleware

14
04/03/2010

Le Middleware
29

 C’est l'ensemble des couches logicielles qui s'interposent


entre l'application et le réseau
 Ces couches prennent en compte les messages ou les
requêtes de l'application cliente et les transmettent de
façon transparente (pour l'application) à travers le
réseau
 Prend en compte les données résultat du serveur vers le
client. Client Serveur

Middleware

Réseau

Avantage du Middleware
30

 Cela rend la conception des applications


Client/Serveur indépendantes de ce qui se
passe en bas
 Cela permet au développeur de se concentrer
sur les codes Applications sans se préoccuper
des détails de communication
 Ces outils doivent être disponibles pour toutes les
applications

15
04/03/2010

Exemple d’Interface de communication:


31
Les sockets
 Les sockets : interface client/serveur utilisée à l’origine
dans le monde UNIX et TCP/IP.
 Fournit les primitives pour le support des communications
reposant les protocoles TCP/IP
 Les applications cliente et serveur ne voient les couches
de communication qu’à travers l’API socket

Les sockets
32

Protocole Applicatif
Application cliente Application : serveur

API Socket API Socket

UDP TCP UDP TCP

IP IP

Physique Physique

16
04/03/2010

Remote Procedure Call


33

Programme Procédure A Procédure B


principal (serveur) (serveur)

procA() procB()

return return return

Machine 1 réseau Machine 2 réseau Machine 3

Remote Procedure Call


 Le processus client appelle une fonction d'un serveur et
suspend son propre fonctionnement jusqu'à ce qu'il en
obtienne les résultats
 Les paramètres sont transmis comme dans une procédure
ordinaire
 Le processus qui émet l'appel attend jusqu'à obtention
des résultats
 Le logiciel RPC rassemble les valeurs des paramètres,
constitue un message et l'expédie au serveur distant
 Celui-ci reçoit la requête, désassemble les paramètres,
appelle la procédure et retourne la réponse au client

17
04/03/2010

Le Middleware contemporains
35

 Parmi les modèles contemporains de composants sur


middleware on cite:
 les EJBs (Enterprise Java Beans)
 la plate-forme J2EE (Java 2 Enterprise Edition)

 les CCM (Corba Componant Model) de la plate-forme


Corba permettant la communication entre objets distants.

36

CHOIX DANS LA MISE EN


ŒUVRE D’UN SERVEUR WEB

18
04/03/2010

Le choix et l’optimisation d’un


37
serveur Web
 Les questions qui se posent sont :
 S’agit-ild’une simple vitrine (Web statique) ?
 Peut-on prévoir le nombre de connexions possibles?

 Doit-on pouvoir effectuer des transactions sécurisées ?

 Quelle est la capacité de mémoire vive disponible sur


le système-hôte ?
 ...

Performances d’un Serveur web


38

 Pour optimiser les performances du serveur Web,


on peut envisager les solutions suivantes :
 Installer un deuxième serveur Web en parallèle, serveur qui
sera moins sollicité et qui devra assurer une seule mission :
se servir de DNS (Domain Name Service).
 Installer un troisième serveur qui assure les fonctions de
messagerie et de News Groups.
 Installer un site miroir

19
04/03/2010

Un site miroir
39

 Un site miroir est une copie intégrale d'un site principal


 il présente à ce titre strictement les mêmes informations et
fichiers que ce site
 L'objectif poursuivi dans l'établissement de sites miroirs est
généralement la répartition de charge en termes de bande
passante et d'accès concurrents
 En effet l'existence de sites miroirs permet de réduire la charge
du serveur hébergeant le site principal en répartissant cette
charge sur les serveurs accueillant les sites miroirs.
 Ce procédé permet de fluidifier le trafic et de rendre la
navigation du site par l'internaute plus agréable.

Exemple d’application
40

 Applications mettant en oeuvre des bases de données


 Le développement des applications multimédia comprenant une
base de données nécessite :
 un langage (HTML,XML) qui sera utilisé entre le serveur Web et le
navigateur, pour la mise en forme des documents.
 Un langage de requête comme SQL (Standard Query Language) qui
permet d’interroger une base de données.
 Un langage de programmation pour créer les CGI ou un langage comme
PHP, ASP,. . .qui servent de support aux paramètres des requêtes saisis par
l’utilisateur.
 Un serveur Web (Apache, IIS,....)

20
04/03/2010

Exemple d’application
41

 Applications mettant en oeuvre des bases de données:


Connexion entre une base de données, un serveur et un client

42

21
04/03/2010

Langages du Web
43

 Pourquoi utiliser des langages ?


• HTTP : connexion fermée, aucune information sur les
connexions
• HTML : statique
• incompatibilité entre les navigateurs des langages
dynamiques côté client
 Pas facile de traiter l’information

 Solution
 intelligence du côté du serveur

Langages du Web

 Code qui s’éxecute côté client :


 HTML
HyperText Markup Language
 JAVASCRIPT
 APPLET JAVA
 Code qui s’exécute côté serveur:

 PHP

 ASP

 CGI

 Code qui s’exécute côté client ou serveur 44

22
04/03/2010

Langage PHP
45

 Fonctionnement
 Le code PHP fait partie intégrante du fichier.
 Quand l’URL est requise, le serveur interprète le code PHP
du fichier.
 La page modifiée est envoyée au client.

 L’utilisateur ne voit pas le PHP.

 Le serveur détecte les fichiers PHP par leur extension.


Extensions courantes: .php,.php, .php4…

Sommaire
46

 Définition de PHP
 Commentaires & E/S
 Les variables
 Les constantes
 Les structures de contrôle PHP
 Opérateurs de Comparaison, Opérateurs Logiques
 Les tableaux
 Variables d'environnement et issues de formulaires
 Fonctions
 Base de données et requêtes MySQL

23
04/03/2010

PHP
47

 PHP est un langage de programmation spécialisé


dans la génération de code, dont le langage cible
est le HTML.
 Le PHP permet de réaliser des sites Internet
dynamique.
 PHP est un disponible dans plusieurs environnements,
tels qu'Unix (Linux, AIX), Windows (95, 98, NT, XP)
et Macintosh.
 Il possède une impressionnante quantité d'outils
(manipulation d'images, traitement de fichiers, accès
aux bases de données, etc…)

Définition de PHP
48

 Le PHP(officiellement "PHP: Hypertext Preprocessor")


est un langage complet, écrit en C, qui reprend une
grande partie des spécificités techniques et
sémantiques de ce langage.
 Le moteur d'interprétation du langage lit un fichier
source PHP, puis génère un flux destination.

24
04/03/2010

PHP: Règles d’interprétation


49

 Un bloc PHP est un groupe continu de lignes, encadré


par deux balises :
<?php ?>
 Toute ligne située à l'extérieur de ces balises n'est
pas interprétée et est envoyée telle quelle dans le
flux de sortie.
 Toute ligne située à l'intérieur de ces balises est
considérée comme une instruction PHP et est donc
interprétée par le moteur.

PHP: Règles d’interprétation


50

 Les instructions PHP n'apparaissent pas dans le


résultat généré.
 Lorsqu'une erreur survient, un message est intégré
dans le flux de sortie, et la génération du script est
interrompue.

25
04/03/2010

Schéma de fonctionnement général


d'un langage de script
51

Premier programme
52

 La conception du script PHP est réalisé avec un éditeur


quelconque, ce qui facilite les choses.
<HTML>
<HEAD><TITLE>Mon premier programme
</TITLE></HEAD>
<BODY>
<? print "Ca marche !"; ?>
</BODY>
</HTML>
 L'extension de votre fichier doit être .php ou .php3
afin d ’être interprété par le serveur

26
04/03/2010

Exercice
 Intégration de script PHP dans une page Web :
écrire un programme [Link] qui permet
simplement d’afficher la chaîne « Mon premier
script PHP ».

Commentaires & E/S

 Commentaires
 Les E/S

27
04/03/2010

Commentaires
 Le PHP supporte les commentaires comme en C, C++ et Shell
Unix.
 Par exemple:
<?php
echo "Ceci est un test"; // Ceci est un commentaire sur une ligne comme
//en C++
/* Ceci est un commentaire sur plusieurs lignes, comme en C et C++ */
echo "Ceci est encore un test";
echo "Enfin, le test final"; # Ceci est un commentaire comme en Shell Unix
?>

Commentaires

 Faîtes attention à ne pas emboîter les commentaires de


type ’C’, ce qui arrive de temps en temps lorsque vous
voulez commenter une grande partie de code.
<?php
/*
echo "Ceci est un test"; /* Ce commentaire va poser un
problème */
*/
?>

28
04/03/2010

Les E/S
 le PHP possède les fonctions qui permettent d’afficher ou de saisir
des variables de différents types.
 Print: int print ( string arg )
 print affiche la chaîne de caractères arg .
 retourne toujours 1.
 On n’est pas obligé d'utiliser des parenthèses.
 Identique à echo
 Exemples:
<?php print("Bonjour le monde");
print "Ce print() se répartit sur plusieurs lignes.
Il affiche aussi les nouvelles lignes";
print "L'échappement de caractères se fait : \"comme ceci\". "?>

Les E/S : Printf et Sprint


 int printf ( string format , mixed args ... )
 printf affiche les arguments args formatés sous forme
de chaîne de caractères grâce à format.
 string sprint ( string format , mixed args… )
 retourne une chaîne formatée, avec le format format
 La chaîne de format est composée de zéro, une ou plusieurs
directives :
 les caractères ordinaires (à l'exception de % ) qui sont copiés directement dans
le résultat
 des spécifications de conversion

29
04/03/2010

Les variables
59

 Contrairement à beaucoup de langages, PHP ne contient


de partie déclarative clairement définie.
 Pour déclarer une variable, il suffit de l'initialiser.
 Celle-ci sera immédiatement accessible, et le restera
jusqu'à la fin du script.
 Le type d'une variable est également défini par la
valeur qui lui à été affecté lors de sa création.
 Les variables en PHP sont toutes dotés du préfixe $
exemple :
$data = 1;

Portée des variables


60

 Selon l'endroit du code où les variables sont


définies, ces dernières auront une portée plus ou
moins grande

 c-à-d qu'elles seront définies soit pour une partie


du code (fonction) soit pour sa totalité.

30
04/03/2010

Portée des variables


61

 Il existe 3 niveaux de définition de variables :


 Le niveau global: Il définit des variables dans
l'intégralité du code d'une page PHP.
 Le niveau local: Il définit des variables propres à une
fonction, dont la durée de vie ne dépasse pas le temps
de cette fonction.
 Le niveau static: Il définit des variables propres à une
fonction, qui persistent pendant l'intégralité du code de
la page PHP.

Type de variable
 PHP supporte les huit types basiques suivants :
 PHP supporte quatre types scalaires :
 booléen ·
 entier ·
 nombre à virgule flottante ·
 chaîne de caractères ·
 PHP supporte deux types composés :
 tableau ·
 objet ·
 PHP supporte le type spécial :
 NULL ·
 On utilise également quelques pseudo−types pour des raisons de lisibilités :
 mixed ·
 number ·

31
04/03/2010

Type Boolean
 Un booléen exprime une valeur de vérité.
 Il peut prendre comme valeur soit TRUE soit FALSE .
<?php
$fait = True; // assigne la valeur TRUE à la variable $fait
?>
 Les valeurs suivantes sont considérées comme fausses ( FALSE ) :
 Le booléen FALSE lui−même ·
 L' entier 0 (zéro) ·
 La chaîne de caractères vide et la chaîne de caractères "0" ·
 Le tableau vide (aucun élément) ·
 L' objet vide (aucun élément) (PHP 4 uniquement) ·
 La type spéciale NULL ·
 Toutes les autres valeurs sont considérées comme vraies ( TRUE).
 −1 est considéré comme vrai, tout comme les nombres autres que zéro (aussi bien
positifs que négatifs) !

Type Entiers
 Il est possible de spécifier les nombres entiers (integers) de la manière suivante :
<?php
$a = 1234; # nombre entier en base 10
$a = -123; # nombre entier négatif
$a = 0123; # nombre entier en base 8, octale (équivalent à 83 en base 10)
$a = 0x12; # nombre entier en base 16, hexadécimale (équivalent à 18 en base 10)
?>
 Les entiers peuvent être spécifiés en:
 base décimale (dite aussi base 10),
 en hexadécimale (base 16)
 ou octale (base 8).
 Les entiers peuvent être optionnellement précédés par le signe plus ou moins (− ou +).
 Pour utiliser la notation octale, le nombre doit être préfixé avec un zéro
 Pour utiliser la notation hexadécimale, le nombre doit être préfixé avec 0x .

32
04/03/2010

Structure d'un entier

decimal :[1−9][0−9]* | 0
hexadecimal : 0[xX][0−9a−fA−F]+
octal : 0[0−7]+
integer : [+ −]?decimal ou [+ −]?hexadecimal
ou [+ −]?octal

 PHP ne supporte pas les entiers non signés.

Dépassement de capacité des entiers


 Si un nombre est hors de l'intervalle de validité des entiers, il sera
interprété comme un float .
 De même, si vous effectuez une opération qui retourne un nombre hors de
l'intervalle de validité des entiers, un float sera retourné.
 Exemple:
<?php
$large_number = 2147483647;
echo " $large_number " ;
$large_number = 50000 * $million;
echo " $large_number " ;
?>

33
04/03/2010

Conversion des nombres


 Pour explicitement convertir une valeur en entier , utilisez les opérateurs de
transtypage (int) ou (integer) .
 Cependant, dans la plupart des situations, vous n'en aurez pas besoin, car
une valeur sera automatiquement convertie si un opérateur, une fonction ou
tout autre élément du langage requiert un entier .
<?php
$foo = 10; // $foo est un entier
$bar = (double) $foo; // $bar est un double
$bar=10;
$foo = (float) $bar;
$bar=10.5;
$foo = ( int ) $bar;
?>

Opérations sur les nombres


On retrouve les mêmes opérations classiques en C.
+ $a+$b Somme
- $a-$b Soustraction
* $a*$b Multiplication
/ $a/$b Division en entière
% $a%$b Modulo, reste de la division
++ $a++ Incrémente de 1 et l’affecte à $a
+=n $a+=n Incrémente de n et l’affecte à $
-- $a-- Décrémente de 1 et l’affecte à $
-=n $a-=n Décrémente de n et l’affecte à $
*=n $a*=n $a= $a*n
/=n $a/=n $a= $a/n

34
04/03/2010

Exemple
<?php
$a = ($b = 4) + 5; // $a est maintenant égal à 9, et
$b vaut 4.
$a = 3;
$a += 5; // correspond à l’instruction ’$a = $a + 5’
?>

Division Entière
 Il n'existe pas de division entière en PHP.
 1/2 générera le float 0.5 .

 On peut forcer la valeur au format entier pour faire


l'arrondi.
<?php
$a=25/7; // 3.5714285714286
$b=(int) (25/7); // 3
echo " $a : $b";
?>

35
04/03/2010

Les nombres à virgule flottante


 Les nombres décimaux (connus aussi sous le vocable
de " double ", " float " ou " nombre rééls ")
 peuvent être spécifiés en utilisant la syntaxe dans
l’exemple suivante :
<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E−10;
?>

Pseudo−types
 mixed
 mixed indique qu'un paramètre accepte plusieurs types,
mais pas forcément tous les types.

 number
 number indique qu'un paramètre peut être du type
entier ou nombre à virgule flottante .

36
04/03/2010

Les chaînes de caractères


 Les chaînes de caractères sont des séquences de
caractères.
 Une chaîne peut être spécifiée de trois manières
différentes :
 guillemets simples
 guillemets doubles

 syntaxe HereDoc

Guillemets simples
<?php
echo 'Ceci est une chaîne simple';
echo 'Arnold a coutume de dire : "I\'ll be back"';
// affiche tel que : "I'll be back"
echo 'Etes−vous sûr de vouloir effacer le dossier
C:\*.*?';
// affiche : tel que
echo 'Les variables ne seront pas $afficher $ici';

37
04/03/2010

Guillemets doubles
 $ch=" bonjour ";
 Conséquence:
 Pour spécifier un guillemet simple littéral, vous devez
l'échapper avec un anti−slash ( \ ),
 Si un anti−slash doit apparaître dans votre chaîne ou
bien en fin de chaîne, il faudra le doubler.

 Exemple:
$str="salut les \"amis,\"\n ca va aujourd’hui ? " ;
echo "$str";

Syntaxe Heredoc
 Un autre moyen de délimiter les chaînes est d'utiliser la syntaxe dite " Heredoc "
 <<<, suivi d'un identifiant arbitraire, puis de la chaîne, puis l'identifiant initial pour terminer
la séquence.
 L'identifiant utilisé doit suivre les mêmes règles suivantes: ne doit contenir que des caractères
alpha−numériques, et des soulignés ("_"), et commencer par un caractère alphabétique ou un
souligné.
 Les variables sont remplacées par leur valeur
 Exemple
<?php
$a=chaîne;
$str = <<<EOD
Exemple de $a
s'étalant sur
plusieurs lignes
avec la syntaxe heredoc
EOD;

38
04/03/2010

Traitement des variables dans les chaînes

 Les chaînes peuvent être concaténées avec


l’opérateur ’.’ (point). Notez que l’opérateur ’+’
(addition) ne fonctionnera pas.
 Exemple 1:
<?php
$boisson = 'limonade';
echo "Du $boisson, du pain et du fromage!";//
Correct
echo 'Il a goûté plusieurs ' . $boissons; // correct
echo "Il a goûté plusieurs $boissons"; // Correct
?>

Traitement des variables dans les chaînes

 Attention : conversion implicite !


$r=1+ "les 8 pandas sont sympas";//la chaîne est
évaluée 0, résultat 1

$r=1+"8 pandas sont sympas";// donne 9

39
04/03/2010

Intégration du php dans une page html


<html>
<body>
<font size="2" face="Arial">Le texte en HTML</font>
<?php
$chaine ="bonjour en php ";
print("<font size=\"2\" face=\"Arial\"> et celui en PHP.</font>");
?>
<br><font size="2" face="Arial"> <?php echo $chaine ; ?>.</font>
</body>
</html>

Les constantes
80

 Pour définir une constante il suffit d'utiliser


l'instruction define()
 exemple :

define(“const”, “bleu”) ;
if (defined(‘’const’’)) {
print ‘’La valeur de ma constante est : ‘’.const
//les constantes ne sont pas dotées du préfixe $.
}

40
04/03/2010

Les structures de contrôle PHP


 Les opérateurs de comparaisons
 Les opérateurs logiques
 if/else/elseif
 while / do...while
 for
 switch

Exercice 1

41
04/03/2010

Corrigé

Exercice 2

42
04/03/2010

Corrigé

Opérateurs de Comparaison
 Ils permettent de comparer les valeurs de deux variables.
exemple : Ici $a et $b sont du même type de variable.

Opérateur ExempleRésultat

== $a == $b vrai si $a est égal à $b


!= $a != $b vrai si $a est différent de $b
< $a < $b vrai si $a est inférieur $b
> $a > $b vrai si $a est supérieur $b
<= $a <= $b vrai si $a est inférieur ou égal à $b
>= $a >= $b vrai si $a est supérieur ou égal à $b

86

43
04/03/2010

Opérateurs Logiques
 Ils permettent de combiner plusieurs tests entre eux.
exemple: Ici $a et $b peuvent prendre les valeurs booléennes
vrai ou faux.
Exemple opérateur Résultat
and ( && ) $a and $b vrai si $a et $b sont vrai
$a && $b tous les deux
or ( || ) $a or $b vrai si $a est vrai ou $b
$a || $b est vrai, ou encore si $a
et $b sont vrai tous les
deux
not ( ! ) not $a vrai si $a est faux !$a
87

Les structures de contrôle PHP


88

 Ces instructions sont à la base de tout langage de


programmation
 Elles permettent d'effectuer des tests et des boucles
indispensables au traitement des données
 Instruction de condition
 Instruction de répétition

 Instruction de choix,…

44
04/03/2010

if / else / elseif
89

 Permet d'effectuer un traitement si une condition est


remplie.
 Exemple :
if ($val==1)
{
echo "1";
}

if / else / elseif
90

 On peut aussi effectuer un traitement si la condition


n'est pas remplie.
Ex :
if ($val==1)
{ echo "instruction 1"; }
else
{
echo "instruction 0";
}

45
04/03/2010

if / else / elseif
91

 Mais si la condition n'a pas que deux cas possibles,


on peut ajouter un autre test.

if ($val==1)
{ echo "instruction 1"; }
elseif ($valeur==2)
{ echo "2"; }
else
{
echo "instruction 0";
}

Syntaxe alternative
 Le PHP propose une autre manière de rassembler des
instructions à l’intérieur d’un bloc, pour les fonctions de
contrôle if, while, for, et switch.
 Dans chaque cas, le principe est de remplacer
l’accolade d’ouverture par deux points (:) et l’accolade
de fermeture par, respectivement, endif;, endwhile;,
endfor;, ou endswitch;.

<?php if ($a == 5):


Echo “A vaut 5”;
endif;
?>

46
04/03/2010

Syntaxe alternative
<?php
if ($a == 5):
print "a égale 5";
print "...";
elseif ($a == 6):
print "a égale 6";
print "!!!";
else:
print "a ne vaut ni 5 ni 6";
endif;
?>

Exercice 1

47
04/03/2010

Corrigé

Corrigé

48
04/03/2010

Exercice 2
 Ecrire un programme qui permet de dire si un
nombre est pair ou impair
<?php
$N=6;
If($N%2==0)
print "$N est pair";
else
print "$N est impair";
?>

Exercice 3
 Ecrire un script :
 qui permet d’afficher la chaîne « la couleur
préféré est rouge » ou chaîne « la couleur préférée
est bleue » selon que la variable $nom soit égale
à « fille » ou à « garçon » et que $age soit
inférieur ou supérieur à 12
 Afficher la chaîne dans la couleur considérée ( bleu
ou rouge).

49
04/03/2010

Corrigé
<?php
$nom="fille";
$age= 10;
If($nom=="fille" && $age< 12)
print " la couleur préféré est les rouge";
Elseif ($nom=="garcon" && $age< 12)
print " la couleur préféré est le bleu";
?>

Corrigé
<html>

<?php
$nom="fille";
$age= 10;
If($nom=="fille" && $age< 12)
print " <font color=\"red\"> la couleur préféré est les rouge</font>";
Elseif ($nom=="garcon" && $age< 12)
print " <font color=\"blue\"> la couleur préféré est le bleu";
?>

50
04/03/2010

while / do...while
101

 Effectue un traitement tant qu'une condition n'est pas


remplie.
while (condition) (Instructions)

do (instructions) while (condition)

 Dans do...while, le traitement est toujours effectué


une fois même si la condition n’est pas remplie.

Exemple
102

<?php
$valeur=0;
while ($valeur<10)
{ echo $valeur;
$valeur++;
}
$valeur=0;
do
{ echo $valeur;
$valeur++;
}
while ($valeur<10);
?>

51
04/03/2010

Exercice 1

for
104

 Tout comme l'instruction while, for effectue un


traitement tant qu'une condition n'est pas remplie.

 Mais elle intègre le paramétrage de la boucle

 C'est-à-dire que l'instruction permet de définir


l'initialisation des variables, la condition de fin de
boucle et le traitement effectué à chaque itération.

52
04/03/2010

for
105

 Exemple :
for ($indice=0;$indice<10;$indice++)
{
echo $indice;
}

Exercices
 Ecrire un programme qui permet de calculer le
factoriel d’un nombre
 Lister tous les nombre premiers inférieurs à un
nombre N

53
04/03/2010

switch
107

 Cette instruction remplace une suite de tests if


 Permet de comparer une variable avec plusieurs
valeurs possibles et d'effectuer un traitement en
conséquence.

switch
108

switch ($choix)
{ case 1:
echo "La valeur est 1";
break;
case 2:
echo "La valeur est 2";
break;
case 3:
echo "La valeur est 3";
break; }

54
04/03/2010

break
109

 Cette instruction permet de forcer la sortie d'une


boucle avant que la condition de sortie ne soit remplie.
 Utilisée surtout dans le switch elle permet de quitter le
test lorsque la valeur est trouvée

break
110

<?php
$i = 0;
while ($i < 10) {
if ($i <= 5)
Echo " $i ";
else break;
$i++;
}

55
04/03/2010

Exemple avec switch


111

 break accepte un argument numérique optionnel qui


vous indiquera combien de structures emboîtées ont
été interrompues.
$i = 0;
while ( ++$i ) {
switch ( $i ) {
case 5: echo "à 5<br>\n";
break 1;
case 10: echo "à 10; quitting<br>\n";
break 2;
Default: break;
}}?>

Continue
112

 L’instruction continue est utilisée dans une boucle afin


d’éluder les instructions de l’itération courante afin de
passer directement à l’itération suivante.

 continue accepte un argument numérique optionnel


qui vous indiquera combien de structures emboîtées
ont été ignorées.

56
04/03/2010

Continue
113

<?php
$i=1;
while ($i< 10) {
If ($i==5)
{$i++; continue;}
else
{echo $i;
$i++;}
echo " la partie non affiché";
}
?>

Les tableaux
114

 Dans PHP, on retrouve aussi, comme dans tout autre


langage, les structures tableaux.
 La déclaration d'un tableau se fait de la même
manière que la déclaration d'une variable avec un
indice se trouvant entre [ et ].
$liste[0] = 1; // on crée un tableau, et sa première
valeur est 1
 Pour un tableau à deux dimensions:
$matrice[0][0] = 1

57
04/03/2010

Les tableaux
115

 Il n'est pas obligatoire de préciser l'indice pour affecter


une valeur.
$liste[] = 10; // équivaut à $liste[0] = 1;
$liste[] = 11; // équivaut à $liste[1] = 45;
$liste[] = 16; // équivaut à $liste[2] = 6;
 La déclaration et l’initialisation d'un tableau peuvent
également se faire par l'intermédiaire de la fonction
'array()'.
 Cette fonction permet de préciser les indices ainsi que
les valeurs du tableau (à l'aide de l'opérateur =>).
$liste[ ] = array(0=>10, 1=>11, 2=>16);

Exercices
116

Exercice : initialiser un tableau de 10 entiers.


1. Afficher la somme de ses éléments

2. Afficher le maximum de ses éléments

3. Afficher le minimum de ses éléments

4. Trier ce tableau

58
04/03/2010

Corrigé 1
117

1. Afficher la somme de ses éléments


<?php
$liste[ ] = array(0=>20, 1=>11, 2=>16, 3 =>19, 4=>1, 5=>26,
6=>10, 7=>31, 8=>16, 9=>13);
$som=0;
For($i=0;$i<10; $i++)
$som=$som+liste[$i];
Print" La somme des éléments du tableau est = $som";
?>

Les tableaux associatifs


118

 $a = array(1 => “nom”, 2 => "prénom",3=>"age");

Syntaxe: array( [key =>] value , ... )


$arr[key] = value;

 $b = array (1, 2, 3, 17);


$tableau = array('le bon', 'la brute', 'le truand');

Syntaxe: array( value1 , ... )

59
04/03/2010

Les tableaux Associatif


119

 Un tableau classique utilise des indices numériques


 Un tableau associatif peut utiliser comme clé d’autre
types comme les chaine de caractères
$a["couleur"] = "rouge";
$a["saveur"] = "sucrée";
$a["forme"] = "rond";
$a["nom"] = "pomme";

Les tableaux Multidimension


120

<?php
$a[1] = $f; # tableau à une dimension
$a["foo"] = $f;
$a[1][0] = $f; # tableau à deux dimensions
$a["foo"][2] = $f; # on peut mélanger les
indices associatifs et numériques
$a[3]["bar"] = $f;
$a["foo"][4]["bar"][0] = $f; # tableau à quatre
dimensions
?>

60
04/03/2010

Les tableaux Multidimension


121

 La fonction array() peut être emboîtée pour remplir un


tableau à plusieurs dimensions :
<?php
$a = array(
"pomme" =>
array("couleur" => "rouge","saveur" => "sucrée","forme" => "rond"),
"orange" =>
array("couleur" => "orange","saveur" => "amère","forme" => "rond"),
"banane" =>
array("couleur" => "jaune","saveur" => "paste-y","forme" => "bananoïd")
);
echo $a["pomme"]["saveur"]; # va afficher "sucrée"

Parcourt des tableaux


122

 Les tableaux classiques peuvent être


parcourus facilement en utilisant la clé
numérique
 Pour les tableaux associatif c’est un

peut plus compliqué

61
04/03/2010

Parcourt des tableaux


123

$i = 0;
while ($i < 10) {
Echo "$arr[$i] ";
}
$i++;
}

Variables d'environnement
124

 L'un des aspects fondamentaux d'une application


construite sur une architecture de type intranet est
l'utilisation des variables d'environnement du serveur,
 notamment celles du serveur HTTP
 Avec PHP toutes les variables d'environnement du
serveur sont automatiquement reprises dans les scripts
PHP en tant que variables globales.
 Ainsi il suffit de les utiliser directement dans le code.

62
04/03/2010

Variables d'environnement
125

 Accès aux éléments du Tableau $_SERVER

$IP=$_SERVER[‘REMOTE_ADDR’]
echo $IP; @ IP de la machine cliente

Exemples de variables d’environnement


126

 SERVER_SOFTWARE :Chaîne d'identification du serveur, qui est données dans les


entêtes lors de la réponse aux requêtes.
 PHP_SELF : Le nom du fichier du script en cour d'exécution, par rapport au
document root.
 DOCUMENT_ROOT : La racine sous laquelle le script courant est exécuté,
comme défini dans la configuration du serveur.
 REMOTE_ADDR : L'adresse IP du client qui demande la page courante.
 REMOTE_PORT :Le port utilisé par la machine cliente pour communiquer
avec le serveur web.
 SCRIPT_FILENAME : Le chemin absolu jusqu'au script courant.
 SERVER_PORT : Le port de la machine serveur utilisé pour les
communications. Par défaut, c'est '80'. En utilisant SSL, par exemple, il sera
remplacé par le numéro de port HTTP sécurisé.
 REQUEST_URI : L'URI qui a été fourni pour accéder à cette page

63
04/03/2010

Exercice
1. Ecrire un programme qui permet d’afficher les
variables d’environnement suivantes
$HTTP_HOST, $SERVER_ADDR, $SERVER_,
$SERVER_NAME, $SERVER_PORT et la valeur
correspondante

Variables issues de formulaires


128

 Les variables sont issues de formulaires HTML


 Elles correspondent aux différents champs positionnés
entre les balises <FORM> et </FORM> de ce
formulaire.
 La page qui reçoit ces variables est celle qui est
désignée par l'attribut ACTION de la balise <FORM>.
 exemple :
<HTML>
<FORM ACTION="[Link]" METHOD=POST>
Nom : <INPUT TYPE=text NAME="nom">
<INPUT TYPE=submit VALUE="Envoyer">
</FORM></HTML>

64
04/03/2010

Variables issues de formulaires


129

<?php
$NOM=$_POST[‘nom’];
echo $NOM;
?>

Exercices
1

65
04/03/2010

Les Fonctions
131

 Déclaration, paramètres, valeurs de retour


 Fonctions liées aux variables d'environnement
 Fonctions usuelles

Les Fonctions
132

 PHP est un langage structuré, les fonctions en font une


partie intégrante puisqu’elles sont la base d’une
programmation claire et efficace.
 Une fonction est une sorte de sous-programme isolé du
reste du code, exécutable à tout moment, depuis
n’importe quelle partie du code principal ou n’importe
quelle autre fonction, par simple appel.
 De plus, les avantages des fonctions sont :
 La non répétition de la même séquence de code
 Le gain de productivité.
 La meilleure lisibilité du code.
 La maintenance facilitée.

66
04/03/2010

Déclaration
133

 Une fonction est une séquence de code qui peut


remplir n’importe quelle tâche.
 Tout code valide peut figurer dans le corps d’une

fonction.
 Déclaration :

La syntaxe de déclaration s’appuie sur le mot clé


function.
Function nom_fonction(arguments_éventuels)

Fonctions
134

exemple :
function bonjour( ) {
echo « Bonjour ! » ;
}

Bonjour( ) ; // affiche 'bonjour' à l’écran

67
04/03/2010

Fonctions
135

Exemple:
Pour que la fonction retourne un résultat, on utilisera le mot
clé return
function bonjour2( ) {
return « Bonjour !» ;
}
echo bonjour2( ) ;

 bonjour affiche le résultat elle-même, alors qu’il faut


afficher le résultat de bonjour2 pour obtenir une action
similaire.

Déclaration, paramètres, valeurs de retour


136

function lecture($nom, $texte = 'Bonjour') {


if(empty($nom)){ // $nom est vide,retourne faux
return false;
}else{
echo "$texte $nom"; // on affiche le texte
return true; // fonction exécutée avec succès
}
}

68
04/03/2010

Passage par valeur & référence


137

 Le passage des paramètres tel qu’on l’a vu précédemment est


ce que l’on appelle le passage par valeur.
 Il existe une autre manière de procéder :le passage par
référence.
 On passe à la fonction la référence (adresse mémoire) d’une
variable existante, et la fonction modifie directement la valeur
de cette variable.

Exercice 1

<?php

69
04/03/2010

Corrigé

Corrigé

70
04/03/2010

Corrigé

Passage par valeur & référence


142

 exemple :

function bonjour(&$phrase) {
$phrase= « bonjour » ;
}
$chaine = « Phrase qui va disparaître » ;
bonjour($chaine) ;
echo $chaine ; // affiche 'bonjour' à l’écran

71
04/03/2010

Fonctions liées aux variables


143
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'interpréteur PHP,
 ainsi qu'un tableau des variables d'environnement
<?php phpinfo(); ?>
 PHP fournit la fonction getenv() permettant de retourner la
valeur de la variable d'environnement passée en paramètre:
<?php echo getenv("HTTP_USER_AGENT"); ?>

Fonctions liées aux tableaux associatifs


144

foreach: Deux syntaxes possibles


<?php
foreach(array_expression as $value) commandes
//La première forme passe en revue le tableau
//array_expression. A chaque itération, la valeur de l’élément
//courant est assigné à $value et le pointeur interne de //tableau
est avancé
foreach(array_expression as $key => $value)
commandes
//La deuxième forme fait exactement la même chose, mais //
c’est la clé de l’élément courant qui est assigné à la //
variable $key.
?>

72
04/03/2010

Fonctions liées aux tableaux associatifs


145

foreach ($arr as $value) {


echo "Valeur: $value<br>\n";
}

foreach ($arr as $key => $value) {


echo "Clé: $key; Valeur: $value<br>\n";
}

foreach
146

<?php
/* exemple 1: valeur seule */
$a = array (1, 2, 3, 17);
foreach ($a as $v) {
print "Valeur courante de \$a: $v.\n";
}
/* exemple 1: valeur (avec clé associée) */
$a = array (1, 2, 3, 17);
$i = 0; /* pour affichage seulement*/
foreach($a as $v) {
print "\$a[$i] => $v.\n";
}
?>

73
04/03/2010

Foreach
147

/* exemple 1: valeur et clé */


$a = array (
"un" => 1,
"deux" => 2,
"trois" => 3,
"dix-sept" => 17
);
foreach($a as $k => $v) {
print "\$a[$k] => $v.\n";
}
?>

Parcourt avec each() et list()


148

 each(..)
 Cette fonction permet de parcourir tous les éléments d'un tableau sans
se soucier de ses bornes.
 Elle retourne la combinaison clé-valeur courante du tableau passé en
paramètre, puis se positionne sur l'élément suivant, et cela du premier
au dernier indice.
 Lorsque la fin du tableau est atteinte, each( ) retourne la valeur faux
(false).
 list(..)
 Associée à la fonction each(), elle permet d'affecter les éléments du
tableau dans des valeurs distinctes.
 Reset()
 le pointeur interne de tableau est automatiquement ramené au premier
élément du tableau

74
04/03/2010

Fonctions each() et list()


149

 Parcourt avec « reset », « each » et « list »

<?php
$nom[“ali"]=“rassi";
$nom[« fati"]="Alilo";
$nom[« kamal"]="Dabar";
reset($nom);
while (list($clef,$valeur)=each($nom))
echo "$clef, $valeur<br>";
?>

Autres fonctions sur les tableaux


150

 La navigation dans les éléments du tableau s'effectue à


l'aide des fonctions next() , prev() et 'each()'.

 Le nombre d'éléments d'un tableau peut être obtenu à


l'aide de la fonction count().

 Le tri des tableaux est facilité par de nombreuses


fonctions : asort(), ksort(), sort(), usort(), etc...

75
04/03/2010

Fonctions each() et list()


151

exemple :
$tableau = array("val1","val2","val3","val4"); //on crée un tableau
while ($var = each($tableau)) {
echo "$var[0] : $var[1]";
}
Ce code produit le résultat suivant :
0 : val1
1 : val2
2 : val3
3 : val4
ici l'indice est affecté au premier élément de $var et la valeur au deuxième élément
$var

Fonctions Mathématiques
152

 Elles y sont toutes !

 Abs, cos, sin, tan, sqrt, exp, …


 pi( )

76
04/03/2010

Chaînes de caractères
153

 strpos (chaîne, sous chaîne) : retourne la position de la sous chaîne dans la chaîne. Dans le
cas où la chaîne existe en plusieurs exemplaires, c’est la position de la première
occurrence qui est retournée.
 strrpos retourne quand à elle la position de la dernière occurrence.
 strstr (chaîne, sous chaîne) retourne la portion de la chaîne à partir de la première
occurrence de la sous chaîne.
 strlen (chaîne) : retourne la taille de la chaîne.
 strtolower|strtoupper (chaîne) : retourne la chaîne passée en paramètres an minuscules
(resp. majuscules).
 str_replace (car d’origine, car de destination, chaîne) : remplace le caractère d’origine
par le caractère de destination dans la chaîne.
 g supprime les caractères invisibles (espaces,\n, …) au début et à la fin de la chaîne.
 ereg(chaîne à chercher, chaîne) : retourne vrai si la chaîne à chercher (sous forme de
chaîne ou sous forme d’expression régulière) est contenue dans chaîne.

Fonctions include - require


 Les deux fonctions include et require permettent
d'insérer dans un script le code contenu dans un
autre fichier.

 ex : <?php include "[Link]";?>


 On peut l’intégrer dans n’importe quelle page d’un
site
 On peut tout aussi bien insérer du code PHP.

77
04/03/2010

Fonctions include - require


 ex : <?php include "[Link]";?>
 Où le contenu du fichier phrase.php3 serait :
<?php
$phrase="Phrase du jour";
print("La phrase du jour est : ");
print($phrase);
?>
 L'utilisation la plus courante de ces fonctions est par
exemple:
 l'inclusion des entêtes
 des menus
 des bas de page qui sont présents sur toutes les pages du
site.

Fonctions include
 Par exemple, si on ne veut pas utiliser de "frames",
qui sont source de conflit avec certains navigateurs,
on est obligé de remettre le menu sur chaque page.
 Avec une inclusion PHP, il suffit de définir le menu
dans un fichier et de l'appeler sur chaque page.
 Ensuite lors d'une modification du menu, un seul fichier
est à modifier pour mettre à jour le site entier.
 Cette manière de procéder prend toute son
importance avec la mise à jour d'un site comportant
des dizaines de pages.

78
04/03/2010

Fonctions include: Passage de variables


 Le contenu du fichier "inclus" est ajouté directement au script
principal.
 Les variables sont donc accessibles aussi bien à partir du script
qu'à partir du fichier.
 ex : <?php $phrase="Phrase du jour"; include "phrase.php3";?>
 Le fichier "phrase.php3" peut donc interpréter la valeur de la
variable "$phrase".
 Contenu du fichier "phrase.php3" :
<?php
print("La phrase du jour est : ");
print($phrase);
?>

Fonction Require
 La différence majeure entre les deux fonctions réside
dans le fait que "require" ne s'exécute qu'une seule
fois à l'appel de la fonction alors que "include"
s'exécute à chaque appel.
 Ce qui implique que dans une boucle, il faut utiliser
include pour que le fichier soit inclus à chaque
passage.
 require, à la différence de include, ne peut pas
retourner de valeur comme une fonction standard.

79
04/03/2010

Fonction date
159

 La fonction date permet de décrire une date en retournant


une chaîne de caractères sous le format désiré.
 Cette date est exprimée en fonction du timestamp qui est le
nombre de secondes écoulé depuis le 1 Janvier 1970
(époque UNIX).
 Syntaxe : Chaîne date(entier format, entier timestamp)
 L'argument timestamp est optionnel, s'il est vide, l'heure et la
date courante seront utilisées.
 Exemple:
echo date("d-m-Y"); // affiche : "12-12-2000"

Fonction Date
160

<?php
$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;
?>

80
04/03/2010

Fonction Date
161
 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

Gestion des fichiers


162

 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.
 Sa syntaxe est :
entier fopen(chaine nomdufichier, chaine mode);

81
04/03/2010

Gestion des fichiers


163

Différents modes disponibles


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).

Gestion des fichiers


164

Exemples :
$fp = fopen("[Link]","r"); //lecture
$fp = fopen(" [Link] ","w");
//écriture depuis début du fichier
$fp = fopen(« [Link]","a");
//écriture depuis fin du fichier

82
04/03/2010

Lecture dans un fichier


165

< ?php
$monfichier = fopen(‘’[Link]’’, ’’r’’) ; // ouverture en lecture
if ( !($monfichier)) {
print(« Impossible d’ouvrir le fichier ») ;
exit ;}
while ( !feof($monfichier) ) {
$ligne = fgets($monfichier,255); // 255 caractères max. ou bien
fin de ligne.
print ‘’ $ligne <BR> ‘’ ;
}
fclose ($monfichier) ;?>

Écriture dans un fichier


166

<?
$monFichier = fopen(‘’[Link]’’,’’ w’’) ; // ouverture en
écriture
if ( !($monfichier)) {
print(‘’ Impossible de créer le fichier \n’’) ;
exit ;
}
fputs($monfichier, ‘’ligne 1’’) ; // on écrit deux lignes
fputs($monfichier, ‘’ligne 2’’) ;

fclose($monfichier) ; // on ferme le fichier, on libère les ressources


?>

83
04/03/2010

Fichiers: Fscanf et fprint


 int fprintf ( resource handle , string format , mixed args )
 fprintf écrit la chaîne produite avec le format format dans le flôt
représenté par handle .

 mixed fscanf ( resource handle , string format , string var1)


 fscanf est similaire à sscanf , mais elle prend comme entrée un
fichier, associé à handle et l'interprète en fonction du format format .
 Si seulement deux paramètres sont passés à la fonction, les valeurs
analysées seront retournées sous forme de tableau.
 Si des arguments optionnels sont passés, la fonction retournera le
nombre de valeurs assignées.

Fichiers: Fscanf et fprint


 Exemple avec fscanf
<?php $handle = fopen ("[Link]","r");

while ($userinfo = fscanf ($handle, "%s\t%s\t%s\n"))

list ($name, $profession, $countrycode) = $userinfo;

fclose($handle);?>

84
04/03/2010

Fonction Explode
169

 Il est fréquent d’avoir des fichiers contenant différents


champs séparés par un délimiteur quelconque.

 Une fonction très utile dans ces cas là est la fonction


explode.
 Sa syntaxe est la suivante

explode (« caractère délimiteur », chaîne de donnée)

Fonction Explode
170

<?php
if (!file_exists(« [Link] »)) {
print "<H3><BR>Erreur, fichier compteur manquant<BR>";
exit;
} else {
$fd = fopen($fic,"r");
while (!feof($fd)) {
$ligne = fgets($fd,255);
$tab=explode("|",$ligne);
print "Nom : $tab[0]<br>";
print "Prénom : $tab[1]<br>";
print "Age : $tab[2]<br>« ;}
fclose($fd);
}?>

85
04/03/2010

Les requêtes SQL en PHP


171

 Introduction
 Connexion à la base de données
 Sélection de la base de données
 Exécution d'une requête
 Lecture des données
 Fermeture de la connexion

Introduction
172

 Après avoir installé une base de données Mysql sur un


serveur, le problème est de savoir comment l'utiliser.

 Les fonctions d'accès aux bases de données en PHP


sont très simples d'utilisation et permettent d'effectuer
toutes les opérations nécessaires à la maintenance de
la base.

86
04/03/2010

Connexion à la base de données


173

 La fonction mysql_connect(host,user,pass)" permet


d'établir une connexion avec le serveur Mysql et est
indispensable à toute communication avec celui-ci.

 Les paramètres requis sont les suivants :


- host : Adresse du serveur hébergeant la base de
données (en général : localhost)

Connexion à la base de données


174

- user : Nom de l'utilisateur de la base de données


- pass : Mot de passe de l'utilisateur

Cette fonction retourne l'identifiant de la connexion


au serveur Mysql.

87
04/03/2010

Connexion à la base de données


175

Ex :
$myhote="localhost";
$myuser="utilisateur";
$mypass="passeutilisateur";
$base_id = mysql_connect($myhote,
$myuser,$mypass);
if (!$base_id)
{
echo "Connexion à la base de données impossible
!";
}

Sélection de la base de données


176

 La fonction "mysql_select_db(base_name,base_id)"
permet de sélectionner la base de données que l'on
souhaite utiliser.
 les paramètres requis sont les suivants :
- base_name : Nom de la base de données
- base_id : Identifiant de la connexion au serveur
Mysql
cette fonction retourne "TRUE" en cas de succès,
"FALSE" sinon.

88
04/03/2010

Sélection de la base de données


177

Ex :
$mybase="perso";
if (!mysql_select_db("$mybase",$base_id))
{
echo "Impossible de sélectionner la base de données
!";
}

Exécution d'une requête


178

 Une fois l'accès à la base de données opérationnel,


il ne reste plus qu'à exécuter des requêtes sur celle-
ci.

 Ces requêtes sont adressées à la base à l'aide de


la fonction "mysql_query(query,base_id)".

 Les paramètres requis sont les suivants :


- query : Requête SQL

89
04/03/2010

Exécution d'une requête


179

- base_id : Identifiant de la connexion au serveur


Mysql

Cette fonction retourne "TRUE" en cas de succès,


"FALSE" sinon.

Exécution d'une requête


180

Ex :
$query="SELECT * FROM matable";
$resultat=mysql_query($query,$base_id);
if (!$resultat)
{
echo "Impossible d'exécuter la requête !";
}

90
04/03/2010

Lecture des données


181

 Après avoir exécuté un "SELECT" sur une table, il


faut ensuite pouvoir lire les données sélectionnées.

 La fonction "mysql_fetch_array(resul)" est la plus


utilisée pour cela. "resultat" est la valeur retournée
par "mysql_query".

Lecture des données


182

 Cette fonction retourne un tableau contenant les


valeurs de la ligne demandée.
 Ces valeurs peuvent être visualisées à l'aide
d'indices dans le tableau (à partir de 0) mais aussi,
ce qui est très pratique, à l'aide des noms des
champs.
 A chaque appel de la fonction, une nouvelle ligne
du résultat est lue.
 La fonction retourne "FALSE" si le résultat ne
contient aucune ligne et si la dernière ligne du
résultat a été lue.

91
04/03/2010

Lecture des données


183

Ex :
while ($ligne=mysql_fetch_array($resultat))
{
// Affichage d'une ligne
echo $ligne["champs1"];
echo $ligne["champs2"];
echo $ligne["champs3"];
}

Fermeture de la connexion
184

 La fonction "mysql_close(base_id)" permet de


fermer la connexion à la base de données.
 Cette fonction permet d'obtenir un code plus
"propre" mais n'est pas nécessaire car les
connexions sont automatiquement fermées à la fin
d'un script.

92
04/03/2010

Les requêtes MySQL


185

 Les requêtes sont une suite d'instructions permettant


de dialoguer avec une base de données.
 Les requêtes de création et de suppression de bases
de données et de tables sont très peu utilisées en PHP
car elle sont intégrées graphiquement à l'interface
PhpMyAdmin.
 En revanche, les requêtes d'exploitation des données
(lecture, ajout, suppression, modification) sont les plus
utilisées.

Lecture des données (SELECT)


186

 SELECT permet de sélectionner des informations à


partir d'une ou plusieurs tables de la base de
données.
Syntaxe : SELECT expression FROM table [options]

SELECT * FROM logiciels WHERE version>2 ORDER BY nom

93
04/03/2010

Ajout des données (INSERT)


187

 INSERT permet d'ajouter une nouvelle ligne dans une


table de la base de données.
Syntaxe : INSERT INTO table (champs) VALUES
(valeurs)

INSERT INTO logiciels (nom, version, taille) VALUES


('Webexpert 2000', '4', '120')

Suppression des données (DELETE)


188

 DELETE permet de supprimer une ligne dans une


table de la base de données.
Syntaxe : DELETE FROM table [WHERE expression]

DELETE FROM logiciels WHERE nom='Webexpert 2000'

94
04/03/2010

Modification des données (UPDATE)


189

 UPDATE permet de modifier une ligne dans une table


de la base de données.

Syntaxe : UPDATE table SET champs=valeur, ...


[WHERE expression]

UPDATE logiciels SET version='5' WHERE


nom='Webexpert 2000'

Formulaire (mail)
190

 Présentation
Ce script permet de saisir et d'envoyer un mail, grâce
à la fonction mail.
 Formulaire de saisie

Création du formulaire (exemple) contenant les


informations nécessaires à l'élaboration du mail.

95
04/03/2010

Formulaire (mail)
191

<FORM METHOD="post" ACTION="[Link]"


NAME="formulaire">
<BR>
Adresse E-mail de l'expéditeur
<BR>
<INPUT TYPE="text" NAME="email1" SIZE=30
MAXLENGTH=50>
<BR>

Formulaire (mail)
192

<BR>
Adresse E-mail du destinataire
<BR>
<INPUT TYPE="text" NAME="email2" SIZE=30
MAXLENGTH=50>
<BR>
<BR>
Titre du message

96
04/03/2010

Formulaire (mail)
193

<BR>
<INPUT TYPE="text" NAME="titre" SIZE=30
MAXLENGTH=50>
<BR>
<BR>
Message
<BR>
<TEXTAREA NAME="message" COLS=30 ROWS=6
WRAP="SOFT">
</TEXTAREA>
</FORM>

Formulaire (mail)
194

 Script permettant l'envoi du mail


Ce script récupère les données saisies dans le
formulaire et les envoie sous forme de mail. Une fois
l'envoi effectué, il redirige vers une page laissée à
votre convenance, dans cet exemple la page se
nomme [Link].

97
04/03/2010

Formulaire (mail)
195

 <?
$headers="From: ".$email1;
mail($email2,$titre,$message,$headers);
include "[Link]";
?>

Programmer avec les CGI

98
04/03/2010

Langages du Web - Côté serveur


CGI (Common Gateway Interface)
197

 CGI est une interface permettant l’exécution de programmes


externes par un serveur d’information de type HTTP.

 Une CGI permet de faire communiquer un serveur HTTP et un


programme pour générer d’une manière dynamique des
documents HTML.

 L’illustration la plus commune en est l’accès à une base de


données, celui-ci étant de plus en plus fait à l’aide de PHP ou
ASP.
 Mais l’interface CGI ne perd pas de son intérêt car elle permet
de faire communiquer n’importe quel programme binaire avec
le serveur Web.

Architecture CGI
198

99
04/03/2010

Architecture CGI
199

L’exécution du programme CGI par le serveur web se déroule en


trois phases :
1. Requête du client au serveur : le programme serveur récupère les
informations transmises par le navigateur, c’est-à-dire le nom du
programme CGI accompagné, le plus souvent, de paramètres saisis
par l’internaute dans un formulaire
2. Exécution du programme CGI : le serveur déclenche l’exécution
du programme CGI, en lui fournissant les paramètres reçus ci-dessus
3. Transmission du document HTML: le programme CGI renvoie le
résultat de son exécution au serveur sous la forme d’un fichier HTML,
le serveur se contentant alors de faire suivre au client.

Langages du Web - Côté serveur


CGI (Common Gateway Interface)
200

 Un programme CGI peut être écrit dans n’importe quel langage


ou du moins à peu près...pourvu que celui-ci soit:
– capable de lire le flux de données d’entrée
– capable de traiter des chaînes de caractères
– capable d’écrire sur le flux standard de sortie
– exécutable ou interprétable par le serveur

 Les langages de programmation les plus utilisés pour l’écriture


des CGI sont :
– Le langage Perl (majoritairement, car il est particulièrement adapté à la
manipulation de chaînes de caractères)
– Les langages C, C++
– Java

100
04/03/2010

Langages du Web - Côté serveur


CGI (Common Gateway Interface)
201

 Exemple :
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "Hello World";
ou
#!/bin/sh
echo Content-Type: text/html
echo
echo
echo Hello World
ou

Langages du Web - Côté serveur


CGI (Common Gateway Interface)
202

# main.c
int main() {
printf("Content-Type: text/html\n\n");
printf("Hello World");
return(0);
}
> gcc -o [Link] main.c

101
04/03/2010

Transmission du serveur au client


203

 Dans le cas où la requête d’un client se limite à


demander au serveur de lui fournir un fichier, le
serveur se base sur l’extension de ce fichier pour
déterminer son type.
 Conformément au protocole HTTP, il faut alors
transmettre ce type dans l’en-tête, avec la clause
Content-type: typeDocument, pour que le navigateur
sache comment décrypter les informations qui lui
proviennent par la suite.
 Pour un fichier HTML par exemple, l’extension est le
plus souvent .html, et la valeur de typeDocument est
text/html.

Transmission du serveur au client


204

 Dans le cas d’une communication CGI, le serveur reste


totalement neutre – il n’a pas d’extension de fichier sur
laquelle s’appuyer – et transmet tel quel au client le
résultat que lui fournit le programme CGI.
 Ce dernier doit prendre en charge l’en-tête du
document.
 Un début typique pour un programme CGI est donc
d’écrire l’en-tête d’un fichier HTML sur stdout. Par
exemple (langage C) :
printf ("Content-type: text/html\n\n");

102
04/03/2010

Exemple complet: formulaire


205

Le code du formulaire est :


<HTML><HEAD><TITLE> La page des exemples cours
HTML</TITLE></HEAD><BODY>
<P>Voici une forme qui fait appel à un script CGI :</P>
<FORM METHOD="POST" action= "../cgi-bin/EXCGI1"
NAME="TESTFORM">
<P>zone de texte à saisir : <INPUT TYPE="TEXT"
SIZE="20« NAME="T1"></p>
<P>bouton de commande : <INPUT TYPE="submit" NAME="B1"
VALUE="Envoyer"></P>
</FORM>
</BODY>
</HTML>");

Exemple complet: Script CGI en C


206

#include<stdio.h>
main()
{ printf("Content-type: text/html\n\n");
printf("<html>\n");
printf("<head><title>Mon premier script CGI
</title></head>\n");
printf("<body bgcolor=\"#FFFFFF\">\n");
printf("<br><br><br><br>\n");
printf("<center>\n");
printf("<h1>Salut à tous<br>voici mon premier script CGI</h1>\n");
printf("</center>\n");
printf("</body>\n");
printf("</html>\n");}

103
04/03/2010

Passage des paramètres


207

 Si vous utilisez un formulaire, le client transmet au serveur


chaque " name=valeur " du formulaire avec les convention de
base suivantes:
 tout en un seul "string"
 les caractères spéciaux sont traduits (par exemple l'espace en "+")
 name1=valeur&name2=valeur2&name3=valeur3
 L’envoi du formulaire se fera de façon différente selon qu’on
utilise une méthode post ou get :
 La méthode GET permet d'envoyer les éléments du formulaire au travers
de l'URL du script, en ajoutant l'ensemble des paires nom/valeur à l'URL
du script, séparé de celui-ci par un point d'interrogation, ce qui donne un
URL du type :
[Link]
bin/[Link]?champ1=valeur1&champ2=valeur2...

Passage des paramètres


208

 Toutefois, la longueur de la chaîne URL étant limitée à 255


caractères, les informations situées au-delà de cette limite seront
irrémédiablement perdues.
 De plus, cela crée une URL surchargée dans la barre d'adresse
d'un navigateur et peut dévoiler des informations sensibles comme
un mot de passe...
 La méthode POST est une bonne alternative à la méthode GET.
 Cette méthode code les informations de la même façon que la méthode
GET (encodage URL et paires nom/valeur)
 mais elle envoie les données à la suite des en-têtes HTTP, dans le corps de
la requête.
 De cette façon la quantité de données envoyées n'est plus limitée, et est
connue du serveur grâce à l'en-tête permettant de connaître la taille du
corps de la requête

104
04/03/2010

Passage des paramètres


209

 Si l'on a utilisé la méthode GET


#include <stdlib.h>
char *temp;
temp=getenv("QUERY_STRING");
 Si l'on a utilisé la méthode POST:
 on peut récupérer la chaîne de caractères transmise par le
serveur Web en lisant ces caractères un à un sur l'entrée
standard (stdin en C).
#include <stdio.h>
char temp[1024];
scanf("%s",temp);

Inconvénients
210

 Le passage des paramètres au programme est


relativement pénible à gérer, même si les nombreuses
fonctions existantes amoindrissent cet inconvénient.
 Faible intégration avec HTML
 La programmation CGI n’est pas une extension de HTML qui
permettrait de recourir à ce langage pour la partie des
pages qui correspond à du texte fixe.
 Au contraire, PHP s’intègre aux documents HTML et permet
de passer souplement d’un langage à un autre.

105
04/03/2010

Langages du Web - Côté serveur


CGI (Common Gateway Interface)
211

# main.c
int main() {
printf("Content-Type: text/html\n\n");
printf("Hello World");
return(0);
}
> gcc -o [Link] main.c

212

LES COOKIES

106
04/03/2010

Les cookies et HTTP


213

 Le protocole HTTP est un protocole sans mémoire, il ne retient


aucune information des précédentes requêtes
 il faut donc renvoyer toutes les informations d’une requête à
l’autre
 L’intérêt est qu’ainsi le serveur peut gérer beaucoup de
connexions différentes, ce qui serait vite impossible si les
connexions étaient permanentes
 Solution: Le mécanisme de stockage d’informations chez le client
pris en compte par le serveur à chaque accès

Les cookies
214

 Les cookies mémorisent dans un fichier sur le poste


client des informations
 la date et heure de votre visite,
 une réponse à un questionnaire que vous avez rempli sur le site visité,
 une information personnelle recueillie par le serveur,
 etc…
 Ils ont :
 validité dans le temps
 liées à un serveur

 Les cookies sont gérés par le navigateur

107
04/03/2010

Les cookies: exemple d’application


215

 Le compteur est une application courante de


cookie
 Chaque visite à une page W3 incrémente la
valeur d'un cookie lié à cette page
 De plus, il est possible de conserver la date et
heure de la dernière visite
 Il est ainsi possible de mesurer la fréquence
des visites et ainsi déduire vos habitudes de
consultation

Les cookies
216

 Initialisation d’un cookie par le serveur HTTP


 Il est positionné dans l’entête HTTP
Set-Cookie: Nom=Valeur; expires=Date;
path=Chemin;domain=NomDomaine; secure

108
04/03/2010

Les cookies
217

Nom le nom du « cookie »,Le champs est


obligatoire
Expires Date d’échéance du cookie.
Domaine le nom de l’ordinateur ou domaine qui a
déposé le « cookie ».
Path Association du cookie à un ensemble de
ressources
secure Utilisation d’une connexion client–
serveur sécurisée (protocole
HTTPS)

Les cookies
218

 Il existe deux méthodes de création ou dépôt de cookies


 La première consiste en une instruction de création de cookie
donnée à votre navigateur
 Cette instruction accompagne une réponse d'un serveur W3 à
une requête de document HTML

Votre
Serveur W3 ordinateur

109
04/03/2010

Les cookies
219

 La seconde consiste à exécuter des instructions de


création de cookies à l'aide d'un langage de
programmation encapsulé dans une page HTML
 Cette page ou document HTML est toujours une réponse
à une demande de document HTML.
Serveur W3 Votre
ordinateur

 Les cookies sont emmagasinés dans le ou les fichiers de


cookies

Utilisation des cookies


220

 à chaque requête de page HTML que vous faites,


votre navigateur vérifie:
 si un cookie existe (selon les paramètres de création du
cookie) pour :
 le domaine où réside la page demandée
 le serveur où réside la page demandée
 la page demandée
 Si un cookie répond à un de ces critères le navigateur donne
le cookie au serveur avec la requête de page HTML.
 Le serveur W3 peut alors faire un traitement
quelconque avec le cookie: statistique, donner une
page HTML particulière, etc.

110
04/03/2010

RESUME
221

 Lorsque le client établit une requête pour accéder à une


URL, il recherche parmi les cookies mémorisés ceux
s’appliquant au serveur/URL.

 La requête contient une ligne avec les paires


nom/valeur correspondantes :
 Cookie: Nom1=Valeur1; Nom2=Valeur2; ...

Les cookies
222

 Plusieurs directives Set-Cookie peuvent être insérées par le


serveur

 Un client peut mémoriser 300 cookies de taille maximale 4000


octets et 20 cookies par serveur

 Un cookie peut être effacé en spécifiant pour l’attribut expires


une date expirée.

 Un Cookie sans date expire à la “mort” du navigateur

111
04/03/2010

La protection de la vie privée et les « cookies »


223

 les informations que le serveur connaît lorsque que vous


demandez une page HTML, avec ou sans cookie:
 votre adresse IP, votre fournisseur de service
 le navigateur que vous utilisez, votre système d’exploitation

 la page d’où provient l’hyperlien que vous avez fait

 Les cookies ne permettent pas


 de savoir votre nom
 de connaître votre adresse de courrier

Les cookies
224

 Nous avons vu que les cookies sont des petites chaînes


de caractères déposés dans votre ordinateur.
 Des programmes, dont certains résident uniquement
sur votre ordinateur et d’autres uniquement sur le
serveur, écrivent et lisent ces cookies.
 Les cookies en eux-mêmes sont inoffensifs, on peut les
consulter et les détruire

112
04/03/2010

la jarre à biscuits dans votre ordinateur


225

 Pour Netscape, les cookies se trouvent dans un fichier


appelé [Link].
 Tout les cookies sont déposés dans ce fichier,
normalement ce fichier ce trouve dans le même
répertoire que Netscape.
 Le cas de Internet Explorer est différent, chaque cookie
est un fichier conservé dans le répertoire de la cache
d'Internet Explorer.

Cookies et PHP
226

 Pour la gestion des cookies, le langage PHP met à disposition la


fonction setcookie().
int setcookie ( string name [, string value [, int expire [,
string path [, string domain [, int secure]]]]])
 PHP envoi le cookie name avec la valeur value au navigateur
client.
 La date d'expiration expire du cookie doit être un précisée,
sinon le cookie est supprimé à la fin de la session.
 Le répertoire path indique les répertoires du site émetteur où le
cookie est actif.
 domain indique le nom de domaine émetteur.
 secure permet d'indiquer si le cookie doit être envoyé
uniquement à travers une connexion sécurisée.

113
04/03/2010

Exemples : Cookies et PHP


227

<?php setcookie('cookie_name', ‘salut', (time() +


3600)); ?>
// Envoi d'un cookie qui restera 1 mois
<?php setcookie( "Visites", "Oui", time()+2592000, "/",
".[Link]",0); ?>
// Envoi d'un cookie qui s'effacera le 1er janvier 2008
SetCookie("CcmAn2000","1",mktime(0,0,0,1,1,2008),
"/",".[Link]",0);

Lecture d'un cookie


228

<?php
echo $cookie_name;
echo $HTTP_COOKIE_VARS['cookie_name'];
echo $_COOKIE['cookie_name'];

?>

114
04/03/2010

Exemples
229

1- nombre de visites
<?php
$Visites++;
setcookie( "Visites", $Visites, time()+2592000, "/", ".[Link]",0); ?>
2- <?
setcookie("blob","Hello World");
print("<a href=[Link]>Click here</a>");
?>
--------------------------------------------
et une page [Link] avec ce code :
--------------------------------------------
<?
echo $HTTP_COOKIE_VARS["blob"];
?>

Suppression de cookies
230

<? setcookie("Visites"); ?>

115
04/03/2010

FIN ELEMENT DE MODULE

Annexe sur les E/S

116
04/03/2010

Les E/S : Printf et Sprint


 Chaque spécification de conversion est constituée d'un signe %
suivi d'un ou plusieurs des éléments suivants, dans cet ordre :

1. Un remplisseur optionnel qui indique quel caractère sera utilisé


pour compléter le résultat jusqu'à la longueur requise.
 Ca peut être le caractère d'espace, ou le caractère 0 .
 Par défaut, le remplissage se fait avec des espaces.
 Un autre caractère de remplissage peut être spécifié en le préfixant avec
un guillemet simple ( ' )

Les E/S : Printf et Sprint


2. Un spécificateur d'alignement qui indique si le résultat doit
être aligné à gauche ou à droite.
 Par défaut, le résultat est aligné à gauche.
 Le caractère - fera que le résultat est aligné à droite.
3. Un nombre optionnel, spécificateur de taille indique le
nombre minimum de caractères que cette conversion doit
fournir en résultat.
4. Un spécificateur de précision qui indique le nombre de
décimales qui doivent être affichées pour les nombres à
virgule flottante.
 Cette option n'a pas d'effet pour les autres types que float .

117
04/03/2010

Les E/S : Printf et Sprint


5. Un spécificateur de type qui indique le type avec lequel
l'argument sera traité. Plusieurs types possibles :
% - un caractère de pourcentage litéral.
b - un entier, et présenté comme un nombre binaire.
c - un entier, et présenté comme le caractère de code ASCII correspondant.
d - un entier, et présenté comme un nombre décimal signé.
U - un entier, et présenté comme un nombre décimal non signé.
f - un nombre à virgule flottante (type float).
o - un entier, et présenté comme un nombre octal.
s - une chaîne de caractères.
x - un entier, et présenté comme un nombre hexadécimal (les lettres en
minuscules).
X - un entier, et présenté comme un nombre hexadécimal (les lettres en
majuscules).

Les E/S : Exemple Printf


<?php $location="bananier";
$num=5; $format = "Il y a %d singes dans le %s";
printf($format,$num,$location);?>
afficher par exemple : "Il y a 5 signes dans le bananier".
 La chaîne de format peut être réécrite ainsi :
<?php $format = "Le %2\$s a %1\$d signes";
printf($format,$num,$location);?>
 Un des avantages: exploiter plusieurs fois les arguments sans les répéter.
<?php
$format = "Le %2\$s a %1\$d singes. C'est un beau %2\$s, avec %1\$d
signes.";
printf($format, $num, $location);?>

118
04/03/2010

E/S : Exemple Printf


<?php $n =43951789; $u = -43951789; $c = 65; // ASCII 65 est un 'A‘
printf("représentation binaire = '%b'<br>", $n);
printf("représentation asci = '%c'<br>", $c);
printf("représentation standard d'un entier = '%d'<br>", $n);
printf("notation scientifique= '%e'<br>", $n);
printf("représentation entière non signée d'un entier positif = '%u'<br>", $n);
printf("représentation entière non signée d'un entier négatif = '%u'<br>", $u);
printf("représentation en virgule flottante = '%f'<br>", $n);
printf("représentation octale = '%o'<br>", $n);
printf("représentation chaîne de caractères = '%s'<br>", $n);
printf("représentation hexadécimal (minuscule) = '%x'<br>", $n);
printf("représentation hexadécimal (majuscule) = '%X'<br>", $n);
printf("indication du signe pour un entier positif= '%+d'<br>", $n);
printf("indication du signe pour un entier négatif = '%-d'\n", $u);?>

Les E/S : Exemple Printf


<?php
$s = ‘VIRUS';
$t = ‘PLUSIEURS VIRUS';
printf("[%s]\n", $s); // affichage d'une chaîne standard
printf("[%10s]\n", $s); // justifi à droite avec des espaces
printf("[%-10s]\n", $s); // justif à gauche avec des espaces
printf("[%0-10s]\n", $s); // l'espacement nul+justif à gauche
printf("[%'#10s]\n", $s); // utilisation du caractère '#'
printf("[%10.10s]\n", $t); // justif à gauche, coupure à 10 caractères
?>

119
04/03/2010

Les E/S : Exemple Sprint


 sprint envoi les valeurs extraites dans les
variables indiquées:
$mandate = "January 01 2000";
list($month, $day, $year) = sprintf($mandate,
"%s %d %d");

Les E/S : Sscanf


 mixed sscanf ( string str , string format , string var1 )
 sscanf est l'inverse de la fonction printf .
 sscanf lit des données de la chaîne str , et l'interprète en fonction du
format format .
 Si seuls deux paramètres sont fournis, les valeurs trouvées seront
retournées sous forme de tableau.
 Sinon, les valeurs seront placées dans les arguments var1 var2 ...
 Exemple avec sscanf
<?php // Lecture d'un numéro de série
$serial = sscanf("SN/2350001","SN/%d");
$mandate = "January 01 2000"; // et la date de fabrication
echo "Le produit $serial a été fabriqué $mandate \n";?>

120
04/03/2010

Les E/S : Sscanf


 Tous les caractères blancs dans la chaîne format
correspondent à un caractère blanc dans la chaîne str
 Cela signifie que même une tabulation dans la chaîne
de format peut correspondre à un simple espace
dans la chaîne str.
 Si des paramètres optionnels sont passés, sscanf
retournera le nombre de valeurs assignées.

Les E/S : Sscanf


 Exemple:
<?php
$auth = "24 Lewis Carroll";
$n = sscanf($auth,"%d %s %s", &$id, &$first, &$last);
echo "<author id="$id"> <firstname>$first</firstname>
<surname>$last</surname></author>\n“;?>
 Exemple:

$mandate = "January 01 2000";


list($month, $day, $year) = sscanf($mandate, "%s %d %d");

121

Vous aimerez peut-être aussi