Un vieux bug PHP : en-tête Set-Cookie en double reçu ?

藏色散人
Libérer: 2023-04-11 08:18:01
avant
4709 Les gens l'ont consulté

Un vieux bug PHP : en-tête Set-Cookie en double reçu ?

Comment résoudre le problème que PHP génère des en-têtes Session Set-Cookie en double ?

J'ai rencontré aujourd'hui un vieux bug que je n'avais jamais découvert auparavant. La réponse frontale a reçu deux en-têtes Set-Cookie en double.

J'ai été longtemps perplexe, et après une longue période de dépannage, j'ai finalement déterminé que cela était dû à des appels répétés à la fonction session_start().

Chaque fois que la fonction session_start() est appelée, un en-tête Set-Cookie sera affiché.

Solution :

session_start();
session_abort();
header_remove('Set-Cookie'); // 移除 Set-Cookie 头
Copier après la connexion

Extension :

Après session_start(), le fichier de session correspondant est verrouillé et ne sera déverrouillé qu'à la fin du script en cours.

Pendant la période de verrouillage, si un processus accède au même identifiant de session, session_start() ne démarrera pas tant que le fichier ne sera pas déverrouillé.

session_start();                               //starts the session,独占对应session id的文件
$_SESSION['user']="Me";               将变量写入对应的session 文件
session_write_close();                   // close write capability   ,关闭对文件 的 写独占
echo $_SESSION['user'];              // you can still access it  ,依然可以对文件进行 写操作
Copier après la connexion

session.cookie_lifetime La valeur par défaut est 0, ce qui signifie que le cookie n'est pas valide lorsque le navigateur est fermé

En plus de configurer cookie_lifetime dans php.ini, il peut également être défini via la fonction session_set_cookie_params. gc_maxlifetime La valeur par défaut est de 1440 secondes, c'est-à-dire que si l'intervalle de temps entre les deux requêtes de l'utilisateur dépasse 1440 secondes,

Le fichier de session côté serveur sera traité comme un déchet par PHP. Si gc_probability/gc_divisor est égal à 1, la session. le fichier sera supprimé et recyclé

Définissez le cookie de session et le fichier de session expire après 86 400 secondes (1 jour) :

session.cookie_lifetime=86400
session.gc_maxlifetime=86400
session.gc_probability=1
session.gc_divisor=1
Copier après la connexion

Apprentissage recommandé : "

Tutoriel vidéo PHP

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yurunsoft.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!