Professional Documents
Culture Documents
Nicolas Stroppa
stroppa@enst.fr Brique AWEB
30 mars 2005
Nicolas Stroppa
Plan
1
Introduction Rappels sur le protocole HTTP, le langage HTML, et les URL Les pages dynamiques : une ncessit Principes et exemples de pages dynamiques Linteraction Serveur Programme Exemples dutilisation Suivi de connexion Les champs cachs Les cookies Les sessions en PHP
Nicolas Stroppa
-2-
Plan
1
Introduction Rappels sur le protocole HTTP, le langage HTML, et les URL Les pages dynamiques : une ncessit Principes et exemples de pages dynamiques Linteraction Serveur Programme Exemples dutilisation Suivi de connexion Les champs cachs Les cookies Les sessions en PHP
Nicolas Stroppa
-3-
Le Web
Doit sa naissance Tim Berners-Lee (n annes 80) Est standardis par le World Wide Web Consortium (W3C) http://www.w3.org/
Nicolas Stroppa
-4-
Le protocole HTTP
Interaction entre un client et un serveur web
Protocole HTTP
requte
Client
rponse
(code rponse + en-tte + contenu)
Serveur
access_log error_log
Nicolas Stroppa
-5-
HTTP = HyperText Transfer Protocol HTTP est un protocole ax question/rponse (connexion unique, sans tat, mode pull ) Un change HTTP = requte(s) de la part dun client (e.g. demande de page HTML), puis rponse(s) du serveur. Les requtes et rponses sont de la forme : en-tte + corps
Nicolas Stroppa
-6-
Le protocole HTTP
En-ttes (headers)
Requte : mthode, URL demand, type de client, jeu de caractres attendu par le client, . . . Rponse : type du contenu, date de dbut de transfert, . . .
Mthodes principales
Commande GET : rcupration dun document Commande POST : envoi de donnes un programme
tricatel -> cours_aweb: telnet www.infres.enst.fr 80 Trying 137.194.160.20... Connected to infres2-160.enst.fr. Escape character is ^]. HEAD /index.html HTTP/1.0 HTTP/1.1 200 OK Date: Fri, 05 Nov 2004 18:49:45 GMT Server: Apache/1.3.22 (Unix) PHP/3.0.15 PHP/4.1.0 Connection: close Content-Type: text/html Connection closed by foreign host.
Nicolas Stroppa
-7-
Les URL
Les URL (Uniform Resource Locator) sont composes dun protocole (http, ftp, mailto, file) dun sparateur (:) et dune chane propre au protocole (//www.enst.fr) http://www.enst.fr Une URL permet didentier de faon unique un document sur Internet (protocole + chemin complet du chier)
Nicolas Stroppa
-8-
Le langage HTML
Utilise des liens hypertextes, i.e. liens entre documents, laide de la notion dURL
Inclusion dune image : <img src="http://toto.com/Images/carte.gif" /> Lien vers un autre document : <a href="/~toto/index.html">La page de Toto</a>
Nicolas Stroppa
-9-
Le langage HTML
Permet dintragir avec un site web laide de formulaire de saisie. On englobe le formulaire dans : <form method="mthode" action="action"> formulaire</form> Un lment de saisie : <input type="type" name="nom" size="taille" /> (type = text, password, hidden, le, image, checkbox, radio, submit, reset) Une liste doptions : <select name="nom"><option>option1</option> <option>option2</option></select>
Nicolas Stroppa
- 10 -
Inconvnients :
contenu vieillissant trs rapidement pas dinteractivit possible
Inconvnients :
problmes de scurit accs plus lent (traitement des requtes) erreurs lexcution possibles
Nicolas Stroppa Introduction au Web dynamique - 11 -
Inconvnients :
contenu vieillissant trs rapidement pas dinteractivit possible
Inconvnients :
problmes de scurit accs plus lent (traitement des requtes) erreurs lexcution possibles
Nicolas Stroppa Introduction au Web dynamique - 12 -
Inconvnients :
contenu vieillissant trs rapidement pas dinteractivit possible
Inconvnients :
problmes de scurit accs plus lent (traitement des requtes) erreurs lexcution possibles
Nicolas Stroppa Introduction au Web dynamique - 13 -
Inconvnients :
contenu vieillissant trs rapidement pas dinteractivit possible
Inconvnients :
problmes de scurit accs plus lent (traitement des requtes) erreurs lexcution possibles
Nicolas Stroppa Introduction au Web dynamique - 14 -
Inconvnients :
contenu vieillissant trs rapidement pas dinteractivit possible
Inconvnients :
problmes de scurit accs plus lent (traitement des requtes) erreurs lexcution possibles
Nicolas Stroppa Introduction au Web dynamique - 15 -
Inconvnients :
problmes de scurit et de compatibilit
Inconvnients :
problmes de scurit toujours . . .
Nicolas Stroppa
- 16 -
Inconvnients :
problmes de scurit et de compatibilit
Inconvnients :
problmes de scurit toujours . . .
Nicolas Stroppa
- 17 -
Inconvnients :
problmes de scurit et de compatibilit
Inconvnients :
problmes de scurit toujours . . .
Nicolas Stroppa
- 18 -
Inconvnients :
problmes de scurit et de compatibilit
Inconvnients :
problmes de scurit toujours . . .
Nicolas Stroppa
- 19 -
Inconvnients :
problmes de scurit et de compatibilit
Inconvnients :
problmes de scurit toujours . . .
Nicolas Stroppa
- 20 -
Plan
1
Introduction Rappels sur le protocole HTTP, le langage HTML, et les URL Les pages dynamiques : une ncessit Principes et exemples de pages dynamiques Linteraction Serveur Programme Exemples dutilisation Suivi de connexion Les champs cachs Les cookies Les sessions en PHP
Nicolas Stroppa
- 21 -
CGI requte
(paramtres)
Client
rponse
(code rponse + en- tte + contenu)
Serveur
rponse
(en-tte + contenu + erreurs)
Programme CGI
access_log error_log
Nicolas Stroppa
- 22 -
requte
Client
(paramtres)
Serveur
(en-tte + contenu + erreurs)
access_log error_log
rponse
(code rponse + en-tte + contenu)
module interne
Nicolas Stroppa
- 23 -
Fonctionnement de linterface
1
Le client passe des arguments au serveur HTTP, sous la forme dune chane de caractres reprsentant une liste de paires cl-valeur. Exemple : nom=Dupont&prenom=Jacques&age=47. Le serveur rceptionne les donnes et les transmet au programme/module. Le programme :
1
sexcute dans lenvironnement du serveur (= peut accder certaines variables) traite la requte et renvoie :
sur la sortie standard : len-tte + le contenu (php : seulement le contenu) sur la sortie derreur : les ventuels messages derreurs
Le serveur :
renvoie la rponse (en-tte + contenu) au client archive au besoin les messages derreurs
Nicolas Stroppa Introduction au Web dynamique - 24 -
Fonctionnement de linterface
1
Le client passe des arguments au serveur HTTP, sous la forme dune chane de caractres reprsentant une liste de paires cl-valeur. Exemple : nom=Dupont&prenom=Jacques&age=47. Le serveur rceptionne les donnes et les transmet au programme/module. Le programme :
1
sexcute dans lenvironnement du serveur (= peut accder certaines variables) traite la requte et renvoie :
sur la sortie standard : len-tte + le contenu (php : seulement le contenu) sur la sortie derreur : les ventuels messages derreurs
Le serveur :
renvoie la rponse (en-tte + contenu) au client archive au besoin les messages derreurs
Nicolas Stroppa Introduction au Web dynamique - 25 -
Fonctionnement de linterface
1
Le client passe des arguments au serveur HTTP, sous la forme dune chane de caractres reprsentant une liste de paires cl-valeur. Exemple : nom=Dupont&prenom=Jacques&age=47. Le serveur rceptionne les donnes et les transmet au programme/module. Le programme :
1
sexcute dans lenvironnement du serveur (= peut accder certaines variables) traite la requte et renvoie :
sur la sortie standard : len-tte + le contenu (php : seulement le contenu) sur la sortie derreur : les ventuels messages derreurs
Le serveur :
renvoie la rponse (en-tte + contenu) au client archive au besoin les messages derreurs
Nicolas Stroppa Introduction au Web dynamique - 26 -
Fonctionnement de linterface
1
Le client passe des arguments au serveur HTTP, sous la forme dune chane de caractres reprsentant une liste de paires cl-valeur. Exemple : nom=Dupont&prenom=Jacques&age=47. Le serveur rceptionne les donnes et les transmet au programme/module. Le programme :
1
sexcute dans lenvironnement du serveur (= peut accder certaines variables) traite la requte et renvoie :
sur la sortie standard : len-tte + le contenu (php : seulement le contenu) sur la sortie derreur : les ventuels messages derreurs
Le serveur :
renvoie la rponse (en-tte + contenu) au client archive au besoin les messages derreurs
Nicolas Stroppa Introduction au Web dynamique - 27 -
Fonctionnement de linterface
1
Le client passe des arguments au serveur HTTP, sous la forme dune chane de caractres reprsentant une liste de paires cl-valeur. Exemple : nom=Dupont&prenom=Jacques&age=47. Le serveur rceptionne les donnes et les transmet au programme/module. Le programme :
1
sexcute dans lenvironnement du serveur (= peut accder certaines variables) traite la requte et renvoie :
sur la sortie standard : len-tte + le contenu (php : seulement le contenu) sur la sortie derreur : les ventuels messages derreurs
Le serveur :
renvoie la rponse (en-tte + contenu) au client archive au besoin les messages derreurs
Nicolas Stroppa Introduction au Web dynamique - 28 -
Fonctionnement de linterface
1
Le client passe des arguments au serveur HTTP, sous la forme dune chane de caractres reprsentant une liste de paires cl-valeur. Exemple : nom=Dupont&prenom=Jacques&age=47. Le serveur rceptionne les donnes et les transmet au programme/module. Le programme :
1
sexcute dans lenvironnement du serveur (= peut accder certaines variables) traite la requte et renvoie :
sur la sortie standard : len-tte + le contenu (php : seulement le contenu) sur la sortie derreur : les ventuels messages derreurs
Le serveur :
renvoie la rponse (en-tte + contenu) au client archive au besoin les messages derreurs
Nicolas Stroppa Introduction au Web dynamique - 29 -
Fonctionnement de linterface
1
Le client passe des arguments au serveur HTTP, sous la forme dune chane de caractres reprsentant une liste de paires cl-valeur. Exemple : nom=Dupont&prenom=Jacques&age=47. Le serveur rceptionne les donnes et les transmet au programme/module. Le programme :
1
sexcute dans lenvironnement du serveur (= peut accder certaines variables) traite la requte et renvoie :
sur la sortie standard : len-tte + le contenu (php : seulement le contenu) sur la sortie derreur : les ventuels messages derreurs
Le serveur :
renvoie la rponse (en-tte + contenu) au client archive au besoin les messages derreurs
Nicolas Stroppa Introduction au Web dynamique - 30 -
Fonctionnement de linterface
1
Le client passe des arguments au serveur HTTP, sous la forme dune chane de caractres reprsentant une liste de paires cl-valeur. Exemple : nom=Dupont&prenom=Jacques&age=47. Le serveur rceptionne les donnes et les transmet au programme/module. Le programme :
1
sexcute dans lenvironnement du serveur (= peut accder certaines variables) traite la requte et renvoie :
sur la sortie standard : len-tte + le contenu (php : seulement le contenu) sur la sortie derreur : les ventuels messages derreurs
Le serveur :
renvoie la rponse (en-tte + contenu) au client archive au besoin les messages derreurs
Nicolas Stroppa Introduction au Web dynamique - 31 -
Pour installer : mettre le chier source en lecture et excution pour tous (en ralit lutilisateur apache) et ajouter lextension .cgi
Nicolas Stroppa
- 32 -
Attention : dans ce cas, il faut compiler et faire ldition de liens pour obtenir lexcutable !
Nicolas Stroppa Introduction au Web dynamique - 33 -
<html> <head><title>Hello world !!!</title></head> <body> <?php echo "Hello world?\n"; ?> </body></html>
Le code PHP est lintrieur des balises <?php et ?>. Il ny a pas besoin de rajouter len-tte Pour installer, il suft que le chier ait lextension .php
Nicolas Stroppa
- 34 -
En PHP, il y a cration automatique des variables portant le nom des cls. (Ici, la variable nom sera automatiquement cre avec pour valeur Dupont.)
Nicolas Stroppa Introduction au Web dynamique - 35 -
Un exemple de formulaire
<html> <head><title>Exemple de formulaire</title></head> <body> <form method="post" <input type="radio" Afficher mon nom <input type="radio" Afficher mon nom et action="script.cgi"> name="action" value="name"> name="action" value="with_email"> mon e-mail<br />
Nom : <input type="text" name="name" size="30"><br /> E-mail : <input type="text" name="email" size="30"><br /> <input type="submit" value="OK"> <input type="reset" value="RAZ"> </form> </body></html>
Nicolas Stroppa Introduction au Web dynamique - 36 -
Les valeurs des champs du formulaire sont associes aux noms dans le dictionnaire obtenu (objet Python).
Nicolas Stroppa Introduction au Web dynamique - 37 -
Nicolas Stroppa
- 39 -
Plan
1
Introduction Rappels sur le protocole HTTP, le langage HTML, et les URL Les pages dynamiques : une ncessit Principes et exemples de pages dynamiques Linteraction Serveur Programme Exemples dutilisation Suivi de connexion Les champs cachs Les cookies Les sessions en PHP
Nicolas Stroppa
- 40 -
Le problme
Le protocole HTTP nest pas connect impossible de garder une relle liaison entre le client et le serveur. Inadapt aux sessions client/serveur dans lesquelles on doit garder une trace de lchange (identication, historique, liaison avec une BD. . .).
Nicolas Stroppa
- 41 -
Suivi de connexion
Trois mthodes : Avec des champs cachs. Uniquement pour une suite dtapes bien prcises. Exemple : <input type="hidden" name="page" value="1"> Avec des cookies
Information fournie par le serveur mais stocke par le client
Nicolas Stroppa
- 42 -
Un champ permet de transmettre au serveur une variable de manire transparente. Le serveur rcupre tous les champs fournis par le formulaire. Problme : Pour une variable donne, on ne connait pas le type de champ qui lui tait associ dans le formulaire, i.e. on dtecte les champs uniquement par leur nom. Objectif des champs cachs : rcuprer une variable, la traiter, et la rintroduire nouveau dans lafchage dun nouveau formulaire.
Nicolas Stroppa
- 43 -
Form.html
Res1.cgi
Valeur de login rcupre Nouveau formulaire avec champ cach login
Res2.cgi
Valeur de login rcupre Nouveau formulaire avec champ cach login
Nicolas Stroppa
- 44 -
Cookies
Un cookie est compos de :
Un nom et une valeur : id=123 Un domaine : nom_du_serveur (dfaut : celui de la page) Un path : arborescence du site (par dfaut / ) Une date dexpiration : date, nombre de secondes (par dfaut la dure de la session)
Cookies en PHP
Recevoir : En PHP, un cookie est reu de la mme faon que dans le cas dun formulaire : une variable du nom du cookie est cre automatiquement. Envoyer : Pour envoyer, on utilise la fonction setcookie. setcookie("nom du cookie","valeur", ...)
<? setcookie(name, "Dupont"); ?> <html>... <? setcookie(name, "Dupont"); ?> <html>...
Nicolas Stroppa
- 46 -
PHP 4 et 5 : inclus dans la distribution de base, via des chiers stocks sur disque On utilise un identiant de session via un champ cach ou un cookie. Transparent via session_start qui gre un cookie tout seul. Une fois la session ouverte, on sauve/charge toute variable de faon transparente.
Nicolas Stroppa
- 47 -
La suite. . .
La suite. . .
Lavenir du web est dynamique cts client et serveur. Au niveau serveur : PHP et serveurs dapplications (Tomcat, Websphere, etc.) Au niveau client : clients riches (Javascript, XUL, XAML, Actionscript, etc.)
Nicolas Stroppa
- 48 -
Rfrences
Rfrences
Site de rfrence : http://www.php.net Rasmus Lerdorf, Kevin Tatroe Programming PHP. OReilly, 2002. David Sklar Learning PHP 5. OReilly, 2004. GNU/Linux magazine Hors-Srie n 20 PHP 5 Sept./Oct. 2004.
Nicolas Stroppa
- 49 -