0

这是我的第一篇文章,所以请原谅新手喜欢评论。我对 PHP 没意见,但我似乎在这里遗漏了一些东西(显然)。我希望在用户登录后根据分配给他们的用户组重定向用户。所以会员会去会员区,admin到admin区,最后superadmin到superadmin区。该代码最近正在运行,但在我为网页顶部的链接添加 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 之前将输出打印到页面上时,函数存在问题。我不完全确定问题的具体细节,但如果有人可以澄清并举例说明,那么我将不胜感激。单独编写这些脚本然后在需要时包含它们是否合适且正确?我也一直在思考这个问题。

非常感谢

里斯

4

4 回答 4

0

确保在发送之前没有输出header()。即使是很小的空白也会破坏您的重定向。

于 2013-03-06T16:52:28.877 回答
0

$myusergroup 和 $usergroup 有什么区别?您的 if 语句检查 $usergroup。那是他们检查的设置还是应该是 $myusergroup?

于 2013-03-06T16:54:44.630 回答
0

您可以使用ob_start()打开输出缓冲。看看 PHP 的输出控制函数

提示:使用switch()而不是几个if()语句

于 2013-03-06T16:55:39.790 回答
0

我注意到您将 $myusergroup 分配给您的会话变量,但在您的 if 语句中您只调用 $usergroup。$usergroup 是否在其他地方使用?

于 2013-03-06T16:56:15.907 回答