Vous êtes sur la page 1sur 64

PHP

LPRO ISVD Olivier Flauzac


Universit de Reims Champagne-Ardenne

olivier.auzac@univ-reims.fr http://cosy.univ-reims.fr/auzac

Olivier Flauzac (URCA)

LPRO ISVD

PHP

1 / 64

Plan
1

Programmation sur le WEB Sur le client Sur le serveur PHP ? Scripts PHP Les variables Structures de contrle Formulaires

2 3 4 5 6

Olivier Flauzac (URCA)

LPRO ISVD

PHP

2 / 64

Plan
1

Programmation sur le WEB Sur le client Sur le serveur PHP ? Scripts PHP Les variables Structures de contrle Formulaires

2 3 4 5 6

Olivier Flauzac (URCA)

LPRO ISVD

PHP

3 / 64

Principe du client serveur

Principe gnral
Excution bas sur un principe de "question / rponse"

Acteurs
Serveur
Systme dtenant des ressources particulire mises disposition

Client
Systme accdant des ressources

Olivier Flauzac (URCA)

LPRO ISVD

PHP

4 / 64

Excutions client/serveur
Principe
1 2 3 4 5 6

le client met une requte au serveur le serveur reoit la requte le serveur traite la requte le serveur envoie la rponse au client le client reoit la rponse le client exploite la rponse
1 6 2

Olivier Flauzac (URCA)

LPRO ISVD

PHP

5 / 64

Excution sur le WEB

Possibilits dexcutions
excution sur le serveur excution sur le client

Indpendance des excutions


pas daccs entre les mmoires
pas de lecture des tats entre client et serveur pas dinterfrences des excutions

Olivier Flauzac (URCA)

LPRO ISVD

PHP

6 / 64

Le HTML

Hypertext Markup Language


langage de description et de structuration de document exploitation de balises interprtation uniquement sur le client gestion de la mise en forme pas de calcul

Olivier Flauzac (URCA)

LPRO ISVD

PHP

7 / 64

Quelques balises 1/3

Structure de la page
<html> .. </html> <head> ... </head> <body> ... </body> dnition dun document en-tte du document corps dun document

Informations relatives la page <meta>


author keywords auteur de la page mot-cls de la page

Olivier Flauzac (URCA)

LPRO ISVD

PHP

8 / 64

Quelques balises 2/3


Texte
<p> ... </p> <ul> ... </ul> <ol> ... </ol> <li> ... </li> paragraphe liste non ordonne liste ordonne lment de liste

Insertions
<a href="..."> ... </a> <img src="..."/> lien hypertexte image

Sauts
<br/> <hr/> passage la ligne afchage dune ligne
LPRO ISVD PHP 9 / 64

Olivier Flauzac (URCA)

Quelques balises 3/3


Tableaux
<table> ... </table> <tr> ... </tr> <td> ... </td> dnition ligne dun tableau cellule dune ligne

Formulaires
<form ... > .. </form> <input type=".." name=".."/> <select name=".."> </select> <option> ... </option> dnition entre en ligne liste choix de liste

Sauts
<br/> <hr/> passage la ligne afchage dune ligne
LPRO ISVD PHP 10 / 64

Olivier Flauzac (URCA)

Exemple

<html > <head> < t i t l e > Ma Page </ t i t l e > </ head> <body> <h1> Ma Page WEB </ h1> <p> Ceci e s t ma page WEB </p> <ul > < l i > 1 </ l i > < l i > 2 </ l i > </ u l > </ body> </ html >

Olivier Flauzac (URCA)

LPRO ISVD

PHP

11 / 64

Serveurs WEB

Serveurs
IIS Apache

Possibilits dexcution
excutions externes
appel un programme extrieur au serveur

excutions gres par le serveur


ncessite lutilisation dun moteur associ au serveur

Olivier Flauzac (URCA)

LPRO ISVD

PHP

12 / 64

Excutions

Rsultats des excutions


