64
 PHP LPRO ISVD Olivier Flauzac Université de Reims Champagne-Ardenne olivier.[email protected] http://cosy.univ-reims.fr/auzac Olivier Flauzac (URCA)  LPRO ISVD  PHP 1 / 64

COURS php

Embed Size (px)

Citation preview

PHPLPRO ISVD Olivier FlauzacUniversit de Reims Champagne-Ardenne

[email protected] http://cosy.univ-reims.fr/auzac

Olivier Flauzac (URCA)

LPRO ISVD

PHP

1 / 64

Plan1

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

Plan1

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 gnralExcution bas sur un principe de "question / rponse"

ActeursServeurSystme dtenant des ressources particulire mises disposition

ClientSystme accdant des ressources

Olivier Flauzac (URCA)

LPRO ISVD

PHP

4 / 64

Excutions client/serveurPrincipe1 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 rponse1 6 2

3

5

4

Olivier Flauzac (URCA)

LPRO ISVD

PHP

5 / 64

Excution sur le WEB

Possibilits dexcutionsexcution sur le serveur excution sur le client

Indpendance des excutionspas daccs entre les mmoirespas de lecture des tats entre client et serveur pas dinterfrences des excutions

Olivier Flauzac (URCA)

LPRO ISVD

PHP

6 / 64

Le HTML

Hypertext Markup Languagelangage 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 .. ... ... dnition dun document en-tte du document corps dun document

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

Olivier Flauzac (URCA)

LPRO ISVD

PHP

8 / 64

Quelques balises 2/3Texte ...

  • ...

... ... paragraphe liste non ordonne liste ordonne lment de liste

Insertions ... lien hypertexte image

Sauts
passage la ligne afchage dune ligneLPRO ISVD PHP 9 / 64

Olivier Flauzac (URCA)

Quelques balises 3/3Tableaux ... ... ... dnition ligne dun tableau cellule dune ligne

Formulaires .. ... dnition entre en ligne liste choix de liste

Sauts
passage la ligne afchage dune ligneLPRO ISVD PHP 10 / 64

Olivier Flauzac (URCA)

Exemple

