7.94 Sessions
7 Index des fonctions
Manuel PHP
. Introduction . Sessions et sécurité . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes prédefinies ->Exemples . Passer l'identifiant de session (session ID) . Gestion personnalisée des sessions . session_cache_expire . session_cache_limiter . 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
|
7.94.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.
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
maintenable. 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['count'])) { $_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']); ?>
|
Retirer une variable de session avec $_SESSION et register_globals activé, après l'avoir enregistré avec $_SESSION. |
<?php session_start(); // Avec PHP 4.3 et plus récent, vous pouvez simplement utiliser l'exemple précédent session_unregister('compteur'); ?>
|
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
.
Enregistrer une variable avec register_globals activé |
<?php if (!session_is_registered('compteur')) { session_register("compteur"); $compteur = 0; } else { $compteur++; } ?>
|
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).
De plus, si vous enregistrez une nouvelle variable avec la fonction
session_register
, l'entrée dans l'environnement
globale 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 est
avant seulement). C'est à dire qu'une modification dans les variables
globales ne seront pas répercutés 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.
|