Title: Web and HTTP
1Web and HTTP
- First some jargon
- Web page consists of objects
- Object can be HTML file, JPEG image, Java applet,
audio file, - Web page consists of base HTML-file which
includes several referenced objects - Each object is addressable by a URL
- Example URL
2HTTP, Php
3HTTP overview
- HTTP hypertext transfer protocol
- Webs application layer protocol
- client/server model
- client browser that requests, receives,
displays Web objects - server Web server sends objects in response to
requests - HTTP 1.0 RFC 1945
- HTTP 1.1 RFC 2068
HTTP request
PC running Explorer
HTTP response
HTTP request
Server running Apache Web server
HTTP response
Mac running Navigator
4HTTP overview (continued)
- HTTP is stateless
- server maintains no information about past client
requests
- Uses TCP
- client initiates TCP connection (creates socket)
to server, port 80 - server accepts TCP connection from client
- HTTP messages (application-layer protocol
messages) exchanged between browser (HTTP client)
and Web server (HTTP server) - TCP connection closed
aside
- Protocols that maintain state are complex!
- past history (state) must be maintained
- if server/client crashes, their views of state
may be inconsistent, must be reconciled
5HTTP connections
- Nonpersistent HTTP
- At most one object is sent over a TCP connection.
- HTTP/1.0 uses nonpersistent HTTP
- Persistent HTTP
- Multiple objects can be sent over single TCP
connection between client and server. - HTTP/1.1 uses persistent connections in default
mode
6Nonpersistent HTTP
(contains text, references to 10 jpeg images)
- Suppose user enters URL www.someSchool.edu/someDep
artment/home.index
- 1a. HTTP client initiates TCP connection to HTTP
server (process) at www.someSchool.edu on port 80
1b. HTTP server at host www.someSchool.edu
waiting for TCP connection at port 80. accepts
connection, notifying client
2. HTTP client sends HTTP request message
(containing URL) into TCP connection socket.
Message indicates that client wants object
someDepartment/home.index
3. HTTP server receives request message, forms
response message containing requested object, and
sends message into its socket
time
7Nonpersistent HTTP (cont.)
4. HTTP server closes TCP connection.
- 5. HTTP client receives response message
containing html file, displays html. Parsing
html file, finds 10 referenced jpeg objects
time
6. Steps 1-5 repeated for each of 10 jpeg objects
8Response time modeling
- Definition of RRT time to send a small packet to
travel from client to server and back. - Response time
- one RTT to initiate TCP connection
- one RTT for HTTP request and first few bytes of
HTTP response to return - file transmission time
- total 2RTTtransmit time
9Persistent HTTP
- Persistent without pipelining
- client issues new request only when previous
response has been received - one RTT for each referenced object
- Persistent with pipelining
- default in HTTP/1.1
- client sends requests as soon as it encounters a
referenced object - as little as one RTT for all the referenced
objects
- Nonpersistent HTTP issues
- requires 2 RTTs per object
- OS overhead for each TCP connection
- browsers often open parallel TCP connections to
fetch referenced objects - Persistent HTTP
- server leaves connection open after sending
response - subsequent HTTP messages between same
client/server sent over open connection
10HTTP request message
- two types of HTTP messages request, response
- HTTP request message
- ASCII (human-readable format)
request line (GET, POST, HEAD commands)
GET /somedir/page.html HTTP/1.1 Host
www.someschool.edu User-agent
Mozilla/4.0 Connection close Accept-languagefr
(extra carriage return, line feed)
header lines
Carriage return, line feed indicates end of
message
11HTTP request message general format
12Uploading form input
- Post method
- Web page often includes form input
- Input is uploaded to server in entity body
- URL method
- Uses GET method
- Input is uploaded in URL field of request line
www.somesite.com/animalsearch?monkeysbanana
13Method types
- HTTP/1.0
- GET
- POST
- HEAD
- asks server to leave requested object out of
response
- HTTP/1.1
- GET, POST, HEAD
- PUT
- uploads file in entity body to path specified in
URL field - DELETE
- deletes file specified in the URL field
14Exemple POST
- POST /path/script.cgi HTTP/1.0
- From frog_at_jmarshall.com
- User-Agent HTTPTool/1.0
- Content-Type application/x-www-form-urlencoded
- Content-Length 32
- homeCosbyfavoriteflavorflies
15POST
- dans une requête POST il n'y a pas qu'un entête
les données sont dans le corps du message - les données définissent des variables qui seront
utilisées par le CGI - l'url requise est normalement un programme
- la réponse HTTP est normalement la sortie d'un
programme
16HTTP response message
status line (protocol status code status phrase)
HTTP/1.1 200 OK Connection close Date Thu, 06
Aug 1998 120015 GMT Server Apache/1.3.0
(Unix) Last-Modified Mon, 22 Jun 1998 ...
Content-Length 6821 Content-Type text/html
data data data data data ...
header lines
data, e.g., requested HTML file
17HTTP response status codes
In first line in server-gtclient response
message. A few sample codes
- 200 OK
- request succeeded, requested object later in this
message - 301 Moved Permanently
- requested object moved, new location specified
later in this message (Location) - 400 Bad Request
- request message not understood by server
- 404 Not Found
- requested document not found on this server
- 505 HTTP Version Not Supported
18Trying out HTTP (client side) for yourself
- 1. Telnet to your favorite Web server
Opens TCP connection to port 80 (default HTTP
server port) at cis.poly.edu. Anything typed in
sent to port 80 at cis.poly.edu
telnet cis.poly.edu 80
2. Type in a GET HTTP request
By typing this in (hit carriage return twice),
you send this minimal (but complete) GET request
to HTTP server
GET /ross/ HTTP/1.1 Host cis.poly.edu
3. Look at response message sent by HTTP server!
19Méthodes http
- GET
- C'est la méthode la plus courante pour demander
une ressource. Une requête GET est sans effet sur
la ressource, il doit être possible de répéter la
requête sans effet. - HEAD
- Cette méthode ne demande que des informations sur
la ressource, sans demander la ressource
elle-même. - POST
- Cette méthode doit être utilisée lorsqu'une
requête modifie la ressource. - OPTIONS
- Cette méthode permet d'obtenir les options de
communication d'une ressource ou du serveur en
général. - CONNECT
- Cette méthode permet d'utiliser un proxy comme un
tunnel de communication. - TRACE
- Cette méthode demande au serveur de retourner ce
qu'il a reçu, dans le but de tester et effectuer
un diagnostic sur la connexion. - PUT
- Cette méthode permet d'ajouter une ressource sur
le serveur. - DELETE
- Cette méthode permet de supprimer une ressource
du serveur.
20entêtes
- Host
- Permet de préciser le site Web concerné par la
requête, ce qui est nécessaire pour un serveur
hébergeant plusieurs sites à la même adresse IP
(name based virtual host, hôte virtuel basé sur
le nom). (Obligatoire) - Referer
- Indique l'URI du document qui a donné un lien sur
la ressource demandée. Cet en-tête permet aux
webmasters d'observer d'où viennent les
visiteurs. - User-Agent
- Indique le logiciel utilisé pour se connecter. Il
s'agit généralement d'un navigateur Web ou d'un
robot d'indexation. - Connection
- connection persistante ou non
- Accept
- Cet en-tête liste les types MIME de contenu
acceptés par le client. Le caractère étoile
peut servir à spécifier tous les types /
sous-types. - Accept-Charset
- Spécifie les encodages de caractères acceptés.
- Accept-Language
- Spécifie les langages acceptés.
21Réponses
- Date
- Moment auquel le message est généré.
- Server
- Indique quel modèle de serveur HTTP répond à la
requête. - Content-Length
- Indique la taille en octets de la ressource.
- Content-Type
- Indique le type MIME de la ressource.
- Expires
- Indique le moment après lequel la ressource
devrait être considérée obsolète permet aux
navigateurs Web de déterminer jusqu'à quand
garder la ressource en mémoire cache. - Last-Modified
- Indique la date de dernière modification de la
ressource demandée.
22Lets look at HTTP in action
- telnet example
- Ethereal example
23CGI
- Common Gateway Interface
- exécuter du code du côté serveur
- Passage de paramètre par la méthode POST ou la
méthode GET - Variables d'environnement
24Exemple
- en shell date.cgi
- !/bin/sh
- tmp/bin/date
- cat ltlt ! Content-type text/html
ltHTMLgtltHEADgtltTITLEgtScript Cgilt/TITLEgtlt/HEADgt
ltBODYgt ltCENTERgt ltH1gtLa date courante sur le
serveur estlt/H1gt tmp lt/CENTERgt lt/BODYgt lt/HTMLgt - !
- l'URL affichera la date
25Avec un formulaire
- ltHTMLgtltHEADgtltTITLEgtFormulaire simplelt/TITLEgtlt/HEAD
gt - ltBODYgt
- ltH2gtRépondez aux questions suivanteslt/H2gt
- ltFORM ACTION"http//www.monsite.com/cgi-bin/treat
.pl" METHODGETgt - Prénom ltINPUT TYPE"text" NAMEprenom
SIZE20gtltBRgt - Nom ltINPUT TYPE"text" NAMEnom SIZE20gtltBRgt
- Age ltSELECT NAMEagegt
- ltOPTIONgt- de 18 ans
- ltOPTIONgt19 à 40 ans
- ltOPTIONgt41 à 60 ans
- ltOPTIONgt de 60 ans
- lt/SELECTgtltBRgt
- ltINPUT TYPEsubmit VALUE"Envoyer"gt ltINPUT
TYPEreset VALUE"Remettre - à zéro"gt
- lt/FORMgt
- lt/BODYgt
26Résultat
- par la méthode get codage des paramètres
- prenomHuguesnomFauconnierage41E060ans
- le navigateur génère l'url
- http//www.monsite.com/cgi-bin/treat.pl?prenomHug
uesnomFauconnierage41E060ans - Avec la méthode POST
- http//www.monsite.com/cgi-bin/treat.pl
- prenomHuguesnomFauconnierage41
27Traitement en perl
28Paramètres
- Les paramètres sont accessibles par
l'intermédiaire de la variable d'environnement
QUERY_STRING
29Variables d'environnement
- SERVER_SOFTWARE
- Le nom et la version du serveur HTTP répondant à
la requête. (Format nom/version) - SERVER_NAME
- Le nom d'hôte, alias DNS ou adresse IP du
serveur. - GATEWAY_INTERFACE
- La révision de la spécification CGI que le
serveur utilise. (Format CGI/révision)
30Variables
- SERVER_PROTOCOL
- Le nom et la révision du protocole dans lequel la
requête a été faite (Format protocole/révision)
- SERVER_PORT
- Le numéro de port sur lequel la requête a été
envoyée. - REQUEST_METHOD
- La méthode utilisée pour faire la requête. Pour
HTTP, elle contient généralement GET ou
POST . - PATH_INFO
- Le chemin supplémentaire du script tel que donné
par le client. Par exemple, si le serveur héberge
le script /cgi-bin/monscript.cgi et que le
client demande l'url http//serveur.org/cgi-bin/
monscript.cgi/marecherche , alors PATH_INFO
contiendra marecherche . - PATH_TRANSLATED
- Contient le chemin demandé par le client après
que les conversions virtuel ? physique aient été
faites par le serveur.
31Variables
- SCRIPT_NAME
- Le chemin virtuel vers le script étant exécuté.
Exemple /cgi-bin/script.cgi - QUERY_STRING
- Contient tout ce qui suit le ? dans l'URL
envoyée par le client. Toutes les variables
provenant d'un formulaire envoyé avec la méthode
GET sera contenue dans le QUERY_STRING sous
la forme var1val1var2val2... . - REMOTE_HOST
- Le nom d'hôte du client. Si le serveur ne possède
pas cette information (par exemple, lorsque la
résolution DNS inverse est désactivée),
REMOTE_HOST sera vide. - REMOTE_ADDR
- L'adresse IP du client.
- AUTH_TYPE
- Le type d'identification utilisé pour protéger le
script (sil est protégé et si le serveur
supporte l'identification).
32Variables
- AUTH_TYPE
- Le type d'identification utilisé pour protéger le
script (sil est protégé et si le serveur
supporte l'identification). - REMOTE_USER
- Le nom d'utilisateur du client, si le script est
protégé et si le serveur supporte
l'identification. - REMOTE_IDENT
- Nom d'utilisateur (distant) du client faisant la
requête. Le serveur doit supporter
l'identification RFC 931. Cette variable
devraient être utilisée à des fins de journaux
seulement. - CONTENT_TYPE
- Le type de contenu attaché à la requête, si des
données sont attachées (comme lorsqu'un
formulaire est envoyé avec la méthode POST ). - CONTENT_LENGTH
- La longueur du contenu envoyé par le client.
33Variables
- HTTP_ACCEPT
- Les types de données MIME que le client accepte
de recevoir. - Exemple text/, image/jpeg, image/png, image/,
/ - HTTP_ACCEPT_LANGUAGE
- Les langages dans lequel le client accepte de
recevoir la réponse. - Exemple fr_CA, fr
- HTTP_USER_AGENT
- Le navigateur utilisé par le client.
- Exemple Mozilla/5.0 (compatible Konqueror/3
Linux)
34User-server state cookies
- Many major Web sites use cookies
- Four components
- 1) cookie header line of HTTP response message
- 2) cookie header line in HTTP request message
- 3) cookie file kept on users host, managed by
users browser - 4) back-end database at Web site
- Example
- Susan access Internet always from same PC
- She visits a specific e-commerce site for first
time - When initial HTTP requests arrives at site, site
creates a unique ID and creates an entry in
backend database for ID
35Cookies keeping state (cont.)
server creates ID 1678 for user
entry in backend database
access
access
one week later
36Cookies (continued)
aside
- Cookies and privacy
- cookies permit sites to learn a lot about you
- you may supply name and e-mail to sites
- search engines use redirection cookies to
learn yet more - advertising companies obtain info across sites
- What cookies can bring
- authorization
- shopping carts
- recommendations
- user session state (Web e-mail)
37Web caches (proxy server)
Goal satisfy client request without involving
origin server
- user sets browser Web accesses via cache
- browser sends all HTTP requests to cache
- object in cache cache returns object
- else cache requests object from origin server,
then returns object to client
origin server
Proxy server
HTTP request
HTTP request
client
HTTP response
HTTP response
HTTP request
HTTP response
client
origin server
38More about Web caching
- Cache acts as both client and server
- Typically cache is installed by ISP (university,
company, residential ISP)
- Why Web caching?
- Reduce response time for client request.
- Reduce traffic on an institutions access link.
- Internet dense with caches enables poor content
providers to effectively deliver content (but so
does P2P file sharing)
39Caching example
origin servers
- Assumptions
- average object size 100,000 bits
- avg. request rate from institutions browsers to
origin servers 15/sec - delay from institutional router to any origin
server and back to router 2 sec - Consequences
- utilization on LAN 15
- utilization on access link 100
- total delay Internet delay access delay
LAN delay - 2 sec minutes milliseconds
public Internet
1.5 Mbps access link
institutional network
10 Mbps LAN
institutional cache
40Caching example (cont)
origin servers
- Possible solution
- increase bandwidth of access link to, say, 10
Mbps - Consequences
- utilization on LAN 15
- utilization on access link 15
- Total delay Internet delay access delay
LAN delay - 2 sec msecs msecs
- often a costly upgrade
public Internet
10 Mbps access link
institutional network
10 Mbps LAN
institutional cache
41Caching example (cont)
origin servers
- Install cache
- suppose hit rate is .4
- Consequence
- 40 requests will be satisfied almost immediately
- 60 requests satisfied by origin server
- utilization of access link reduced to 60,
resulting in negligible delays (say 10 msec) - total avg delay Internet delay access delay
LAN delay .6(2.01) secs milliseconds lt
1.4 secs
public Internet
1.5 Mbps access link
institutional network
10 Mbps LAN
institutional cache
42Conditional GET
server
cache
- Goal dont send object if cache has up-to-date
cached version - cache specify date of cached copy in HTTP
request - If-modified-since ltdategt
- server response contains no object if cached
copy is up-to-date - HTTP/1.0 304 Not Modified
HTTP request msg If-modified-since ltdategt
object not modified
HTTP request msg If-modified-since ltdategt
object modified
HTTP response HTTP/1.0 200 OK ltdatagt
43Compléments Javascript
- Code qui s'exécute du côté du client
- calcul local
- contrôle d'une zone de saisie
- affichage d'alerte
- fenêtres menus etc..
- Balise
- ltSCRIPT languge"JavaScript1.2"gt
- le code...
- lt/SCRIPTgt
44Exemple bonjour
- ltHTMLgtltHEADgt
- ltTITLEgtTrès facilelt/TITLEgt
- lt/HEADgt
- ltSCRIPT language"JavaScript1.2"gt
- function bonjour()
-
- alert ("Bonjour madame, bonjour monsieur")
-
- lt/SCRIPTgt
- ltBODY bgcolor"WHITE" onLoad"bonjour()"gt
- ltH1gtBonjourlt/H1gt
- lt/BODYgtlt/HTMLgt
45Un peu plus minicalcul
- HTMLgt
- ltHEADgt
- ltTITLEgtPetit calcullt/TITLEgt
- lt/HEADgt
- ltBODY bgcolor'WHITE'gt
- ltscript language'JavaScript1.2'
src'calcul.js'gtlt/scriptgt - ltscript language'JavaScript1.2'
src'fenetre.js'gtlt/scriptgt - ltscript language'JavaScript1.2'
src'ctrl.js'gtlt/scriptgt - ltCENTERgtltH1gtCalcullt/H1gtlt/CENTERgt
- Un petit exemple de formulaire.
- ltPgt
- Création d'une
- ltA href'A' onClick'afficheDoc()'gtfenêtre avec
JavaScriptlt/Agt
46Suite
- ltFORM ACTION'Simul.html' METHOD'POST'
NAME'Simul'gt - ltCENTERgt
- ltTABLE BORDER3gt
- ltTRgtltTDgtArgument 1
- ltTDgt ltINPUT TYPE'TEXT' SIZE20 NAME'arg1'
onChange'calcul()'gtlt/TRgt - ltTRgtltTDgt Argument 2
- ltTDgt ltINPUT TYPE'TEXT' SIZE20
- NAME'arg2' onChange'calcul()'gt
- lt/TRgt
- ltTRgtltTDgtRésultat
- ltTDgt ltINPUT TYPE'TEXT' SIZE20
- NAME'res' gt
- lt/TRgt
- lt/TABLEgt
- ltINPUT TYPE'BUTTON' VALUE'Vérifier'
onClick'ctrl()'gt - ltINPUT TYPE'RESET' VALUE'Effacer tout'
- onClick' if (!confirm("Vraiment vous
voulez effacer ?")) exit'gt
47Fichiers js
- ctrl.js calcul
- function ctrl()
-
- if (isNaN(window.document.Simul.res.value ))
-
- alert ("Valeur incorrecte "
- document.Simul.res.value "?")
- document.forms0.res.focus()
-
-
- function calcul()
-
- v1document.forms0.arg1.value
- v2document.forms0.arg2.value
- document.forms0.res.value v2v1
-
48suite et fin
- fenetre.js
- function afficheDoc()
-
- options "width300,height200"
- fenetre window.open('','MU',options)
- fenetre.document.open()
- manuel "ltHTMLgtltHEADgtltTITLEgtDocumentationlt/TITL
Egtlt/HEADgt" - "ltBODY bgcolor'white'gt"
- "Il n'y a pas besoin d'aide "
- " c'est facile."
- " Bonne chance !lt/BODYgtlt/HTMLgt"
- fenetre.document.write(manuel)
- fenetre.document.close()
-
49Compléments php
- php est un langage de script pour les serveurs
webs - de nombreuses fonctions permettent de traiter les
requêtes http - ici on est du côté du serveur
50Exemple simple
- ltHTMLgt ltHEADgt
- ltTITLEgtExemple très simplelt/TITLEgt
- lt/HEADgt
- ltBODYgt
- ltH1gtExemplelt/H1gt
- le lt?php echo Date ("j/m/Y à His") ?gt
- ltPgt
- lt?php
- echo "Client " . _SERVER'HTTP_USER_AGENT'
. "ltBRgt" - echo "Adresse IP client"._SERVER'REMOTE_ADDR'
."ltBRgt" - echo "Server " . _SERVER'SERVER_NAME'
- ?gt
- lt/BODYgtlt/HTMLgt
51Résultat
- Exemple
- le 8/11/2006 à 155429 Client Mozilla/4.0
(compatible MSIE 7.0 Windows NT 5.1 .NET CLR
1.1.4322 InfoPath.1) - Adresse IP client127.0.0.1Server localhost
52Reçu par le client
- ltHTMLgt ltHEADgt
- ltTITLEgtExemple très simplelt/TITLEgt
- lt/HEADgt
- ltBODYgt
- ltH1gtExemplelt/H1gt
- le 8/11/2006 à 155429
- ltPgt
- Client Mozilla/4.0 (compatible MSIE 7.0
Windows NT 5.1 .NET CLR 1.1.4322
InfoPath.1)ltBRgtAdresse IP client127.0.0.1ltBRgtServ
er localhost - lt/BODYgtlt/HTMLgt
53Php
- On est ici côté serveur
- les balises lt?phpgt lt?gt sont interprétées par le
serveur (apache par exemple) et servent à générer
la page html reçu par le client - Mais surtout php permet
- d'accéder aux variables d'environnement
- d'utiliser de nombreuses fonctionsalités
- sessions, paramètres etc.
- Php sert souvent d'interface pour MySql serveur
simple de bases de données
54Php
- pas de typage ni de déclaration des variables
- v est remplacé par la valeur de v (et permet
aussi l'affectation) - echo "v"
- constantes define("PI, 3.1415)
- types des variables
- numériques
- i1
- v3.14
- chaînes de caractères (expressions régulières)
- nom"Hugues"
- ',",
55php
- tableaux
- indicés
- tab0"un"
- tabarray("un","deux","trois")
- associatifs
- marray("un"gt"one",
- "deux"gt"two")
- m"trois""three"
- next() prev() key() current
- do
- echo "Clékey(m).Valeur current(m)"
- while(next(mes))
- foreach(m as cle gtval)
- echo "Clécle.Valeurval"
56Php
- structures de contrôles
- if
- if else
- while
- do while
- for
- foreach
- break, continue
57fonctions
- function Nom(arg1, arg2, ...)
-
- corps
-
- passage par valeur (et pas références )
- exemples
- function Add(i,j)
- somme i j
- return somme
-
- function Add(i,j,somme)
- somme i j
-
58divers
- variables
- automatiques (locales)
- statiques (comme en C)
- globales
- classes et objets
59Pour le serveur
- tableaux associatifs prédéfinis
- _SERVER environnement serveur
- REQUEST_METHOD
- QUERY_STRING
- CONTENT_LENGTH
- SERVER_NAME
- PATH_INFO
- HTTP_USER_AGENT
- REMOTE_ADDR
- REMOTE_HOST
- REMOTE_USER
- REMOTE_PASSWORD
60Suite
- Autres tableaux
- _ENV environnement système
- _COOKIE
- _GET
- _POST
- _FILES
- _REQUEST (variables des 4 précédents
- _SESSION
- GLOBALS les variables globales du scritp
61Cookies et php
- lt?php
- // Est-ce que le Cookie existe ?
- if (isSet(_COOKIE'compteur'))
-
- message "Vous êtes déjà venu
_COOKIE'compteur' fois " - . "me rendre visiteltBRgt\n"
- // On incrémente le compteur
- valeur _COOKIE'compteur' 1
-
- else
-
- // Il faut créer le cookie avec la valeur 1
- message "Bonjour, je vous envoie un
cookieltBRgt\n" - valeur 1
-
- // Envoi du cookie
- SetCookie ("compteur", valeur)
- ?gt
62Cookies et php (fin)
- ltHTMLgtltHEADgt
- ltTITLEgtLes cookieslt/TITLEgt
- lt/HEADgt
- ltBODYgt
- ltH1gtUn compteur d'accès au site avec cookielt/H1gt
- lt?php echo message ?gt
- lt/BODYgtlt/HTMLgt
63En utilisant les sessions
- lt?php
- // La fonction session_start fait tout le
travail - session_start()
- ?gt
- ltHTMLgtltHEADgt
- ltTITLEgtLes cookieslt/TITLEgt
- lt/HEADgt
- ltBODYgt
- ltH1gtUn compteur d'accès au site avec Sessionlt/H1gt
64Fin
- lt?php
- if (!isSet(_SESSION'cp'))
-
- _SESSION'cp'1
- echo "C'est la première fois, votre id
est".session_id()."ltBRgt" -
- else
- _SESSION'cp'
- echo "C'est votre "._SESSION'cp'."
n-ième connexion" - if(_SESSION'cp'gt10)
- echo "on vous a trop vu"."ltBRgt"
- session_destroy()
-
-
- ?gt
- lt/BODYgtlt/HTMLgt
65session
- session_start()
- session_destroy()
- session_id()
- on peut associer des variables à la session par
le tableau associatif _SESSION - elle sera accessible à chaque session_start()
jusqu'au session_destroy() pour toute connexion
qui fournit le session_id().