我做了一个登录脚本,当我想检查用户何时登录时,我使用了函数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
}
是的,该功能包含在每个页面中。 我做了这个功能所以它应该工作...... 为什么不起作用?
答案 0 :(得分:1)
替换此代码:
if(logged_in() === true)
使用此代码:
if(isset($_SESSION['id']))
切断了所有中间人。
答案 1 :(得分:0)
虽然您列出了相当多的代码,但您确定要在每页顶部添加session_start();
吗?在对会话变量做任何事情之前,你需要调用它。
第二件事是错误消息显示该函数未定义 - 您确定您是在页面的源中还是作为包含在每页上定义它的代码?
如果你把它放在名为'functs.php'的文件中,你需要在每个会调用该函数的页面中include()
。
答案 2 :(得分:0)
如果您完全确定每个页面都包含声明,那么我建议您检查以确保该函数未被声明为对象内的方法。