我对PHP有点问题,可能对你们大多数人来说这是一个愚蠢的问题,但我需要你们的帮助
这是我的代码:
function is_logged() {
if(isset($_COOKIE['username'])) {
return true;
} else {
return false;
}
}
这是整个代码的一部分,如果没有登录,我需要拒绝某人的访问。
if(!is_logged()) {
header("Location: ./?act=Home");
}
我在哪里犯的错?
编辑:对不起,我根本没有解释这个问题。。。此函数不重定向,页面为空!
试试这个:
在页面的最开始,放置ob_start()
以防止输出任何错误消息,然后将检查更改为:
if(!is_logged()) {
ob_clean();
header("Location: ./?act=Home");
die();
}
这里的die()
阻止PHP做其他事情(也许是修改了头,所以没有重定向)。您还应该检查在调用此代码之前是否生成了错误消息(因为这通常是header()
重定向的问题)。确保在php.ini和/或带有display_errors的php中打开了错误消息。请注意,ob_start
和ob_clean
将阻止错误消息显示,因此您需要暂时删除它们以查看错误是什么。。。。
话虽如此,仅仅使用cookie来确定用户是否登录被认为是一种糟糕的做法,因为任何人在浏览器上制作cookie都非常容易。您应该在服务器端进行一些检查,以确保它是一个有效的登录名。