Contenu

Introduction

Pour des sites plus évolués comme des sites internes d'entreprises (intranet), des sites applicatifs(www.bugnon.vd.ch), des sites commerciaux, il est courant d'utiliser un accès réservé à des utilisateurs enregistrés, qui s'identifient par des mots de passe. Afin de faciliter la naviguation de ces sites, il ne faut pas que l'identité de l'utilisateur se perde au changement de page, et qu'il doive se ré-identifier. Pour cela, il existe un module de sessions dans PHP.

La gestion des sessions n'a été ajoutée au language PHP qu'à partir de la version 4. Le protocole HTTP étant un protocole sans connexion permanante, le serveur et le client mettent fin à la connexion à la fin de chaque requête. Ce fesant il n'existe aucune liaison entre les différentes requêtes.

La fonction de gestion des sessions crée automatiquement un identificateur de session requis pour le traitement des sessions et se charge de la sérialisation et de l'enregistrement des données associées à la session:

Attention: consultez php.net pour lire les dernières spécifications.

Fonctions PHP pour les sessions.

Une session est démarrée soit par la fonction session_start() soit implicitement par la fonction session_register().

Liste des fonctions:

Fonction
Action
session_start() démarre une session
session_destroy() met fin à la session et efface les données
session_name() retourne le nom de la session en cours
session_id() retourne le code de la session en cours
session_is_registred() vérifie si une variable est enregistrée dans la session
session_register() enregistre une variable dans la session courante
session_unregister() supprime une variable de la session courante
session_encode() retourne les données sérialisées de la session courante
session_decode() décode les données sérialisée de la session courante et initialise les variables correspondantes.

La fonction session_register($var) indique à PHP que la variable $var doit être enregistrée dans la session en cours. En plus cela indique à PHP de modifier la valeur enregistrée dans la session lorsque la valeur dans le script change. Autrement dit, la valeur dans la session est toujours actualisée par le script. $var peut être une variable de n'importe quel type.

Il y a cependant une limite à l'utilisation des fonctions sessions, il faut les insérer dans le code source tout en haut du document, car ces informations circulent dans l'en-tête http de la connexion serveur-client.

Exemple 1:

Code PHP
Résultat
<?
// se place tout en haut du document!
//démarre la session
session_start();
session_register("email")
?>
invisible...
<?php
// récupère id & nom session
$nom = session_name();
$id = session_id();
echo "nom session: $nom<br>";
echo "id session: $id<br>";

// enregistre un e-mail
// actualisé dans la session
$email = "gybuwebfac@free.fr";
?>

nom session: PHPSESSID
id session: 67edd9c307a2255642c5fe1538cac59d

Pour tester cet exemple, il suffit d'ouvrir une fenêtre et de voir si l'email est encore enregistré! contrôle...

Utilisation des sessions dans la pratique

Concrètement, il n'est pas pratique d'utiliser la fonction session_register() pour chaque variable à enregistrer si il y a plus de quelques variables. Une solution élégante que j'utilise dans mes site est de n'utiliser qu'un tableau $SESSION dans lequel je met toutes les valeurs à sauvegarder dans un élément. Il suffit alors d'appeler une seule fois en haut de chaque page session_register($SESSION).

Exemple 2:

Code PHP
Résultat
<?
// se place tout en haut du document!
session_start();
session_register("SESSION");

// vérifie que $SESSION
// est bien un tableau Array()
if (!isset($SESSION)) {
$SESSION = array();
}
?>

invisible...
<?php
// enregistre un e-mail
// actualisé dans la session
$SESSION["address"] = "Rue de la gare 19";
$SESSION["city"] = "1000 Lausanne";
echo $SESSION["address"];
echo "<br>";
echo $SESSION["city"];
?>
Rue de la gare 19
1000 Lausanne

Pour tester cet exemple, il suffit d'ouvrir une fenêtre et de voir si l'adresse est encore enregistrée! contrôle...

Créez un petit site composé de deux pages avec des liens entre elles. Dans la première demandez au visiteur son nom, et faites-le apparaîre dans le texte de la seconde page.

Exemple de solution.

Dans le même petit site, à la première page demandez au visiteur si il préfère lire le texte en noir sur blanc, vert sur noir, ou jaune sur vert-foncé (ou autres couleurs de votre choix) et affichez les autres pages dans le style choisi!

Exemple de solution.


© Copyright 2004 - Vincent Stadelmann