#PHP が重複した Session Set-Cookie ヘッダーを出力する場合の問題を解決するにはどうすればよいですか?
今日、これまで発見したことのない古いバグに遭遇しました。フロントエンド応答は 2 つの重複した Set-Cookie ヘッダーを受信しました。
私は当惑し、長い時間をかけてトラブルシューティングを行った結果、最終的に、session_start() 関数の繰り返し呼び出しが原因であることが判明しました。
session_start() 関数が呼び出されるたびに、Set-Cookie ヘッダーが出力されます。
解決策:
session_start(); session_abort(); header_remove('Set-Cookie'); // 移除 Set-Cookie 头
拡張:
対応するセッション ファイルは session_start() の後にロックされ、現在のセッションが終了するまでロックは解除されません。脚本 。
ロック期間中にプロセスが同じセッション ID にアクセスした場合、ファイルのロックが解除されるまで session_start() は開始されません。
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 のデフォルトは 0 です。これは、ブラウザを閉じると cookie が無効になることを意味します。
cookie_lifetime は、php.ini で設定するだけでなく、 function session_set_cookie_params.
session.gc_maxlifetime デフォルトは 1440 秒です。つまり、2 つのユーザー要求間の時間間隔が 1440 秒を超える場合、
サーバー側のセッション ファイルが処理されます。 PHP によってガベージとして認識される場合、 gc_probability/gc_divisor が 1 に等しい場合、セッション ファイルは削除されてリサイクルされます。
セッション Cookie とセッション ファイルを 86400 秒 (1 日) 後に期限切れになるように設定します:
session.cookie_lifetime=86400 session.gc_maxlifetime=86400 session.gc_probability=1 session.gc_divisor=1
推奨される学習: 「PHP ビデオ チュートリアル >>
」以上が古い PHP のバグ: 重複した Set-Cookie ヘッダーを受信しましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。