Académique Documents
Professionnel Documents
Culture Documents
Thierry Hamon
Bureau H202
Institut Galilée - Université Paris 13
&
LIMSI-CNRS
hamon@limsi.fr
http://perso.limsi.fr/hamon/Teaching/ProgWeb-20132014/
1/39
Introduction
Présentation du cours
Présentation du cours
Objectifs de l’enseignement : Acquérir les notions de base
en programmation Web
Manipulation de documents Web
Mise en place de formulaires et utilisation du
Javascript/AJAX/JQuery
Programmation en PHP et utilisation d’une base de
données
Également : connaı̂tre les sources d’informations
complémentaires
Répartition des enseignements : 4 séances de cours/TP
de 3h ou 4h30
Devoir développé au cours des TPs autour de la gestion
de la base de données Auto-Ecole
2/39
Introduction
Rappels Web
HTML
HyperText Markup Language
3/39
Introduction
Rappels Web
XML
eXtensible Markup Language
4/39
Introduction
Rappels Web
XHTML
eXtensible HyperText Markup Language
5/39
Introduction
Rappels Web
6/39
Introduction
Rappels Web
7/39
Introduction
Rappels Web
<e t u d i a n t s>
<e t u d i a n t>
<nom>P i e r r e</ nom>
<prenom>Dupont< / prenom>
<INE>1234567890</ INE>
</ e t u d i a n t>
</ e t u d i a n t s>
8/39
Introduction
Rappels Web
<e t u d i a n t s>
<e t u d i a n t>
<nom>P i e r r e</ nom>
<prenom>Dupont< / prenom>
<INE>1234567890</ INE>
</ e t u d i a n t>
</ e t u d i a n t s>
9/39
Introduction
Rappels Web
XSL
eXtended Stylesheet Language
10/39
Introduction
Rappels Web
XSLT
11/39
Introduction
Rappels Web
XPATH
12/39
Introduction
Rappels Web
XSD
XML Schema Definition
DTD :
types pauvres et peu de contraintes sur le contenu
Pas de gestion d’espace de nom
Pas au format XML
XSD :
définition de types et de contraintes sur les contenus
Définition précisément le nombre d’apparitions d’un
élément
Espaces de noms
Format XML
13/39
Introduction
Rappels Web
</ xs : schema>
14/39
Introduction
Rappels Web
exemple3.xml
<?xml v e r s i o n = ” 1 . 0 ” encoding= ” u t f −8” s t a nd a l on e = ” yes ” ?>
15/39
Introduction à la programmation Web
16/39
Introduction à la programmation Web
17/39
Introduction à la programmation Web
18/39
Introduction à la programmation Web
Résumé
Web interactif
Scripts Scripts
côté client côté serveur
Scripts
Servlet
CGI
Scripts dans
Applets Java Modules Perl, C, Shell
la page HTML
HTTPD
Java, ActiveX
Javascript,
VBscript
Scripts dans
Scripts CGI-like
la page HTML
D’après http:
//www710.univ-lyon1.fr/˜hbriceno/teaching/cs/04_CS_http-web.pdf
19/39
Formulaires HTML
Formulaires HTML
20/39
Formulaires HTML
21/39
Formulaires HTML
22/39
Formulaires HTML
Exemple de formulaire
<html><head><t i t l e>Form example</ t i t l e>
<s c r i p t language= ” j a v a s c r i p t ”>
function displayInfo () {
document . getElementById ( ” i n f o f i r s t n a m e ” ) . innerHTML = document . f o r m u l a i r e . f i r s t n a m e . v a l u e ;
document . getElementById ( ” i n f o l a s t n a m e ” ) . innerHTML = document . f o r m u l a i r e . lastname . v a l u e ;
}
function resetInfo () {
document . getElementById ( ” i n f o f i r s t n a m e ” ) . innerHTML = ” Not a v a i l a b l e ” ;
document . getElementById ( ” i n f o l a s t n a m e ” ) . innerHTML = ” Not a v a i l a b l e ” ;
}
</ s c r i p t></ head>
<body>
<div>
<form name= ” f o r m u l a i r e ” action = ” j a v a s c r i p t : d i s p l a y I n f o ( ) ”>
<div>
<div>Firstname : <input type= ” t e x t ” name= ” f i r s t n a m e ” /></ div>
<div>Lastname : <input type= ” password ” name= ” lastname ”></ div>
</ div><br />
<div s t y l e = ” t e x t−a l i g n : c e n t e r ”>
<input type= ” submit ” value= ” Ok ” />
<input type= ” r e s e t ” value= ” Cancel ” onclick = ” j a v a s c r i p t : r e s e t I n f o ( ) ; ” />
</ div>
</ form>
</ div>
Information :
<u l>
<l i i d = ” i n f o f i r s t n a m e ”>Not a v a i l a b l e</ l i>
<l i i d = ” i n f o l a s t n a m e ”>Not a v a i l a b l e</ l i>
</ u l>
</ html>
23/39
Méthodes GET et POST
24/39
Méthodes GET et POST
Méthode GET
25/39
Méthodes GET et POST
26/39
Méthodes GET et POST
Accept : */*
Content-type: application/x-www-form-urlencoded
Content-length: 36
login=titi&password=titi
NB : Mot de passe toujours en clair ...
27/39
Méthodes GET et POST
28/39
Méthodes GET et POST
29/39
Sessions
Sessions (1)
30/39
Sessions
Exemple de session
<?php
session start ( ) ;
$ SESSION [ ’ prenom ’ ] = ’ P i e r r e ’ ;
$ SESSION [ ’nom ’ ] = ’ Dupont ’ ;
$ SESSION [ ’ INE ’ ] = ’ 1234567890 ’ ;
?>
<html>
<head>
<t i t l e >Exemple de session </ t i t l e >
</head>
<body>
<h3>I n f o r m a t i o n s u r l ’ u t i l i s a t e u r </h3>
<p>
Nom  ; : <?php echo $ SESSION [ ’nom ’ ] ; ?><b r/>
Prénom  ; : <?php echo $ SESSION [ ’ prenom ’ ] ; ?><b r/>
Numéro INE  ; : <?php echo $ SESSION [ ’ INE ’ ] ; ?><b r/>
</p>
<p>
<a h r e f =” session2 . php”>Page s u i v a n t e </a><b r />
</p>
</body>
</html>
31/39
Sessions
Exemple de session
<?php
session start ( ) ;
?>
<html>
<head>
<t i t l e >Page s u i v a n t e de l ’ exemple de session </ t i t l e >
</head>
<body>
<p>
<h3>I n f o r m a t i o n s s u r l ’ u t i l i s a t e u r de l a page pr éc édente </h3>
<p>
Nom  ; : <?php echo $ SESSION [ ’nom ’ ] ; ?><b r/>
Prénom  ; : <?php echo $ SESSION [ ’ prenom ’ ] ; ?><b r/>
Numéro INE  ; : <?php echo $ SESSION [ ’ INE ’ ] ; ?><b r/>
</p>
</body>
</html>
32/39
Cookies
Cookies (1)
33/39
Cookies
Cookies (2)
Exemples d’utilisation :
Propagation d’un code d’authentification (permet d’éviter
une authentificaton lors de chaque requête)
Identification dans une base de données
Envoi d’éléments statistique au serveur
34/39
Cookies
35/39
Cookies
36/39
Cookies
Exemple
(dans du javascript)
v a r Cookies = {};
v a r a l l C o o k i e s = document . c o o k i e . s p l i t ( ’ ; ’ ) ;
f o r ( v a r i =0; i<a l l C o o k i e s . l e n g t h ; i ++) {
var cookiePair = allCookies [ i ] . s p l i t ( ’ = ’ ) ;
Cookies [ c o o k i e P a i r [ 0 ] ] = c o o k i e P a i r [ 1 ] ;
}
v a r x = Cookies [ ’ exempleCookie ’ ] ;
if (x) {
a l e r t ( ’ Le c o o k i e exempleCookie e s t encore a c t i f \n V a l e u r du Cookie
( i n i t i a l i s é l o r s d \ ’ une pr éc édente v i s i t e ) : ’ + x ) ;
}
f u n c t i o n sauvegardeCookie ( name ) {
v a r x = document . forms [ ’ c o o k i e f o r m ’ ] . l o g i n . v a l u e ;
if (! x) {
a l e r t ( ’ I n d i q u e z un l o g i n ’ ) ;
} else {
v a r date = new Date ( ) ;
date . setTime ( date . getTime ()+(1∗60∗60∗1000));
v a r e x p i r e s = ” ; e x p i r e s = ” +date . toGMTString ( ) ;
document . c o o k i e = name+ ” = ” +x+ e x p i r e s + ” ; path = / ” ;
Cookies [ name ] = x ;
a l e r t ( ’ Cookie c r e a t e d ’ ) ;
}
}
37/39
Cookies
Exemple
(dans du javascript)
f u n c t i o n l e c t u r e C o o k i e ( name ) {
a l e r t ( ’ La v a l e u r du c o o k i e e s t ’ + Cookies [ name ] ) ;
}
f u n c t i o n suppressionCookie ( name ) {
v a r date = new Date ( ) ;
date . setTime ( date . getTime ()+( −1∗60∗60∗1000));
v a r e x p i r e s = ” ; e x p i r e s = ” +date . toGMTString ( ) ;
document . c o o k i e = name+ ” = ” + e x p i r e s + ” ; path = / ” ;
Cookies [ name ] = u n d e fi n e d ;
a l e r t ( ’ Cookie erased ’ ) ;
}
38/39
Conclusion
Conclusion
A voir :
Javascript
PHP
Manipulation étendue des données : AJAX & JQuery
39/39