如果用户未登录(检查是否设置了会话变量),则转发浏览器的代码未触发

时间:2011-04-29 01:55:16

标签: php session redirect logout isset

如果用户未使用会话数据登录,我试图将所有页面设置为转发到登录屏幕,但是它无法正常工作。当用户单击链接时,它只是继续到新链接而不是转发到登录页面。我知道会话数据已被清除,因此不是问题。 这是相关的代码:

页面标题:

 <?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;
}
?>

2 个答案:

答案 0 :(得分:4)

session_destroy不会取消任何全局变量。

如果您需要在会话销毁后无条件重定向 - 只需删除isset,您就不需要它。

答案 1 :(得分:1)

关于如何在每个其他页面上执行此操作:

我在我网站上每个安全的php页面的开头使用了一个必需的。我称之为“auth.php”。如果用户未登录(通过会话变量检查),则auth.php会将其重定向到登录页面。

如果你有一个标题,这是一个放置它的好地方(如果它只包含在安全部分中,那是我的。)

我的注销页面会破坏会话并将其发送到登录页面。