这是我的第一个帖子,所以请原谅新手喜欢的评论。我对PHP很好,但我似乎在这里错过了一些东西(显然)。我正在寻找重定向用户后,他们已经登录取决于他们被分配的用户组。所以会员会进入会员区,管理员进入管理员区,最后超级管理员进入超级管理员区。代码最近工作,但似乎已经停止后,我在网页的顶部添加了一个Javascript下拉菜单的链接。我将问题缩小到以下代码段:
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['myusername'] = $myusername;
$_SESSION['mypassword'] = $mypassword;
$_SESSION['myusergroup'] = $myusergroup;
if($usergroup == "SuperAdmin"){
header("location:superadmin_login_success.php");
exit();
}
elseif($usergroup == "Admin"){
header("location:admin_login_success.php");
exit();
}
elseif($usergroup == "Member"){
header("location:login_success.php");
exit();
}
}
计数表示从SQL查询返回的结果。查询从一个表中选择所有字段,其中用户名和密码字段等于我之前在登录时提交的表单。我所有的登录PHP代码位于同一网页上,并在PHP开头的if语句防止代码在未提交表单时被执行。有人能发现这个片段或我的逻辑有什么问题吗?我一直在盯着和阅读周围的人在类似的情况下,我仍然没有得到任何地方。
正如您所看到的,我正在使用header函数来重定向,并且在调用header之前将输出打印到页面上时,函数存在问题。我不太清楚这个问题的具体细节,但如果有人能澄清并举例说明,我会很感激。单独编写这些脚本并在需要时包含它们是否合适和正确?我也一直在想这件事。
多谢里斯
$myusergroup和$usergroup有什么区别?你的if语句检查$usergroup。这个是设置的吗,还是应该是$myusergroup ?
确保在发送header()
之前没有输出。
您可以使用ob_start()
来打开输出缓冲。看一下PHP的输出控制函数。
提示:使用switch()
而不是几个if()
语句
我注意到你正在分配$myusergroup给你的会话变量,但在你的if语句中,你只调用$usergroup。$usergroup是否在其他地方使用?