Les sessions PHP
Comment manipule-t-on une session ?
session_start()
Comme vu précédemment, cette fonction, qui ne prend pas d'argument, permet d'initialiser une session, ou de continuer une session déjà existante.
session_register(nom1, nom2, ...)
Cette fonction permet de stocker une variable dans une session. Son emploi demeure simple, il suffit de passer le nom de la variable à stocker en tant qu'argument.
<?php
session_start();
$login = 'maverick';
$password = '1234';
session_register('login', 'password');
?>
Cet exemple stockera les variables $login et $password dans la session, et par cette méthode, elles seront accessibles pour les autres pages affichées durant cette session.
A noter cependant que l'on ne peut passer à la fonction session_register que des variables globales, et non locales.
<?php
function test_session() {
$variable = '1234';
session_register('variable');
}
test_session();
echo "var de session : {$_SESSION['variable']}";
?>
Le code ci-dessus ne marchera pas, alors que celui ci-dessous fonctionnera :
<?php
function test_session() {
$GLOBALS['variable'] = '1234';
session_register('variable');
}
test_session();
echo "var de session : {$_SESSION['variable']}";
?>
session_destroy()
Si l'on peut créer une session, il faut pouvoir la détruire. c'est simple avec cette fonction , il suffit de l'appeler et la session en cours sera supprimée.
Il faut tout de même remarquer que les variables globales apportées par cette session avant sa destruction ne sont pas supprimées. Pour cela, il faut utiliser la fonction session_unset().
session_unset()
Cette fonction, comme dit plus haut, détruit les variables apportées par la session. Pas d'argument, juste un simple appel.
Comment accéder aux variables de sessions ?
Vous avez à votre disposition 2 méthodes pour manipuler les variables de session.
Vous pouvez utiliser directement le nom de la variable que vous avez passée dans la fonction session_register. Mais vous pouvez aussi y accéder via le tableau $_SESSION['nom_de_variable'].
De même, plutôt que d'utiliser session_register pour incorporer une variable dans la session, il est également possible de la définir via $_SESSION['nom'].
Toutefois, si vous décidez d'utiliser cette méthode, il ne faudra plus utiliser la fonction session_register(), session_is_registered() ou session_unregister().
session_is_registered()
Cette fonction, vous l'aurez compris, permet de tester si une variable fait partie d'une session. Si, comme précisé précédemment, vous avez utilisé $_SESSION, il vous suffira de faire :
<?php
isset($_SESSION['ma_variable']);
?>
session_unregister()
Dans la même série, cette fonction permet de détruire une variable de session. Son équivalent est unset.
<?php
session_unregister('ma_variable');
?>
et :
<?php
unset($_SESSION['ma_variable']);
?>
Il s'agit des fonctions dont vous vous servirez le plus avec les sessions. Voici tout de même, pour votre culture générale, quelques fonctions qui apparaitront de temps en temps.
session_name([opt nom])
Elle vous permet de déterminer le nom de la variable transmise via cookie ou via URL (par défaut PHPSESSID). Si vous lui passez un argument, elle changera le nom par défaut. (à utiliser avant d'initialiser une session)
session_id([opt id])
Comme vous avez récupéré le nom de la variable, il peut être intéressant de connaître sa valeur non ? Voilà, avec session_id, vous le saurez De même, si un argument lui est passé, elle redéfini l'identifiant de session.