X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=prog_internet%2Fprog_internet_08.xhtml;fp=prog_internet%2Fprog_internet_08.xhtml;h=0000000000000000000000000000000000000000;hb=0a552a95e70324a04e9d06bd30ac5bc96b2a58b5;hp=9bf82b5826dc18617572e58976e7beb891db5d47;hpb=171bd61f3e4cf06638c6a90fdc053efbec9623ff;p=hacks%2FsimpleWebSlides.git diff --git a/prog_internet/prog_internet_08.xhtml b/prog_internet/prog_internet_08.xhtml deleted file mode 100644 index 9bf82b5..0000000 --- a/prog_internet/prog_internet_08.xhtml +++ /dev/null @@ -1,397 +0,0 @@ - - - - - PHP : Sessions et persistance - - - - - - - - - - - - - - - - - - - - -
-

Programmation Internet

-

Cours 8

-
kn@lri.fr
- http://www.lri.fr/~kn -
- -

En-tête de requêtes HTTP

- -
-

Retour sur le protocole HTTP

- -
- -
-

Retour sur le protocole HTTP (2)

- -
-
-

Modifier le content-type en PHP

-

Fichier notes_csv.php:

- <?php - header('Content-type: application/csv'); - header('Content-Disposition: attachement; filename="notes.csv"'); - echo "Nom, Note\n"; - foreach ($NOTES as $nom => $note) - echo $nom . ", " . $note . "\n"; - - ?> -

⚠ Attention!

- -
- -
-

Quelques en-tête utiles

-

En tête utilisés par le serveur dans ses réponses

-
-
Content-type
type MIME du contenu envoyé par le - serveur
-
Content-Disposition
permet de mentionner un nom de - fichier : attachment; filname="foobar.baz"
-
Cache-Control
permet de forcer le client à - retélécharger la page: no-cache, must-revalidate -
-
Last-Modified
date de dernière modification du - contenu demandé
-
-

En tête utilisés par le client dans ses requêtes

-
-
Range
permet de ne récupérer qu'un intervale - d'octets donné dans un fichier: bytes=500-999 -
- … -
- -
-
-

Retour sur le protocole HTTP (3)

-

On rappelle que HTTP est un protocole stateless - (sans état, i.e. le serveur Web ne conserve pas d'information - entre les connexions). Quel problème cela pose-t-il ?

- -

⇒ difficle de réaliser une « application » - moderne répartie sur plusieurs pages

-
- -

Cookies

-
-

Cookies

-

Un cookie est un packet de données envoyé par le - serveur, stocké par le client (navigateur Web) et renvoyé au serveur - lors d'une nouvelle connexion. Les propriétés d'un cookie sont: -

-
-
Son nom
une chaîne de caractères
-
Sa valeur
une chaîne de caraceres
-
Sa durée de vie
jusqu'à la fin de la « session » ou pour - une période donnée
-
Son domaine
Le nom du site web émetteur du cookie
-
Son chemin
Le sous-répertoire (par rapport à la racine - du site) pour lequel le cookie est valide
-
-

⚠ Attention! seul le domaine qui a - déposé le cookie est capable de le relire

-
-
-

Cookies en PHP

-

Créer ou mettre à jour un cookie sur le client:

- - setcookie($nom, $val, $date); - -
-
$nom
nom du cookie
-
$val
valeur du cookie
-
$date
date d'expiration en secondes - depuis epoch (1er janvier 1970 00:00:00) - ou NULL pour une expiration automatique.
-
-

(on peut récupérer le nombre de secondes depuis epoche avec - la fonction time()).
- Exemple: -

- setcookie("mon_cookie", "42", time() + 3600 * 24 * 30); -
- -
-

Cookies en PHP

-

On peut récupérer la valeur d'un cookie depuis PHP: -

- $_COOKIE["mon_cookie"] -

Un cookie "foo" existe (i.e. a été défini - auparavant) si une entrée correspondante existe dans le tableau - global $_COOKIE. On peut tester qu'une entrée - existe dans un tableau avec isset(). -

-

⚠ Attention!

- -
- -
-

Avantages et inconvénients des cookies

- -
-

Sessions

-
-

Sessions

-

Une session HTTP est un ensemble de requêtes/réponses HTTP - entre un serveur et un même client.
- Exemple d'un sondage en ligne: -

-
  1. Le visiteur arrive sur la page q1.php en cliquant sur - le lien « commencer le sondage » (Début de session) -
  2. -
  3. Sur q1.php, l'utilisateur coche des choix dans un formulaire et appuie - sur un boutton de soumission qui l'envoie sur q2.php -
  4. -
  5. …
  6. -
  7. Sur q10.php, l'utilisateur coche des choix dans un - formulaire et appuie sur un bouton de soumission qui l'envoie - sur resultat.php
  8. -
  9. Sur resultat.php, le résultat global du sondage (% - par question, nombre de participants jusqu'à présent etc...) est - affiché (Fin de session) -
  10. -
- -
-
-

Variables de session

-

Pour programmer une application Web, on souhaîte avoir accès à - des variables de session c'est à dire des variables qui - sont: -

- -

Les variables de sessions sont donc propres à chaque client et - persistent le temp de la session (le temps de session est décidé par - le serveur)

-
-
-

Variables de session en PHP

-

On initie une session avec la fonction:

- session_start(); -

Une fois appelée, la variable $_SESSION - contient un tableau que l'on peut utiliser entre plusieurs - pages. Les valeurs contenues dans le tableau persistent jusqu'à la - fin de la session. Une session se termine: -

- -

⚠ - Attention! session_start() doit être appelé - avant le premier echo du fichier.

-
-
-

Variables de session en PHP (2)

- - <?php /* Fichier page1.php */ - session_start(); - $_SESSION["Valeur"] = 42; - ?> - - - Veuillez cliquer sur le "page2.php"lien - - -]]> - - - La valeur est echo $_SESSION["Valeur"]; - - - -]]> -
-
-

Avantages et inconvénients des session

- -
-
-

Sessions PHP: détails d'implantation

-
-
Coté client
-
-
-
-
-
-
-
-
-
-Connexion à une page PHP (envoie du cookie ("php_ssid", "12345")) - - -
-
Coté serveur (PHP)
- session_start();
- - génération d'un ID unique "12345"
- - dépot d'un cookie "php_ssid", valeur "12345", durée 10 minutes - - création dans un tableau global d'une entrée:
- $_GLOBAL["12345"] = Array();
-
- $_SESSION = $_GLOBAL[$_COOKIE["php_ssid"]] -
-
-
- -
-

Dans la vraie VieTM

-

Mélange de variables de sessions, cookies et bases de données.
- Scénario réaliste: site de commerce en ligne -

- -

Pourquoi ?

- - -
- - -