|
Manuel PHP |
|
||
|
La gestion des sessions avec PHP est un moyen de sauver des informations entre deux accès. Cela permet notamment de construire des applications personnalisées, et díaccroître líattrait de votre site.
Chaque visiteur qui accède à votre site se voit assigné un numéro díidentifiant, appelé plus loin " identifiant de session ". Celui ci est enregistré soit dans un cookie, chez le client, soit dans líURL.
Les sessions vous permettront díenregistrer des variables, pour les préserver et les réutiliser tout au long des requêtes. Lorsquíun visiteur accède à votre site, PHP vérifiera automatiquement (Si session.auto_start est à 1) ou manuellement (explicitement avec session_start() ou implicitement avec session_register()) si une session a déjà été ouverte. Si une telle session existe déjà, líenvironnement précédent sera recréé.
Toutes les variables enregistrées seront enregistrées sur le disque à la fin de chaque requête. Les variables enregistrées mais non définies seront marquées comme tel. Lors des accès ultérieurs, elle ne seront définies que si líutilisateur le fait.
Il y a deux mode de propagation de líidentifiant de session :
Le module de session supporte les deux techniques. La méthode par cookies est optimale, mais étant donné le peut de fiabilité (les clients peuvent les refuser, ou les effacer), on ne peut pas se contenter de cette technique. La deuxième méthode place líidentifiant de session directement dans líURL.
PHP est capable de gérer ceci de manière transparente, lorsque vous le compilez avec líoption --enable-trans-sid. Dans ce cas, les URL relatives seront modifiées pour contenir líidentifiant de session automatiquement. Sinon, vous pouvez toujours utiliser la constante SID, qui sera définie si le client níenvoie pas le cookie approprié. SID prend la forme de session_nom=session_id ou cíest une chaîne vide.
Líexemple suivant montre comment enregistrer une variable, et comment relier correctement des pages avec SID.
Exemple 1. Compter le nombre de hit díun utilisateur. <?php session_register("compteur"); $compteur++; ?> Salut visiteur, vous avez vu cette page <? echo $compteur; ?> fois.<p> <? # le <?=SID?> est nécessaire pour transmettre líidentifiant de session # au cas ou les utilisateurs auront inactivé les cookies ?> Pour continuer, , <A HREF="nextpage.php?<?=SID?>">clique ici </A> |
Pour enregistrer ces informations dans une base de données, il vous faut utiliser la fonction session_set_save_handler(). Il faudra alors implémenter la fonction suivante pour líadapter à MySQL ou toute autre base de données :
Exemple 2. Utilisation de session_set_save_handler() <?php function open ($save_path, $session_name) { echo "open ($save_path, $session_name)\n"; return true; } function close () { echo "close\n"; return true; } function read ($key) { echo "write ($key, $val)\n"; return "foo|i:1;"; } function write ($key, $val) { echo "write ($key, $val)\n"; return true; } function destroy ($key) return true; } function gc ($maxlifetime) { return true; } session_set_save_handler ("open", "close", "read", "write", "destroy", "gc"); session_start (); $foo++; ?> |
Cela va produire le résultat suivant :
$ ./php save_handler.php Content-Type: text/html Set-cookie: PHPSESSID=f08b925af0ecb52bdd2de97d95cdbe6b open (/tmp, PHPSESSID) read (f08b925af0ecb52bdd2de97d95cdbe6b) write (f08b925af0ecb52bdd2de97d95cdbe6b, foo|i:2;) close
Le <?=SID?> níest pas nécessaire, si líoption --enable-trans-sid a été utilisé pour compiler PHP.
Le système de gestion des session dispose díun grand nombre díoptions, qui sont placéesdans le fichier php.ini file. En voici un survol rapide :
Note:La gestion des sessions a été ajoutée dans PHP 4.0.
|
|
||||
shm-remove-var |
msql_affected_rows |
||||
|