Référence : https://www.php.net/manual/fr/intro.session.php
Le support des sessions de PHP est un moyen de préserver des données entre plusieurs visites effectuées avec le même navigateur.
Chaque visiteur accédant à votre page web se voit assigner un identifiant unique, appelé "identifiant de session". Il peut être stocké soit dans un cookie, soit propagé dans l'URL.
Le nom du cookie qui sert d'identifiant pour les sessions en php est normalement "PHPSESSID". Vous pouvez le supprimer via la fonction setcookie.
Signature de secookie : setcookie(name, value, expire, path, domain, secure, httponly);
Exemple de suppression du cookie :
setcookie("PHPSESSID", "", time() - 3600);// le cookie a expiré depuis une heure...
Le support des sessions vous permet de stocker des données entre les requêtes dans le tableau super-globale $_SESSION. Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si session.auto_start est activé) ou sur demande (explicitement avec session_start()) s'il existe une session du même nom. Si c'est le cas, l'environnement précédemment sauvé sera recréé.
Attention si session.auto_start n'est pas activé, il est conseillé de commencer tous vos scripts qui utilisent les sessions par :
session_start();
Exemple de création d'une session
if (session_start()) { if (isset($_SESSION)) { $_SESSION["login"] = true; } };
Exemple d'utilisation d'une session
<?php if(!isset($_SESSION)) { if(!session_start()) echo "Problème de session"; } ?> <?php if(isset($_SESSION['login']) && $_SESSION['login']) : ?> <section> <a href="/node/<?= $GLOBALS['data']->nid; ?>/edit">Modifier</a> </section> <?php endif ?>
Sessions auto_start
Afin de ne pas être obligé d'invoquer systématiquement session_start(), il sera également nécessaire de modifier php.ini :
session.auto_start = 1
Enregistrez le fichier.
Relancez le serveur pour qu'il prenne en compte les modifications
Sous ubuntu 18.04 :
sudo systemctl reload apache2
session_destroy
session_destroy() détruit toutes les données associées à la session courante. Cette fonction ne détruit pas les variables globales associées à la session, de même, elle ne détruit pas le cookie de session. Pour accéder à nouveau aux variables de session, la fonction session_start() doit être appelée de nouveau.
Note: Vous n'avez pas besoin d'appeler session_destroy() depuis le programme généralement. Nettoyer le tableau $_SESSION plutôt que de détruire les données de session.
Pour détruire complètement une session, l'identifiant de la session doit également être effacé. Si un cookie est utilisé pour propager l'identifiant de session (comportement par défaut), alors le cookie de session doit être effacé. La fonction setcookie() peut être utilisée pour cela.
setcookie()
Un cookie est souvent utilisé pour identifier un utilisateur. Un cookie est un petit fichier que le serveur intègre sur l'ordinateur de l'utilisateur. Chaque fois que le même ordinateur demande une page avec un navigateur, il enverra également le cookie. Avec PHP, vous pouvez à la fois créer et récupérer des valeurs de cookies.
Créer des Cookies avec PHP
Un cookie est normalement créé avec la fonction setcookie() sauf si l'on utilise le mécanisme des session qui le créé automatiquement.
Signature : setcookie(name, value, expire, path, domain, secure, httponly);
Seul le paramètre "name" est obligatoire.
L'exemple suivant crée un cookie nomé "user" avec pour valeur "John Doe". Il expirera dans 30 jours (86400 * 30). Le "/" signifie que le cookie est valable sur tout le site web (choisir un répertoire sinon).