如果用户未使用会话数据登录,我试图将所有页面设置为转发到登录屏幕,但是它无法正常工作。当用户单击链接时,它只是继续到新链接而不是转发到登录页面。我知道会话数据已被清除,因此不是问题。 这是相关的代码:
页面标题:
<?php
session_start();
if(!isset($_SESSION['answer']))
{
header('Location: /?login');
exit;
}?>
登录会话声明:
$answer = mssql_fetch_array($res);
$_SESSION['answer']=$answer[0];
注销:
<?php
session_start();
session_destroy();
if(!isset($_SESSION['answer']))
{
header('Location: /?login');
exit;
}
?>
答案 0 :(得分:4)
session_destroy不会取消任何全局变量。
如果您需要在会话销毁后无条件重定向 - 只需删除isset
,您就不需要它。
答案 1 :(得分:1)
关于如何在每个其他页面上执行此操作:
我在我网站上每个安全的php页面的开头使用了一个必需的。我称之为“auth.php”。如果用户未登录(通过会话变量检查),则auth.php会将其重定向到登录页面。
如果你有一个标题,这是一个放置它的好地方(如果它只包含在安全部分中,那是我的。)
我的注销页面会破坏会话并将其发送到登录页面。