Utilisation simple

Les sessions sont un moyen simple de stocker des donnĂ©es individuelles pour chaque utilisateur en utilisant un identifiant de session unique. Elles peuvent ĂȘtre utilisĂ©es pour faire persister des informations entre plusieurs pages. Les identifiants de session sont normalement envoyĂ©s au navigateur via des cookies de session, et l'identifiant est utilisĂ© pour rĂ©cupĂ©rer les donnĂ©es existantes de la session. L'absence d'un identifiant ou d'un cookie de session indique Ă  PHP de crĂ©er une nouvelle session, et gĂ©nĂšre ainsi un nouvel identifiant de session.

Les sessions suivent une cinĂ©matique simple. Lorsqu'une session est dĂ©marrĂ©e, PHP va soit rĂ©cupĂ©rer une session existante en utilisant l'identifiant de session passĂ© (habituellement depuis un cookie de session) ou si aucun identifiant de session n'est passĂ©, il va crĂ©er une nouvelle session. PHP va ainsi peupler la variable superglobale $_SESSION avec toutes les donnĂ©es de session une fois la session dĂ©marrĂ©e. Lorsque PHP s'arrĂȘte, il va prendre automatiquement le contenu de la variable superglobale $_SESSION, le sĂ©rialiser, et l'envoyer pour stockage au gestionnaire de sauvegarde de session.

Par défaut, PHP utilise en interne le gestionnaire de sauvegarde files qui est défini via la directive session.save_handler. Les données de session seront sauvegardées sur le serveur à l'endroit spécifié par la directive de configuration session.save_path.

Les sessions peuvent ĂȘtre dĂ©marrĂ©es manuellement en utilisant la fonction session_start(). Si la directive de configuration session.auto_start est dĂ©finie Ă  1, une session dĂ©marrera automatiquement lors du dĂ©but de la demande.

Les sessions s'arrĂȘtent automatiquement lorsque PHP a terminĂ© d'exĂ©cuter un script, mais peuvent ĂȘtre stoppĂ©es manuellement en utilisant la fonction session_write_close().

Exemple #1 Enregistrer une variable avec $_SESSION.

<?php
session_start
();
if (!isset(
$_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
?>

Exemple #2 Retirer une variable de session avec la superglobale $_SESSION.

<?php
session_start
();
unset(
$_SESSION['count']);
?>

Attention

N'utiliser 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.

Avertissement

Il n'est pas possible d'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.

Note:

Les sessions basĂ©es sur un fichier (par dĂ©faut en PHP) verrouillent le fichier de session lorsqu'une session est ouverte via la fonction session_start() ou implicitement via la directive de configuration session.auto_start. Une fois verrouillĂ©e, aucun autre script ne peut accĂ©der au mĂȘme fichier de session tant que la session n'a pas Ă©tĂ© fermĂ©e par le script l'ayant ouverte, ou tant que la fonction session_write_close() n'a pas Ă©tĂ© appelĂ©e.

Ceci peut ĂȘtre gĂȘnant pour les sites web utilisant AJAX et produisant plusieurs requĂȘtes concurrentes. La façon la plus simple pour contourner ce problĂšme est d'appeler la fonction session_write_close() dĂšs lors que les modifications dans la session ont Ă©tĂ© effectuĂ©es, de prĂ©fĂ©rence en dĂ©but de script. Il est possible d'aussi utiliser un autre gestionnaire de session qui supporte la concurrence.

add a note

User Contributed Notes

There are no user contributed notes for this page.