【发布时间】:2011-02-26 22:49:49
【问题描述】:
在我的框架中,我多次调用 session_write_close()。
假设会话已与用户代理启动。以下代码...
foreach($i = 0; $i < 3; $i++) {
session_start();
session_write_close();
}
...将以下请求头发送到浏览器:
Set-Cookie PHPSESSID=bv4d0n31vj2otb8mjtr59ln322; path=/
PHPSESSID=bv4d0n31vj2otb8mjtr59ln322; path=/
不应该有 Set-Cookie 标头,因为正如我规定的,会话 cookie 已经在用户端创建。但是在上面脚本中的第一个之后对 session_write_close() 的每次调用都会导致 PHP 指示浏览器再次设置当前会话。
这并没有破坏我的应用程序或任何东西,但它很烦人。有没有人知道防止 PHP 在每次后续调用 session_write_close 时重新设置 cookie?
编辑
问题似乎在于每次后续调用 session_start() 时,PHP 都会将会话 cookie 重新设置为它自己的 SID 并发送一个 Set-Cookie 响应标头。但是为什么呢??
【问题讨论】:
-
我在这里用一个解决方案回答了这个问题:stackoverflow.com/questions/10046570/…