web:php:chap4

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
web:php:chap4 [2023/11/08 15:23] – supprimée - modification externe (Unknown date) 127.0.0.1web:php:chap4 [2023/11/08 15:23] (Version actuelle) – ↷ Page déplacée de php:chap4 à web:php:chap4 jcheron
Ligne 1: Ligne 1:
 +====== Chapitre 4 : Mémorisation temporaire des informations client ======
  
 +<html><div class="towrite">Mémorisation temporaire des infos client : <ul><li>Sessions</li><li>Cookies</li></ul></div></html>
 +
 +===== -- Sessions =====
 +Permettent de mémoriser des informations sur un utilisateur, côté serveur. L'utilisateur (navigateur client ayant fait une requête) est identifié par un id de session.
 +
 +Les sessions peuvent être démarrées manuellement en utilisant la fonction **session_start()**. Si la directive de configuration **session.auto_start** est définie à 1, une session démarrera automatiquement lors du début de la demande.
 +
 +<html><div class="note"><b>session_start</b> doit être invoqué avant toute écriture sur la page</div></html>
 +
 +<sxh php;title:Exemple>
 +<?php
 +session_start();
 +if (!isset($_SESSION['count'])) {
 +  $_SESSION['count'] = 0;
 +} else {
 +  $_SESSION['count']++;
 +}
 +?>
 +</sxh>
 +
 +|< 100% >|
 +^Fonction/variable ^Rôle ^
 +|session_start() |Démarre une nouvelle session ou reprend une session existante |
 +|$_SESSION |Tableau associatif super global contenant les variables de session |
 +
 +
 +==== -- Création d'une variable ====
 +
 +<sxh php>
 +<?php
 +session_start();
 +$_SESSION["logged"]=true;
 +?>
 +</sxh>
 +
 +==== -- Suppression d'une variable ====
 +
 +<sxh php>
 +<?php
 +session_start();
 +unset($_SESSION["logged"]);
 +?>
 +</sxh>
 +
 +==== -- Fermeture et suppression des variables ====
 +
 +<sxh php>
 +<?php
 +// Initialisation de la session.
 +// Si vous utilisez un autre nom
 +// session_name("autrenom")
 +session_start();
 +
 +// Détruit toutes les variables de session
 +$_SESSION = array();
 +
 +// Si vous voulez détruire complètement la session, effacez également
 +// le cookie de session.
 +// Note : cela détruira la session et pas seulement les données de session !
 +if (ini_get("session.use_cookies")) {
 +    $params = session_get_cookie_params();
 +    setcookie(session_name(), '', time() - 42000,
 +        $params["path"], $params["domain"],
 +        $params["secure"], $params["httponly"]
 +    );
 +}
 +
 +// Finalement, on détruit la session.
 +session_destroy();
 +?>
 +</sxh>
 +===== -- Cookies =====
 +
 +**Rôle, limites :**\\
 +  * 65 ko
 +  * Texte
 +  * Acceptation côté client
 +
 +==== -- Création ====
 +
 +<sxh php>
 +<?php
 +// on définit une durée de vie de notre cookie (en secondes), 24 heures ici
 +$temps = 24*3600;
 +
 +// on envoie un cookie de nom pseudo portant la valeur cestmoi
 +setcookie ("pseudo", "cestmoi", time() + $temps);
 +?>
 +</sxh>
 +
 +==== -- Accès ====
 +L'accès à un cookie se fait par l'intermédiaire du tableau associatif super global $_COOKIE :
 +<sxh php;gutter:false>
 +echo $_COOKIE["name"];
 +</sxh>
 +
 +==== -- Suppression ====
 +Il suffit d'envoyer à nouveau le cookie dans la requête (avant écriture sur la page), et de lui affecter une heure d'expiration dépassée.
 +
 +<sxh php>
 +<?php
 +// Utilisation de la date courante, moins une heure
 +setcookie ("TestCookie", "", time() - 3600);
 +?>
 +</sxh>
 +
 +==== -- Tableau de cookies ====
 +Il est possible d'utiliser les cookies pour y stocker un tableau :
 +
 +<sxh php>
 +<?php
 +// Définit les cookies
 +setcookie("cookie[three]", "cookiethree");
 +setcookie("cookie[two]", "cookietwo");
 +setcookie("cookie[one]", "cookieone");
 +
 +// Après le rechargemet de la page, nous les affichons
 +if (isset($_COOKIE['cookie'])) {
 +    foreach ($_COOKIE['cookie'] as $name => $value) {
 +        $name = htmlspecialchars($name);
 +        $value = htmlspecialchars($value);        
 +        echo "$name : $value <br />\n";
 +    }
 +}
 +?>
 +</sxh>