Heim > Backend-Entwicklung > PHP-Tutorial > Ein alter PHP-Fehler: Doppelter Set-Cookie-Header empfangen?

Ein alter PHP-Fehler: Doppelter Set-Cookie-Header empfangen?

藏色散人
Freigeben: 2023-04-11 08:18:01
nach vorne
4898 Leute haben es durchsucht

Ein alter PHP-Fehler: Doppelter Set-Cookie-Header empfangen?

Wie kann das Problem gelöst werden, dass PHP doppelte Session Set-Cookie-Header ausgibt?

Ich bin heute auf einen alten Fehler gestoßen, den ich noch nie zuvor entdeckt hatte. Die Front-End-Antwort erhielt zwei doppelte Set-Cookie-Header.

Ich war lange verwirrt und nach einer langen Zeit der Fehlerbehebung kam ich schließlich zu dem Schluss, dass es durch wiederholte Aufrufe der Funktion session_start() verursacht wurde.

Jedes Mal, wenn die Funktion session_start() aufgerufen wird, wird ein Set-Cookie-Header ausgegeben.

Lösung:

session_start();
session_abort();
header_remove('Set-Cookie'); // 移除 Set-Cookie 头
Nach dem Login kopieren

Erweiterung:

Nach session_start() ist die entsprechende Sitzungsdatei gesperrt und wird erst am Ende des aktuellen Skripts entsperrt.

Wenn während des Sperrzeitraums ein Prozess auf dieselbe Sitzungs-ID zugreift, wird session_start() erst gestartet, wenn die Datei entsperrt ist.

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  ,依然可以对文件进行 写操作
Nach dem Login kopieren

session.cookie_lifetime Der Standardwert ist 0, was bedeutet, dass das Cookie ungültig ist, wenn der Browser geschlossen wird.

Zusätzlich zur Konfiguration von cookie_lifetime in php.ini kann es auch über die Funktion session_set_cookie_params festgelegt werden. gc_maxlifetime Der Standardwert beträgt 1440 Sekunden, das heißt, wenn das Zeitintervall zwischen den beiden Anforderungen des Benutzers 1440 Sekunden überschreitet,

Die serverseitige Sitzungsdatei wird von PHP als Müll behandelt. Wenn gc_probability/gc_divisor gleich 1 ist, wird die Sitzung beendet Die Datei wird gelöscht und recycelt.

Setzen Sie das Sitzungscookie und die Sitzungsdatei läuft nach 86400 Sekunden (1 Tag) ab:

session.cookie_lifetime=86400
session.gc_maxlifetime=86400
session.gc_probability=1
session.gc_divisor=1
Nach dem Login kopieren

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEin alter PHP-Fehler: Doppelter Set-Cookie-Header empfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yurunsoft.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage