嗯,这可能听起来有点奇怪.我们在特定条件下遇到一些特定浏览器的问题,最后将问题缩小到我们在执行session_regenerate_id()之后没有正确销毁旧会话这一事实.我相信我现在通过执行session_regenerate_id(true)解决了这个问题,但是如何验证先前的会话是否真的不存在?有人建议使用cURL,但我无法找到他们的文档.可悲的是,(?)老板不接受'它只是有效'的答案,所以我真的很感激任何建议!
默认情况下,session_regenerate_id();只会用新会话替换当前会话。因此旧的会话文件实际上不需要被删除。但这样做session_regenerate_id( true );会删除旧的会话文件。(http://php.net/session_regenerate_id)
要检查旧会话是否已删除,您可以执行以下操作
<?php
$file=ini_get('session.save_path')."/sess_".session_id();
$gotDeleted = file_exists( $file );
?>
Run Code Online (Sandbox Code Playgroud)
您还可以做一个session_destroy(). 如果必须保留一些变量,可以尝试unset()特定$_SESSION值。
| 归档时间: |
|
| 查看次数: |
483 次 |
| 最近记录: |