Accueil >PHP >Référence PHP – fonctions >session_set_cookie_params

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()