web:php:chap4

Chapitre 4 : Mémorisation temporaire des informations client

Mémorisation temporaire des infos client :
  • Sessions
  • Cookies

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.

session_start doit être invoqué avant toute écriture sur la page

<?php
session_start();
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
  $_SESSION['count']++;
}
?>

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

<?php
session_start();
$_SESSION["logged"]=true;
?>

<?php
session_start();
unset($_SESSION["logged"]);
?>

<?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();
?>

Rôle, limites :

  • 65 ko
  • Texte
  • Acceptation côté client

<?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);
?>

L'accès à un cookie se fait par l'intermédiaire du tableau associatif super global $_COOKIE :

echo $_COOKIE["name"];

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.

<?php
// Utilisation de la date courante, moins une heure
setcookie ("TestCookie", "", time() - 3600);
?>

Il est possible d'utiliser les cookies pour y stocker un tableau :

<?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";
    }
}
?>

  • web/php/chap4.txt
  • Dernière modification : il y a 6 mois
  • de jcheron