Session_set_cookie_params est utilisé pour définir les différents paramètres du cookie de session. L'utilisation de base est la suivante:
session_set_cookie_params([
'lifetime' => 3600, // cookie Temps d'expiration(Deuxième)
'path' => '/', // cookie Le chemin
'domain' => 'm66.net', // cookie Nom de domaine
'secure' => true, // Si elle est adoptée HTTPS transmission
'httponly' => true, // Empêcher les clients de JavaScript accéder cookie
]);
Cette fonction affecte la génération de cookies de session PHP, qui se font généralement avant d'appeler session_start () . Cependant, Session_Set_COOKIE_PARAMS affectera-t-il les sessions PHP existantes?
Le paramètre de cookie de session défini par session_set_cookie_params n'est efficace que pour les sessions ultérieures créées . Lorsque vous appelez session_start () pour démarrer la session, PHP crée un nouveau cookie de session. Ce cookie est généré en fonction des paramètres que vous définissez dans Session_Set_COOKIE_PARAMS .
Cependant, si vous avez démarré la session (via session_start () ), appeler Session_Set_COOKIE_PARAMS n'affectera pas les cookies utilisés par la session en cours. Les cookies d'une session existante ont été générés et ces paramètres ne seront pas mis à jour la prochaine fois que vous le demanderez. Par conséquent, Session_Set_COOKIE_PARAMS ne prend pas effet immédiatement pour les sessions existantes.
Supposons que vous appeliez session_set_cookie_params dans les deux situations suivantes:
// La première situation:Paramètres avant le démarrage de la session cookie paramètre
session_set_cookie_params([
'lifetime' => 3600,
'domain' => 'm66.net'
]);
session_start();
Dans ce cas, les cookies de la session seront générés en fonction du domaine et de la durée de vie que vous définissez.
Et si vous avez commencé la session:
// La deuxième situation:Appelez-le après le démarrage de la session session_set_cookie_params
session_start(); // Démarrer une session
session_set_cookie_params([
'domain' => 'm66.net',
'lifetime' => 7200
]);
Dans ce cas, session_set_cookie_params n'auront aucun impact sur la session en cours. Le nouveau paramètre Cookie ne prendra effet que la prochaine fois que session_start () est appelé.
Si vous devez modifier les paramètres de session existants (tels que le temps d'expiration du cookie), vous pouvez contrôler indirectement le contenu de session en modifiant la valeur dans le tableau $ _SESSION , mais vous ne pouvez pas modifier directement le cookie de session existant.
session_start(); // Démarrer une session
$_SESSION['user'] = 'example'; // installation session contenu
// 如果需要修改会话Temps d'expiration,Les ajustements peuvent être effectués dans la logique côté serveur,
// Mais il ne peut pas modifier directement la session existante cookie。