2012-08-02 143 views
0

我的网站使用简单的登录系统为用户名和登录会话创建一个cookie。如果有人访问home.php并且登录会话设置为登录状态,它们将被推送到登录区域。否则,他们使用简单的表单和处理程序页面登录。要注销用户点击一个链接,把他们带到logout.php其中包含以下代码:会话销毁/注销奇数问题

<? 

session_start(); 

setcookie(username, $username, time()-360000); 

session_start($_SESSION['login']); 
$_SESSION["Login"] = "no"; 

header("Location: home.php"); 
session_destroy(); 

?> 

这里是正在发生的事情。单击注销按钮的用户将被正确地踢出到页面home.php。如果他们刷新页面,他们仍然在home.php页面上。目前看来很好。

但是,如果他们远离主页导航,它们将被带入登录区域。如果他们转到登录区域的URL,他们不会被踢出(因为会话检查脚本确认会话值已设置为登录)。

我傻眼了。我不是一个PHP专业版虽然 - 我做错了什么?

回答

0

要使会话无效,您只需要删除您的cookie。

setcookie("username", "", time()-360000); 

会完成这项工作。请注意,用户名应该用引号",否则它不会引用cookie名称。

所以你在注销代码就会像下面

<? 
    session_start(); 
    setcookie("username", "", time()-3600); 
    header("Location: home.php"); 
?> 

当用户登录并验证你需要为他们设定一个cookie,然后将其重定向到您的验证网址

也需要检查你在每一页的开始饼干在你的验证区域像下面

<? 
    session_start(); 
    if (!isset($_COOKIE["username"])) 
     header("Location: home.php"); 
?> 

希望这有助于

Here是另一个设置,使用和删除Cookie的示例