所以我试图登录和注销我的网站,同时在注销时限制对网站所有部分的访问。以下是我初始化会话的方法:
session_name('my_session');
session_start();
session_save_path('/tmp');
我设置了一些vars,然后我破坏了我的会话:
session_name('my_session');
session_start();
session_destroy();
session_write_close();
unset($_SESSION['var1']);
unset($_SESSION['var2']);
然后,我在我的网站上的一个正常页面上运行session_status():
if (session_status() == PHP_SESSION_ACTIVE) {
die('A session is still active.');
}
如果说还有一个会议要开,那就真的死了。
现在,如果我有一些未命名的会话,我可以理解,但我已经重新启动了Apache两次,并删除了/tmp
中的会话文件。我还能做些什么来否定会话?
您可以使用session_write_close来尝试吗?因为session_delete将在脚本结束时结束会话。
如果你想确保销毁会话,你可以使用session_regenerate_id,这将用一个新的空会话覆盖当前会话。
在我的经验中,另一个常见的问题是,如果您的注销页面与相同的域cookie规则不匹配,并且无法将其从该页面中删除。