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 头
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 ,依然可以对文件进行 写操作
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
Empfohlenes Lernen: „
PHP-Video-TutorialDas 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!