< t i t l e > Ma Page Ma Page WEB Ceci e s t ma page WEB

  • < l i > 1 < l i > 2

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    11 / 64

    Serveurs WEB

    ServeursIIS Apache

    Possibilits dexcutionexcutions externesappel un programme extrieur au serveur

    excutions gres par le serveurncessite lutilisation dun moteur associ au serveur

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    12 / 64

    Excutions

    Rsultats des excutionstraitement 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

    Plan1

    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 successive1994 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

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

    Solutions logiciellesLinux : Apache + PHP disponible en standard WindowsIIS + PHP Apache + PHP EasyPHP (http://www.easyphp.org/)

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    16 / 64

    Excution de script

    Fonctionnementcode HTML pur non modi code PHP valu et interprt

    Evaluation dune requte1 2 3

    rception de la requte par le serveur recherche du chier valuation et interprtation du chierCration dun chier rsultat virtuel ! pas de sauvegarde sur le disque du chier rsultat

    4

    envoie du chier virtuel au client

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    17 / 64

    Test et excution de script

    Accs aux scriptsncessite 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 valuationsHTML HTML Javascript Javascript PHP HTML PHP Javascript PHP contenu autre de text/htmlimage PDF ...

    PHP rien dans le chier virtuel, un calcul est effectu

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    19 / 64

    Plan1

    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 (ou ) instructions termines par ; pas de limites aux zones de scriptnombre taille

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    21 / 64

    Exemple de script

    Script PHP < t i t l e > PHP 1 paragraphe 3

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

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    22 / 64

    Gnration

    Afchageecho printv 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 commentairessur 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 < t i t l e > PHP paragraphe f a i t en HTML

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

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    25 / 64

    Exemple 2, Script PHP < t i t l e > PHP paragraphe f a i t en HTML r e t o u r en HTML

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    26 / 64

    Exemple 2, rsultat < t i t l e > PHP < / t i t l e > < / head> paragraphe f a i t en HTML < / p> paragraphe f a i t en PHP < / 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 PHP < t a b l e border=" 1 " >

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    28 / 64

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

    Olivier Flauzac (URCA)

    LPRO ISVD

    PHP

    29 / 64

    InclusionPrincipeinclusion en un point du code detexte balis ou non rsultat dvluation

    Inclusions possibleschier HTML et Javascript chier PHP

    Prototypev 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) Bonjour < / p>

    • < l i > elem 1 < / l i > < l i > elem 2 < / l i > < / ul>

      chier php ralisant linclusion < / head> < / body> < / html>

      Olivier Flauzac (URCA)

      LPRO ISVD

      PHP

      31 / 64

      Inclusion, exemple 1

      Rsultat < / head> Bonjour < / p>

      • < 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 2chier php inclus (fic.php)

        chier php ralisant linclusion < / head> < / body> < / html>

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        33 / 64

        Inclusion, exemple 2

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

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        34 / 64

        Plan1

        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 PHPcommence par un $ non types non dclares$a $b $a $b = = = = 15; " hello " ; " salut " ; True ;

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        36 / 64

        Les variables boolennesReprsentation des valeurs logiquesTrue False$a = True ; $b = False ;

        Oprationsgalit, diffrence == , ===, != oprations logiques && , || ngation !

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        37 / 64

        BoolensSource PHP$a = $b = echo echo True ; $a && False ; " V a l e u r de a : $a " ; " V a l e u r de b : $b " ;

        Code HTML V a l e u r de a : 1 < / 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 nombresentiers virgule$a = 1 5 ; $b = 1 9 . 5 ;

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        39 / 64

        Oprations numriquesOprationsaffectation : = oprations mathmatiques : +,-,/,*,%

        Code PHP$a = echo $b = echo $c = echo 15; " a = $a " ; 19.5; " b = $b " ; $a + $b ; " c = $c " ;

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

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        40 / 64

        ComparaisonComparaisongalit, diffrence : == , != ordre : >,=, b = 19.5 < / p> c = 0 < / p>

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        41 / 64

        Chanes de caractresConcatnationutilisation du caractre .

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

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

        Comparaison de chanesutilisation de linstruction strcmpi 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 " comparaison : $a " ;

        Code HTML comparaison : 0 < / p>

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        43 / 64

        Tableaux en PHP

        Tableauxpas de dclaration obligatoire htrognes dynamiques

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        44 / 64

        Cration de tableaux

        Cration impliciteimplicite :$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 fonctionstaille du tableau : counti 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

        Plan1

        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 itrativeswhile , do...while for

        Structures alternativesif , if ... else switch

        Olivier Flauzac (URCA)

        LPRO ISVD

        PHP

        48 / 64

        whilePrototypewhile ( c o n d i t i o n ) { ... }

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

        Code HTML

        • i
        • i
        • i
        • i
        • i < / ul> : : : : : 0 1 2 3 4

          PHP

          49 / 64

          forPrototypef o r ( i n i t , cond , i n c r ) { ... }

          Script PHPecho " < u l > " ; f o r ( $ i =0; $ i : : : : : 0 1 2 3 4

          Olivier Flauzac (URCA)

          LPRO ISVD

          PHP

          50 / 64

          ifPrototypei f ( cond ) { ... }

          Code PHP$ i =0; i f ( $i 2 < / p> h e l l o < / p> 45 < / p>

          Olivier Flauzac (URCA)

          LPRO ISVD

          PHP

          53 / 64

          Plan1

          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 acteursla clientzone de formulaire HTML collecte dinformations envoie des informations au serveur

          le serveurtraitement des informations reues

          Transfert des informationsPOST GET

          Olivier Flauzac (URCA)

          LPRO ISVD

          PHP

          55 / 64

          POST et GETMthode POSTmthode de transfert dinformations du client au serveur donnes incluses dans la requte HTTP

          Mthode GETmthode de transfert dinformations du client au serveur donnes ajoutes la requte HTTP constructionadresse 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 HTMLDnitionbalise form commutateursname action method

          Champsutilisation des commutateurs name des champs inputtext, password submit, button, reset radio, checkbox hiddenOlivier Flauzac (URCA) LPRO ISVD

          textarea selectsimple multiple

          PHP

          57 / 64

          Accs aux donnes

          $register_globals$register_globals = Oncration 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

          Balisestextarea< t e x t a r e a name=" t " > votre texte i c i

          inputtext< 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 HTMLLa mthode 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 < i n p u t t y p e =" submit " v a l u e =" c l i c k " / >

          La requteh 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

          Enregistrement des donnes transmises

          Olivier Flauzac (URCA)

          LPRO ISVD

          PHP

          61 / 64

          Entre de texte : la page HTMLLa mthode 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 < i n p u t t y p e =" submit " v a l u e =" c l i c k " / >

          La requteh 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

          Enregistrement des donnes transmises

          Olivier Flauzac (URCA)

          LPRO ISVD

          PHP

          63 / 64

          Scripts de traitement

          Accs direct aux donnes transmises

          Enregistrement des donnes transmises

          Olivier Flauzac (URCA)

          LPRO ISVD

          PHP

          64 / 64