traitement des informations collectes (formulaire) code HTML/javascript interprtable par le client excution de calcul accs des informations sur le serveur (chiers) accs des informations extrieures (bases de donnes)

Olivier Flauzac (URCA)

LPRO ISVD

PHP

13 / 64

Plan
1

Programmation sur le WEB Sur le client Sur le serveur PHP ? Scripts PHP Les variables Structures de contrle Formulaires

2 3 4 5 6

Olivier Flauzac (URCA)

LPRO ISVD

PHP

14 / 64

Un peu dhistoire

Versions successive
1994 cration par par Rasmus Lerdorf (bibliothque Perl) 1995 publication et diffusion de PHP/FI (Personal Home Page Tools/Form Interpreter) 1997 redveloppement du noyau par Andi Gutmans et Zeev Suraski, naissance du Zend Engine 1998 naissance de PHP 3 (Hypertext Preprocessor) 2004 sortie de PHP 5.0

Olivier Flauzac (URCA)

LPRO ISVD

PHP

15 / 64

Mise en uvre

Plateforme
existe sur toutes les plateformes ncessite :
un serveur WEB (Apache, IIS ...) un moteur PHP

Solutions logicielles
Linux : Apache + PHP disponible en standard Windows
IIS + PHP Apache + PHP EasyPHP (http://www.easyphp.org/)

Olivier Flauzac (URCA)

LPRO ISVD

PHP

16 / 64

Excution de script

Fonctionnement
code HTML pur non modi code PHP valu et interprt

Evaluation dune requte


1 2 3

rception de la requte par le serveur recherche du chier valuation et interprtation du chier


Cration dun chier rsultat virtuel ! pas de sauvegarde sur le disque du chier rsultat

envoie du chier virtuel au client

Olivier Flauzac (URCA)

LPRO ISVD

PHP

17 / 64

Test et excution de script

Accs aux scripts


ncessite le serveur WEB lanc ncessite une interprtation pas daccs par fichier ouvrir du navigateur accs par lurl :
http://server/chemin/page.php en test local http://localhost/chemin/page.php

Olivier Flauzac (URCA)

LPRO ISVD

PHP

18 / 64

Fonctionnement interne

Rsultat des valuations


HTML HTML Javascript Javascript PHP HTML PHP Javascript PHP contenu autre de text/html
image PDF ...

PHP rien dans le chier virtuel, un calcul est effectu

Olivier Flauzac (URCA)

LPRO ISVD

PHP

19 / 64

Plan
1

Programmation sur le WEB Sur le client Sur le serveur PHP ? Scripts PHP Les variables Structures de contrle Formulaires

2 3 4 5 6

Olivier Flauzac (URCA)

LPRO ISVD

PHP

20 / 64

Scripts

inclusion de script entre les balises <? et ?> (ou <?php et ?>) instructions termines par ; pas de limites aux zones de script
nombre taille

Olivier Flauzac (URCA)

LPRO ISVD

PHP

21 / 64

Exemple de script

Script PHP
<html > <head> < t i t l e > PHP </ t i t l e > </ head> <body> <p> 1 paragraphe </p> <? echo " <p> 2 paragraphe </p> " ; ?> <p> 3 <? echo " paragraphe </p> " ; ?> </ body> </ html >

Rsultat
<html> <head> < t i t l e > PHP < / t i t l e > < / head> <body> <p> 1 paragraphe < / p> <p> 2 paragraphe < / p> <p> 3 paragraphe < / p> < / body> < / html>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

22 / 64

Gnration

Afchage
echo print
v o i d echo ( s t r i n g arg1 [ , s t r i n g i n t p r i n t ( s t r i n g arg ) echo " Bonjour " ; print " Hello " ; ...] )

Olivier Flauzac (URCA)

LPRO ISVD

PHP

23 / 64

Commentaires

Types de commentaires
sur une ligne // ... sur plusieur lignes /* ... */
/ / un s i m p l e commentaire s u r une l i g n e / un commentaire s u r plusieurs lignes /

Olivier Flauzac (URCA)

LPRO ISVD

PHP

24 / 64

Exemple 1, script PHP


<html > <head>< t i t l e > PHP </ t i t l e > </ head> <body> <p> paragraphe f a i t en HTML </p> <? echo " <p> paragraphe f a i t en PHP </ p> " ; ?> </ body> </ html >

Exemple 1, rsultat
<html> <head>< t i t l e > PHP < / t i t l e >< / head> <body> <p> paragraphe f a i t en HTML < / p> <p> paragraphe f a i t en PHP < / p> < / body> < / html>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

25 / 64

Exemple 2, Script PHP


<html > <head> < t i t l e > PHP </ t i t l e > </ head> <body> <p> paragraphe f a i t en HTML </p> <? echo " <p> paragraphe f a i t en PHP </ p> " ; ?> <p> r e t o u r en HTML </p> <? echo " < s c r i p t language = \ " j a v a s c r i p t \ " > " ; echo " a l e r t ( \ " a l e r t f a i t en PHP \ " ) ; " ; echo " </ s c r i p t > " ; ?> </ body> </ html >

Olivier Flauzac (URCA)

LPRO ISVD

PHP

26 / 64

Exemple 2, rsultat
<html> <head> < t i t l e > PHP < / t i t l e > < / head> <body> <p> paragraphe f a i t en HTML < / p> <p> paragraphe f a i t en PHP < / p> <p> r e t o u r en HTML < / p> < s c r i p t language= " j a v a s c r i p t " > a l e r t ( " a l e r t f a i t en PHP" ) ; < / script> < / body> < / html>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

27 / 64

Exemple 3, script PHP


<? echo " <html ><head> \ n " ; echo " < t i t l e > \ n " ; ?> PHP </ t i t l e > </ head> <body> < t a b l e border=" 1 " > <? echo " < t r ><td > c e l l u l e 1 \ n " ; ?> </ td > </ t r > <? echo " </ t a b l e > \ n " ; ?> </ body> </ html >

Olivier Flauzac (URCA)

LPRO ISVD

PHP

28 / 64

Exemple 3, rsultat
<html><head> <title> PHP < / t i t l e > < / head> <body> < t a b l e border= " 1 " > < t r ><td> c e l l u l e 1 < / td>< / t r > < / table> < / body> < / html>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

29 / 64

Inclusion
Principe
inclusion en un point du code de
texte balis ou non rsultat dvluation

Inclusions possibles
chier HTML et Javascript chier PHP

Prototype
v o i d include ( s t r i n g r e s s o u r c e )

Olivier Flauzac (URCA)

LPRO ISVD

PHP

30 / 64

Inclusion, exemple 1

chier html inclus (fic.html)


<p> Bonjour < / p> <ul> < l i > elem 1 < / l i > < l i > elem 2 < / l i > < / ul>

chier php ralisant linclusion


<html> <head>< / head> <body> <? i n c l u d e " f i c . h t m l " ; ?> < / body> < / html>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

31 / 64

Inclusion, exemple 1

Rsultat
<html> <head>< / head> <body> <p> Bonjour < / p> <ul> < l i > elem 1 < / l i > < l i > elem 2 < / l i > < / ul> < / body> < / html>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

32 / 64

Inclusion, exemple 2
chier php inclus (fic.php)
<? echo " <p> H e l l o </ p> " ; echo " < h r / > " ; ?>

chier php ralisant linclusion


<html> <head>< / head> <body> <? i n c l u d e " f i c . php " ; ?> < / body> < / html>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

33 / 64

Inclusion, exemple 2

Rsultat
<html> <head>< / head> <body> <p> H e l l o < / p> <hr / > < / body> < / html>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

34 / 64

Plan
1

Programmation sur le WEB Sur le client Sur le serveur PHP ? Scripts PHP Les variables Structures de contrle Formulaires

2 3 4 5 6

Olivier Flauzac (URCA)

LPRO ISVD

PHP

35 / 64

Les variables

Variables en PHP
commence par un $ non types non dclares
$a $b $a $b = = = = 15; " hello " ; " salut " ; True ;

Olivier Flauzac (URCA)

LPRO ISVD

PHP

36 / 64

Les variables boolennes


Reprsentation des valeurs logiques
True False
$a = True ; $b = False ;

Oprations
galit, diffrence == , ===, != oprations logiques && , || ngation !

Olivier Flauzac (URCA)

LPRO ISVD

PHP

37 / 64

Boolens
Source PHP
$a = $b = echo echo True ; $a && False ; " <p> V a l e u r de a : $a </ p> " ; " <p> V a l e u r de b : $b </ p> " ;

Code HTML
<p> V a l e u r de a : 1 < / p> <p> V a l e u r de b : 0 < / p>

Conclusion !
True et False assimils 1 et 0 !
Olivier Flauzac (URCA) LPRO ISVD PHP 38 / 64

Les variables numriques

Reprsentation des nombres


entiers virgule
$a = 1 5 ; $b = 1 9 . 5 ;

Olivier Flauzac (URCA)

LPRO ISVD

PHP

39 / 64

Oprations numriques
Oprations
affectation : = oprations mathmatiques : +,-,/,*,%

Code PHP
$a = echo $b = echo $c = echo 15; " <p> a = $a </ p> " ; 19.5; " <p> b = $b </p> " ; $a + $b ; " <p> c = $c </ p> " ;

Code gnr
<p> a = 15 < / p> <p> b = 19.5 < / p> <p> c = 34.5 < / p>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

40 / 64

Comparaison
Comparaison
galit, diffrence : == , != ordre : >,<,>=,<=,

Code PHP
$a = echo $b = echo $c = echo 15; " <p> a 19.5; " <p> b ( $a == " <p> c = $a </ p> " ; = $b </ p> " ; $b ) ; = $c </ p> " ;

Code HTML
<p> a = 15 < / p> <p> b = 19.5 < / p> <p> c = 0 < / p>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

41 / 64

Chanes de caractres
Concatnation
utilisation du caractre .

Code PHP
$c1 = " Bonjour " ; $c2 = " t o u t l e monde " ; $c3 = $c1 . $c2 ; $c4 = " $c1 $c2 " ; echo " <p> c3 : $c3 </p> " ; echo " <p> c4 : $c4 </p> " ;

Code HTML
<p> c3 : Bonjour t o u t l e monde < / p> <p> c4 : Bonjour t o u t l e monde < / p>
Olivier Flauzac (URCA) LPRO ISVD PHP 42 / 64

Comparaison de chanes
utilisation de linstruction strcmp
i n t strcmp ( s t r i n g s t r 1 , s t r i n g s t r 2 )

Code PHP
$a = strcmp ( " s a l u t " , " Bonjour " ) ; echo " <p> comparaison : $a </p> " ;

Code HTML
<p> comparaison : 0 < / p>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

43 / 64

Tableaux en PHP

Tableaux
pas de dclaration obligatoire htrognes dynamiques

Olivier Flauzac (URCA)

LPRO ISVD

PHP

44 / 64

Cration de tableaux

Cration implicite
implicite :
$tab [ 0 ] = 1 5 ; $tab [ 1 ] = " Bonjour " ; $tab [ 7 ] = 564;

explicite :
$tab1 = array ( ) ; $tab2 = array ( 1 5 , " Bonjour " , 5 6 4 ) ;

Olivier Flauzac (URCA)

LPRO ISVD

PHP

45 / 64

Fonctions associes aux tableaux

Quelques fonctions
taille du tableau : count
i n t count ( mixed v a r [ , i n t mode ] ) $ t a i l l e = count ( $tab ) ;

ajout dlment
$tab [ count ( $tab ) ] = 1 5 ; $tab [ ] = 1 6 ;

Olivier Flauzac (URCA)

LPRO ISVD

PHP

46 / 64

Plan
1

Programmation sur le WEB Sur le client Sur le serveur PHP ? Scripts PHP Les variables Structures de contrle Formulaires

2 3 4 5 6

Olivier Flauzac (URCA)

LPRO ISVD

PHP

47 / 64

Diffrentes structures

Structures itratives
while , do...while for

Structures alternatives
if , if ... else switch

Olivier Flauzac (URCA)

LPRO ISVD

PHP

48 / 64

while
Prototype
while ( c o n d i t i o n ) { ... }

Code PHP
$ i =0; echo " < u l > " ; while ( $ i < 5 ) { echo " < l i > i : $ i </ l i > " ; $ i ++; } echo " </ u l > " ;
Olivier Flauzac (URCA) LPRO ISVD

Code HTML
<ul> <li> i <li> i <li> i <li> i <li> i < / ul> : : : : : 0 1 2 3 4 </ </ </ </ </ li> li> li> li> li>

PHP

49 / 64

for
Prototype
f o r ( i n i t , cond , i n c r ) { ... }

Script PHP
echo " < u l > " ; f o r ( $ i =0; $ i <5; $ i + + ) { echo " < l i > i : $ i </ l i > " ; } echo " </ u l > " ;

Code HTML
<ul> <li> i <li> i <li> i <li> i <li> i < / ul> : : : : : 0 1 2 3 4 </ </ </ </ </ li> li> li> li> li>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

50 / 64

if
Prototype
i f ( cond ) { ... }

Code PHP
$ i =0; i f ( $i <10){ echo " <p> i < 10 </ p> " ; }

Code HTML
<p> i < 10 </p>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

51 / 64

if ... else
Prototype
i f ( cond ) { ... } else { ... }

Code PHP
$ i =0; i f ( $i <10){ echo " <p> i < 10 </p> " ; } else { echo " <p> i >= 10 </p> " ; }

Code HTML
<p> i < 10 </p>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

52 / 64

Parcours de tableaux avec un for


Code PHP
$tab = array ( 1 , 2 , " h e l l o " , 4 5 ) ; f o r ( $ i =0; $ i <count ( $tab ) ; $ i + + ) { echo " <p> t a b [ $ i ] = $tab [ $ i ] < / p> " ; }

Code HTML gnr


<p> <p> <p> <p> tab [ 0 ] tab [ 1 ] tab [ 2 ] tab [ 3 ] = = = = 1 < / p> 2 < / p> h e l l o < / p> 45 < / p>

Olivier Flauzac (URCA)

LPRO ISVD

PHP

53 / 64

Plan
1

Programmation sur le WEB Sur le client Sur le serveur PHP ? Scripts PHP Les variables Structures de contrle Formulaires

2 3 4 5 6

Olivier Flauzac (URCA)

LPRO ISVD

PHP

54 / 64

Principe

Les acteurs
la client
zone de formulaire HTML collecte dinformations envoie des informations au serveur

le serveur
traitement des informations reues

Transfert des informations


POST GET

Olivier Flauzac (URCA)

LPRO ISVD

PHP

55 / 64

POST et GET
Mthode POST
mthode de transfert dinformations du client au serveur donnes incluses dans la requte HTTP

Mthode GET
mthode de transfert dinformations du client au serveur donnes ajoutes la requte HTTP construction
adresse du script de traitement caractre ? triplet nom du champ , = , valeur sparation des triplets avec le caractre &
h t t p : / / www. monsite . f r / form1 . php? t 1 = o l i v i e r &t 2 = f l a u z a c

Olivier Flauzac (URCA)

LPRO ISVD

PHP

56 / 64

Formulaires HTML
Dnition
balise form commutateurs
name action method

Champs
utilisation des commutateurs name des champs input
text, password submit, button, reset radio, checkbox hidden
Olivier Flauzac (URCA) LPRO ISVD

textarea select
simple multiple

PHP

57 / 64

Accs aux donnes

$register_globals
$register_globals = On
cration dune variable pour chaque champ utilisation des tableaux globaux $_POST, $_GET, $_REQUEST pas de diffrenciation sur la mthode de transmission

$register_globals = Off
utilisation des tableaux globaux $_POST, $_GET, $_REQUEST diffrenciation possible de la mthode de transmission

Olivier Flauzac (URCA)

LPRO ISVD

PHP

58 / 64

Entre de texte

Balises
textarea
< t e x t a r e a name=" t " > votre texte i c i </ t e x t a r e a >

input
text
< i n p u t t y p e =" t e x t " name=" t " / >

password
< i n p u t t y p e =" password " name=" p " / >

Olivier Flauzac (URCA)

LPRO ISVD

PHP

59 / 64

Entre de texte : la page HTML


La mthode POST
<html > <head > </ head> <body> <form name=" f " a c t i o n =" form1 . php " method ="POST" > < i n p u t t y p e =" t e x t " name=" t 1 " / > < t e x t a r e a name=" t 2 " > v o t r e t e x t e i c i </ t e x t a r e a > < i n p u t t y p e =" submit " v a l u e =" c l i c k " / > </ form > </ body> </ html >

La requte
h t t p : / / www. monsite . f r / form1 . php

Olivier Flauzac (URCA)

LPRO ISVD

PHP

60 / 64

Scripts de traitement

Accs direct aux donnes transmises


<html > <head > </ head> <body> <? echo " <p > " . $_POST [ " t 1 " ] . " < / p > " ; echo " <p > " . $_POST [ " t 2 " ] . " < / p > " ; ?> </ body> </ html >

Enregistrement des donnes transmises


<? $ t 1 = $_POST [ " t 1 " ] ; $ t 2 = $_POST [ " t 2 " ] ; ?> <html > <head > </ head> <body> <? echo " <p> $ t 1 </p > " ; echo " <p> $ t 2 </p > " ; ?> </ body> </ html >

Olivier Flauzac (URCA)

LPRO ISVD

PHP

61 / 64

Entre de texte : la page HTML


La mthode GET
<html > <head > </ head> <body> <form name=" f " a c t i o n =" form1 . php " method ="GET" > < i n p u t t y p e =" t e x t " name=" t 1 " / > < t e x t a r e a name=" t 2 " > v o t r e t e x t e i c i </ t e x t a r e a > < i n p u t t y p e =" submit " v a l u e =" c l i c k " / > </ form > </ body> </ html >

La requte
h t t p : / / www. monsite . f r / form1 . php? t 1 =aaa&t 2 =bbbbb

Olivier Flauzac (URCA)

LPRO ISVD

PHP

62 / 64

Scripts de traitement

Accs direct aux donnes transmises


<html > <head > </ head> <body> <? echo " <p > " . $_GET [ " t 1 " ] . " < / p > " ; echo " <p > " . $_GET [ " t 2 " ] . " < / p > " ; ?> </ body> </ html >

Enregistrement des donnes transmises


<? $ t 1 = $_GET [ " t 1 " ] ; $ t 2 = $_GET [ " t 2 " ] ; ?> <html > <head > </ head> <body> <? echo " <p> $ t 1 </p > " ; echo " <p> $ t 2 </p > " ; ?> </ body> </ html >

Olivier Flauzac (URCA)

LPRO ISVD

PHP

63 / 64

Scripts de traitement

Accs direct aux donnes transmises


<html > <head > </ head> <body> <? echo " <p > " .$_REQUEST [ " t 1 " ] . " < / p > " ; echo " <p > " .$_REQUEST [ " t 2 " ] . " < / p > " ; ?> </ body> </ html >

Enregistrement des donnes transmises


<? $ t 1 = $_REQUEST [ " t 1 " ] ; $ t 2 = $_REQUEST [ " t 2 " ] ; ?> <html > <head > </ head> <body> <? echo " <p> $ t 1 </p > " ; echo " <p> $ t 2 </p > " ; ?> </ body> </ html >

Olivier Flauzac (URCA)

LPRO ISVD

PHP

64 / 64

Vous aimerez peut-être aussi