0

我是 PHP 新手,面临安全问题。如果他们没有登录,我用它来重定向未经授权的用户。

<?php
session_start();

if(!isset($_SESSION['user_id'])) {
    header('Location: login.php');
}
?>

它在我页面的每个顶部,但是当我登录并单击我的受保护页面时,它将重定向到登录页面而不是打开原始/受保护页面并且我的会话变量设置在我的登录页面上 如何将此会话变量包含在我的受保护页面中登录页面的页面。

4

2 回答 2

1

如果您何时登录,它会将您发送到登录页面,那么$_SESSION['user_id']可能没有设置,或者您没有在文件中包含会话,要检查它,请执行以下操作:

var_dump($_SESSION['user_id'])

在页面上,并暂时省略header如果 var_dump 返回 NULL,则表示$_SESSION['user_id']未设置

于 2013-05-04T08:56:58.420 回答
0

尝试这个:

if(!isset($_SESSION['user_id']))
{
    // The user id variable is not set. Therefore, the user is most likely a guest.
    $_SESSION['user_id'] == 0;
}
if($_SESSION['user_id'] == 0)
{
    // The user does not have a user id set. We assume, therefore, that they are a guest.
    header("Location: login.php");
}

此外,在您的登录脚本中,确保您设置$_SESSION['user_id']为 0 以外的任何值。

于 2013-05-04T11:20:36.927 回答