会话销毁/注销奇数问题
问题描述:
我的网站使用简单的登录系统为用户名和登录会话创建一个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专业版虽然 - 我做错了什么?
答
要使会话无效,您只需要删除您的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的示例