8.117 Sessions
8 Référence des fonctions
Manuel PHP
. Introduction . Sessions et sécurité . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes pré-définies ->Exemples . Passer l'identifiant de session (session ID) . Gestion personnalisée des sessions . session_cache_expire . session_cache_limiter . session_commit . session_decode . session_destroy . session_encode . session_get_cookie_params . session_id . session_is_registered . session_module_name . session_name . session_regenerate_id . session_register . session_save_path . session_set_cookie_params . session_set_save_handler . session_start . session_unregister . session_unset . session_write_close
|
8.117.8 Exemples
| Note | |
Depuis PHP 4.1.0,
$_SESSION
est disponible comme
variable globale, au même titre que
$_POST
,
$_GET
,
$_REQUEST
, etc.
Contrairement à
$HTTP_SESSION_VARS
,
$_SESSION
est toujours globale. Par conséquent, vous
n'avez pas besoin d'utiliser le mot réservé
global
avec
$_SESSION
. Notez que cette documentation
a été modifiée pour utiliser
$_SESSION
.
Vous pouvez toujours le remplacer par
$HTTP_SESSION_VARS
si vous préférez l'ancienne version.
Notez également que vous devez démarrer votre session en utilisant la fonction
session_start
avant d'utiliser
la variable super-globale
$_SESSION
.
Les clés du tableau
$_SESSION
sont sujettes
aux mêmes limitations que les variables PHP habituelles, c'est-à-dire
qu'elles ne peuvent pas commencer par un nombre, mais commencer par
une lettre ou un souligné '_'. Pour plus de détails, reportez-vous à
la section sur les variables .
|
Si
track_vars
est
activé et
register_globals
est désactivé, seuls les éléments du tableau global
$_SESSION
contiendront les variables
enregistrées dans la session. Les variables de sessions relues seront
uniquement disponibles dans
$_SESSION
.
L'utilisation de
$_SESSION
(ou
$HTTP_SESSION_VARS
avec PHP 4.0.6 et plus ancien) est
recommandé pour une meilleure sécurité et un code plus facilement
entretenu. Avec
$_SESSION
, il n'y a pas besoin
d'utiliser les fonctions
session_register
,
session_unregister
et
session_is_registered
. Les variables de sessions
sont accessibles comme toute autre variable.
| Enregistrer une variable avec $_SESSION . |
<?php session_start(); // Utilisez $HTTP_SESSION_VARS avec PHP 4.0.6 ou plus ancien if (!isset($_SESSION['compteur'])) { $_SESSION['compteur'] = 0; } else { $_SESSION['compteur']++; } ?>
|
| Retirer une variable de session avec $_SESSION et register_globals inactif. |
<?php session_start(); // Utilisez $HTTP_SESSION_VARS avec PHP 4.0.6 ou plus ancien unset($_SESSION['compteur']); ?>
|
| Attention | |
N'utilisez PAS la fonction
unset
avec
$_SESSION
sous la forme
unset($_SESSION)
sinon, cela rendra impossible
l'enregistrement de données dans la session en utilisant la super-globale
$_SESSION
.
|
| Attention | |
Vous ne pouvez pas utiliser les références sur des variables de session
car il n'y a aucune manière faisable de restaurer une référence vers une
autre variable.
|
Si
register_globals
est activé, alors toutes les variables globales peuvent être
enregistrées comme variables de session, et toutes les variables de
sessions seront reconstituées comme variables globales. Comme PHP doit
savoir quels variables globales sont enregistrées comme variables
de sessions, l'utilisateur doit enregistrer les variables avec
session_register
tandis que
$HTTP_SESSION_VARS
et
$_SESSION
ne nécessitent pas
session_register
.
Si
register_globals
est activé, alors les variables globales et les entrées dans le tableau
$_SESSION
seront des références sur la même valeur pour
les valeurs qui auront été enregistrées avant le démarrage de la session
(donc, dans les page précédentes). Cependant, si la variable a été enregistrée
avec
$_SESSION
, alors, la variable globale est disponible
jusqu'à la prochaine requête.
De plus, si vous enregistrez une nouvelle variable avec la fonction
session_register
, l'entrée dans l'environnement
global et
$_SESSION
ne fera pas de référence vers la
même valeur jusqu'à la prochaine utilisation de
session_start
(ceci s'applique à PHP 4.2 et
avant seulement). C'est à dire qu'une modification dans les variables
globales ne sera pas répercutée dans les entrées de
$_SESSION
. Il est peu probable que cela ait un impact en
pratique et, de plus, cela a été corrigé en PHP 4.3.
|