0

我制作了一个登录脚本,当我想检查用户何时登录时,我使用了函数 logged_in(),它包括:

function logged_in()
{
    if(isset($_SESSION['id']))
    {
        return true;
    }
    else 
    {
        return false;
    }
}

会话设置在这里:

else if ($login === true)
        {
            echo 'Login success.';
            include 'include/aside.php';
            include 'include/footer.php';
            $userid = id_from_username($username);
            $usernameforsession = username_from_id($userid);
            $_SESSION['id'] = $userid;
            $_SESSION['username'] = $usernameforsession;
            header( "refresh:2;url=index.php");
            exit();
        }

这是我在'index.php'中使用它的一个例子:

if(logged_in() === true)
{
    echo 'Site content when user is logged in.';
} else if(logged_in() === false)
{
    include 'include/widgets/register.php'; //registration form
}

是的,该功能包含在每个页面中。我做了这个功能,所以它应该可以工作......为什么它不工作?

4

3 回答 3

1

替换此代码:

if(logged_in() === true)

使用此代码:

if(isset($_SESSION['id']))

这消除了所有中间商。

于 2012-08-12T13:34:14.520 回答
0

如果您绝对确定每个页面上都包含该声明,那么我建议您检查以确保该函数未声明为对象内的方法。

于 2012-08-12T13:25:19.823 回答
0

尽管您列出了相当多的代码,但您确定要包含session_start();在每一页的顶部吗?在对会话变量进行任何操作之前,您需要调用它。

第二件事是错误消息显示该函数未定义-您确定将其包含在页面的源代码中还是包含在每个页面上定义它的代码中?

如果您将它放在一个名为“functs.php”的文件中,则需要include()在将调用该函数的每个页面中都有它。

于 2012-08-12T13:20:21.587 回答