我正在尝试理解会话以及一些结束会话的函数是如何工作的。我去过不同的网站,甚至在这里,基本上,什么都不起作用。
我有一个我正在尝试的应用程序,当用户登录时,我像这样存储用户名(不打算粘贴整个代码,但你明白了)
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;
}
它会让他们进来。我检查了firefoxes web开发工具中的cookie,我看到它正在生成,所以到目前为止我将说“它在工作”。
现在,当我想注销时,长话短说,我有一个注销链接,它将他们带到一个页面,该页面应该清除所有会话数据,并将他们重定向到登录页面。当我测试应用程序并单击注销链接时,我被重定向到登录页面,但当我返回并单击“索引页面”链接时。它能让我直接进去。
在注销文件中,尝试强制问题在overkill笑,我有这个,但似乎没有什么工作。
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 developer tools应用程序并删除所有cookie等,并导航到索引页面,那么它会将我锁在外面。
正如你在上面看到的,我尝试了很多东西,最后,我把它们都放在一起,这应该会有一些效果。我的问题是,既然我已经放入了所有这些函数来尝试删除/取消设置/删除会话,我还能做什么呢?我对它的工作原理有点迷惑。
有人能给我指引正确的方向吗?
发布于 2013-04-07 04:20:44
您的注销页面顶部缺少session_start()
。它正在尝试修改一个不存在的会话!
发布于 2013-04-07 04:31:15
您必须启动会话才能结束会话。我建议你看看...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();
https://stackoverflow.com/questions/15855550
复制相似问题