Carnet Wiki

Sessions et durée des cookies dans SPIP

Mémo des cookies déposés par SPIP et de leur durée par défaut

Les cookies sont gérés par la fonction spip_setcookie

Constante PHP

La constante _RENOUVELLE_ALEA définit la durée de validité de l’aléa qui sert pour l’authentification des cookies, en secondes. Elle permet notamment de modifier la durée des sessions. La valeur par défaut est de 12 heures. (Doc sur spip.net _RENOUVELLE_ALEA)

Nom du cookieFonctionDuréeAppel
spip_lang mémoriser la langue du visiteur 1 an ecrire/action/converser.php
spip_accepte_ajax mémoriser si le visiteur supporte l’ajax la session ecrire/inc/cookie.php

Valable jusqu’à SPIP 3.1

Nom du cookieFonctionDuréeAppel
spip_lang_ecrire mémoriser la langue du visiteur dans le backoffice 1 an ecrire/action/converser.php
spip_ecran mémoriser réglages écran et couleur du visiteur dans le backoffice 1 an ecrire/action/preferer.php
spip_admin “cookie de correspondance”
mémoriser l’accès aux backoffice
bouton dans la partie publique

1 semaine (admin)
14 jours (rédacteur)
ecrire/inc/auth.php
ecrire/action/cookie.php
spip_session mémoriser si une session est active * ecrire/inc/session.php

La durée de la session est égale à la constante _RENOUVELLE_ALEA (valeur par défaut 12 heures) * ...

A partir de SPIP 3.2
Suppression du cookie de correspondance par un simple cookie d’administration

Session et cookies

-  Selon Julien L :
-  Modifié et proposé sur programmer.spip.net

Une session dure le temps de la navigation. Elle est donc perdue quand on ferme le navigateur. Les cookies, stockés sur le navigateur survivent à sa fermeture et permettent de restaurer la session PHP.

SPIP ne crée pas de “session PHP” telles que créées par session_start() [doc php], mais gère ses propres sessions en créant les fichiers dans tmp/session.

Quand on se connecte à SPIP :
-  Création des données de session : un tableau contenant les infos de l’utilisateur que SPIP à fréquemment besoin de lire (cela lui évite des accès SQL fréquents par exemple).
-  Écriture du fichier dans tmp/session contenant ces infos
-  Pose d’un cookie sur le navigateur qui contient le nom du fichier dans tmp/session

Les cookies sont transmis à chaque hit, c’est pourquoi ils doivent rester léger, et c’est sans doute une des raisons de l’existence du fichier côté serveur dans tmp/session, car ainsi, le cookie ne contient globalement que le nom du fichier. Ça permet aussi d’éviter de faire transiter des infos personnelles entre client/serveur.

À chaque hit, et aussi lorsque le navigateur est fermé puis réouvert en se rendant de nouveau sur le site SPIP sur lequel vous étiez connecté lors d’une précédente navigation, le cookie est transmis au serveur à SPIP, qui s’en sert pour retrouver le fichier dans tmp/session et initialiser une session à partir de là. Vous êtes donc de nouveau connecté.

Le cookie permet donc de maintenir la connexion au delà de la fermeture du client. Mais il a une durée limitée décrit dans ecrire\inc\session.php. La fonction definir_duree_cookie_session précise :
-  Durée par défaut : 2 x _RENOUVELLE_ALEA
-  Durée de 20 x _RENOUVELLE_ALEA si l’utilisateur a coché la case « Rester connecté qq jours »

Au delà de cette durée, le cookie est expiré. Le serveur n’y a plus accès. Vous vous retrouvez dans la situation d’un anonyme.

erational - Mise à jour :18 October 2025 at 17:43