PHP结束会议(不同的方式)我不明白

时间:2013-04-06 20:16:30

标签: php

我正在尝试理解会话以及结束它们的一些功能如何工作。 我已经去了不同的地点/甚至在这里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;
}

它让他们进来。我检查firefoxes web dev工具中的cookie,我看到它正在生成,所以我打算说“它的工作”到目前为止。

现在,当我想要注销时,长话短说我有一个注销链接,将它们带到一个页面,该页面应该清除所有会话数据并将它们重定向到登录页面。当我测试应用程序并单击注销链接时,我会被重定向到登录页面,但当我返回并单击“索引页面”链接时。它让我直接进入。

在注销文件中,尝试 FORCE 过度杀伤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等,并导航到索引页面,那么它会把我锁定。

正如你在上面所看到的,我尝试了多种方法,最后,我将它们全部扔在一起,应该做些什么。我的问题是,因为我已经放入了所有这些函数来尝试删除/取消/删除一般的会话,我还能做什么?关于它应该如何运作,我有点迷失。

有人能引导我朝着正确的方向前进吗?

2 个答案:

答案 0 :(得分:2)

您在退出页面顶部缺少session_start()。它试图修改一个不存在的会话!

答案 1 :(得分:1)

您必须启动会话才能结束会话。我建议看看...... 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();