session_set_cookie_params
session_set_cookie_params($lifetime_or_options)
Définit les paramètres du cookie qui transporte l’identifiant de session. Le réglage vaut pour le script en cours et doit être appelé avant session_start(). Renvoie true, en cas d’échec false.
Paramètres
- $lifetime_or_options – un tableau (dès PHP 7.3) avec les clés lifetime (durée de vie en secondes, 0 = jusqu’à la fermeture du navigateur), path, domain, secure, httponly et samesite. L’ancienne forme prend les paramètres les uns après les autres : session_set_cookie_params($lifetime, $path, $domain, $secure, $httponly).
Exemples
var_dump(session_set_cookie_params(array(
"lifetime" => 0,
"path" => "/",
"secure" => true,
"httponly" => true,
"samesite" => "Lax",
))); // bool(true)
$p = session_get_cookie_params();
echo $p["samesite"]; // Lax
var_dump($p["httponly"]); // bool(true)
session_start();
// impossible à modifier pendant que la session est active (la notice est masquée ici avec @)
var_dump(@session_set_cookie_params(array("lifetime" => 3600))); // bool(false)
session_destroy();
Points d’attention
- Le réglage ne vaut que pour le script en cours. Appelez-la sur chaque page avant session_start(), idéalement dans un fichier commun. Le même réglage peut être fixé durablement dans php.ini (session.cookie_httponly…).
- secure n’envoie le cookie que par HTTPS. Sur un site sans HTTPS, la session ne fonctionnerait pas.
- httponly empêche JavaScript d’accéder au cookie, un script malveillant ne peut donc pas le voler.
- samesite Lax ou Strict limite l’envoi du cookie depuis d’autres sites et protège contre les requêtes falsifiées. None exige secure.
- La durée de vie du cookie ne prolonge pas la vie des données de session sur le serveur. Celle-ci est fixée par session.gc_maxlifetime.
Fonctions associées :
session_start()
setcookie()
session_name()
session_get_cookie_params()