在我的框架中,我多次调用 session_write_close()。
让我们假设一个与用户代理的 session 已经启动。以下代码...
foreach($i = 0; $i < 3; $i++) {
session_start();
session_write_close();
}
...将向浏览器发送以下请求 header :
Set-Cookie PHPSESSID=bv4d0n31vj2otb8mjtr59ln322; path=/
PHPSESSID=bv4d0n31vj2otb8mjtr59ln322; path=/
不应该有 Set-Cookie header ,因为按照我的规定, session cookie 已经在用户端创建。但是在上面的脚本中第一次调用 session_write_close() 之后,每次调用 session_write_close() 都会导致 PHP 指示浏览器再次设置当前 session 。
这不会破坏我的应用程序或任何东西,但它很烦人。有没有人知道如何防止 PHP 在每次后续调用 session_write_close 时重新设置 cookie?
编辑
问题似乎是每次后续调用 session_start() 时,PHP 都会将 session cookie 重新设置为它自己的 SID,并发送一个 Set-Cookie 响应 header 。但是为什么??
最佳答案
PHP不推荐这样做,有bunch of bugs submitted for this .因为他们认为这不是一个好的做法 - 这是不会修复的错误。
关于PHP session_write_close() 不断发送 set-cookie header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130241/