En PHP, les variables de session sont des variables qui peuvent être stockées sur le serveur et associées à une session unique utilisateur.
Chaque connexion au serveur web depuis un navigateur Internet déclanche la création d'une session entre le serveur et le navigateur.
Une session contient un identifiant unique (clé de session), et c'est cette clé qui est associée aux diférentes variables de session d'un utilisateur.
Les variables de session permettent de stocker des données persistantes pour un utilisateur donné au cours de plusieurs requêtes HTTP.
Les variables de session sont très utiles pour les sites avec authentification (login + password).
La session permet de garder en mémoire les informations de connexion et les identifiants utilisateur pendant la durée de navigation.
Ce qui évite de demander une nouvelle authentification à chaque changement de page.
Elles peuvent aussi garder en mémoire les préférences d'un utilisateur pendant son temps de navigation sur le site.
Pour utiliser les variables de session en PHP, vous devez d'abord démarrer une session avec la fonction PHP session_start()
.
Ensuite, vous pouvez enregistrer des données dans la session en assignant des valeurs à des variables de session comme ceci :
<?php
session_start();
$_SESSION['nom_variable'] = "valeur";
?>
Vous remarquez qu'une variable de session est en fait un tableau PHP qui porte toujours le même nom $_SESSION
.
Le tableau fonction avec le couple clé -> valeur où la clé sera le nom de votre variable.
Vous pouvez accéder à une variable de session en utilisant le nom de votre variable entre crochets, comme ceci :
<?php
echo $_SESSION['nom_variable'];
?>
Il est important de noter que les variables de session sont associées à un utilisateur donné et ne
sont accessibles que pour cet utilisateur sur un navigateur donné.
Si un utilisateur accède à votre site à partir de plusieurs navigateurs ou ordinateurs,
ils auront des sessions distinctes pour chacun d'entre eux.
Il est également important de noter que les variables de session sont stockées sur le serveur,
ce qui les rend plus sûres que les cookies, qui sont stockés sur l'ordinateur de l'utilisateur.
Cependant, cela signifie également que les données de session ne sont pas accessibles en dehors de votre serveur.
Les variables de session disparaissent dès que l'utilisateur ferme son navigateur Internet.
Si vous avez besoin de vider votre tableau de session pour le réinitialiser vous pouvez simplement écraser les valeurs du tableau comme ceci :<?php
$_SESSION = array();//On écrase le contenu de $_SESSION avec un talbeau vide
?>
Il n'est pas conseilé d'utiliser les fonctions PHP session_destroy()
et session_unset()
qui comportent des contraintes et des risques pour la réutilisation des sessions dans votre code.
<?php
unset($_SESSION['nomDeSession']);//On supprime la référence mémoire de la session 'nomDeSession'
/*** A ne surtout pas faire ****/
unset($_SESSION[]);//On supprime totalement la référence mémoire de la session. Il ne sera plus possible d'utiliser les sessions !
?>
Une session a une durée de vie limitée dans le temps.
Elle peut être configurée de plusieurs manières dans le fichier de configurtation de PHP (PHP.ini).
Indique le nombre de secondes après lequel la session sera réinitialisée, que l'internaute soit actif ou pas (que vous changiez de page ou non).
Par defaut la valeur est à 0.
La valeur 0 signifie que la session ne sera pas détruite automatiquement tant que le navigateur sera ouvert (pas de limite de temps).
Mais une fermeture du navigateur causera automatiquement la destruction de la session.
Si on remplacait 0 par 3600 alors la durée maximale de la session serait de une heure quoi qu'il arrive.
Après ce temps, la session est automatiquement effacée même si l'utilisateur navigue encore sur le site.
Par contre, l'usager pourrait fermer son navigateur puis le réouvrir et, s'il retourne sur le site Web avant que le délai soit dépassé, sa session serait toujours vivante.
Vous pouvez modifier le comportement de PHP diretement dans un script PHP.
Cette modification durera le temps de l'execution du script PHP et uniquement pour ce script.
C'est la fonction ini_set()
qui permet de modifier une configuration de php.ini sans modifier ce fichier.
<?php
ini_set('session.gc_maxlifetime', 7200);
Attention : cette instruction doit être placée AVANT le session_start() pour qu'elle soit prise en compte.
<?php
// Durée de vie d'une session (en secondes)
$lifetimeSession = 60 * 60; // une heure
$lifetimeCookie = 60 * 60 * 24; // une journée
// Modification de la durée de vie d'une session après la derniere action utilisateur
ini_set('session.gc_maxlifetime', $lifetime);
// Modifier la durée de vie du cookie de session
ini_set('session_set_cookie_params', $lifetimeCookie);
// Démarrer la session
session_start();