我试图了解会话以及如何结束它们的一些功能。我去了不同的网站,甚至在SO上,基本上,什么都不行。
我有一个应用程序,我正在努力工作,当用户登录时,我存储用户名这样(不打算粘贴整个代码,但你明白的意思)
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 web开发工具中的cookie,我看到它正在生成,所以我要说"它正在工作"到目前为止。
现在,当我想登出,长话短说,我有一个注销链接,把他们到一个页面,应该清除所有会话数据,并重定向到登录页面。当我测试应用程序,我点击注销链接,我得到重定向到登录页面,但当我回去,点击"索引页"链接。它让我直接进入。
在注销文件中,试图FORCE的问题在overkill lol,我有这个,似乎没有什么工作。
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等,然后导航到索引页,那么它会锁定我。
正如你在上面看到的,我尝试了很多东西,最后,我把它们放在一起,应该有所作为。我的问题是,因为我已经把所有这些功能尝试和删除/取消设置/删除一般会话,我还能做什么?我有点搞不懂它是怎么工作的。
有人能给我指个方向吗?您的注销页面顶部缺少一个session_start()
。它试图修改一个不存在的会话!
必须先启动会话才能结束会话。我建议你看一看……http://php.about.com/od/advancedphp/ss/php_sessions_3.htm
// you have to open the session to be able to modify or remove it
session_start();
// to change a variable, just overwrite it
$_SESSION['size']='large';
//you can remove a single variable in the session
unset($_SESSION['shape']);
// or this would remove all the variables in the session, but not the session itself
session_unset();
// this would destroy the session variables
session_destroy();