0

我对 PHP 有一个小问题,可能对你们大多数人来说这是一个愚蠢的问题,但我需要你的帮助。
这是我的代码:

function is_logged() {
if(isset($_COOKIE['username'])) {
    return true;
} else {
    return false;
}
}

这是整个代码的一部分,如果没有记录,我需要拒绝某人访问。

if(!is_logged()) {
header("Location: ./?act=Home");
}

我在哪里犯了错误?

编辑:对不起,我根本没有解释问题......这个函数不会重定向,页面留空!

4

1 回答 1

0

尝试这个:

在页面的最开始, putob_start()以防止输出任何错误消息,然后将检查更改为:

if(!is_logged()) {
    ob_clean();
    header("Location: ./?act=Home");
    die();
}

这里die()可以防止 PHP 做其他事情(可能会修改标头以便没有重定向)。您还应该检查在调用此代码之前是否生成了错误消息(因为这通常是header()重定向的问题)。确保在 php.ini 和/或您的 PHP 中使用display_errors打开错误消息。请注意,ob_start并且ob_clean会阻止错误消息出现,因此您需要暂时删除它们以查看错误是什么......

话虽如此,仅使用 cookie 来确定用户是否登录被认为是不好的做法,因为任何人都非常容易在浏览器上制作 cookie。您应该进行一些服务器端检查以确保它是有效的登录。

于 2012-07-24T17:34:27.650 回答