我正在尝试了解会话以及结束它们的某些功能如何工作。我去过不同的网站/甚至在这里,基本上,没有任何工作。
我有一个我正在尝试使用的应用程序,当用户登录时,我像这样存储用户名(不打算粘贴整个代码,但你明白了)
if($row == 1){
session_start();
$_SESSION['usrname'] = $login_usrname;
$_SESSION['usrpass'] = $login_usrpass;
header("Location:index.php");
exit;
}
在所述应用程序的索引页面上,我有一张这样的支票
session_start();
if(!isset($_SESSION['usrname']) && !isset($_SESSION['usrpass'])){
header("Location:login-acc.php");
exit;
}
它让他们进来。我检查了 Firefox 网络开发工具中的 cookie,我看到它正在生成,所以到目前为止我要说“它正在工作”。
现在,当我想注销时,长话短说,我有一个注销链接,可以将他们带到一个页面,该页面应该清除所有会话数据并将它们重定向到登录页面。当我测试应用程序并单击注销链接时,我被重定向到登录页面,但是当我返回并单击“索引页面”链接时。它让我直接进去。
在注销文件中,试图以矫枉过正的方式强制解决问题大声笑,我有这个,但似乎没有任何效果。
unset($_SESSION['usrname']);
unset($_SESSION['usrpass']);
session_unset();
$_SESSION = array();
session_destroy();
setcookie('PHPSESSID', '', time()-3600,'/', '', 0, 0);
header("Location:login-acc.php");
exit;
它将我重定向到登录页面,但同样,当我手动转到索引页面时,它让我直接进入。或者在被重定向到登录页面后,我点击“返回”按钮并让我直接进入。
如果我然后进入 FF Web 开发人员工具应用程序并删除所有 cookie 等,然后导航到索引页面,那么它会将我锁定在外面。
正如您在上面看到的,我尝试了多种方法,最后,我将它们全部放在一起,这应该做点什么。我的问题是,既然我已经投入了所有这些功能来尝试删除/取消设置/删除一般会话,我还能做什么?我对它应该如何工作感到有点迷茫。
有人可以引导我朝着正确的方向前进吗?