0

我收到以下代码的重定向错误。只是当表单提交并检查了某个用户名时,它应该重定向到某个页面。

<div>
<?php
    global $user;
    if (isset($user->name)) { 
        echo "You don't have permission to access the administrator with the current logged in user (".$user->name."). ". "<a href='./user/logout'>Log Out as (" .   $user->name . ")</a>"."<br /><br />";
    }
?>
Please refer to the credentials sent to you.</div>

<?php
if ($user->name == "a-particular-user") {
        header( 'Location: http://url.to.direct' ) ;
    }

?>

在重定向页面上,以下代码退出

   global $user;

$adminuser = false;
if (in_array('administrator', array_values($user->roles)))
    $adminuser = true;

if ( !($adminuser) && ($user->name != "rockstar")) {
    echo "<br /><br />";
    echo "<h2> You need to be an Administrator to see this page.</h2>";
    exit();
}
4

2 回答 2

2

问题是代码与您要重定向到的代码位于同一页面中。它会导致循环。

您可以使用 GET 变量解决此问题:

if ($user->name == "a-particular-user" && !isset($_GET['adminpage'])) {
    header( 'Location: http://url.to.direct?adminpage=true' ) ;
}
于 2013-06-03T18:21:26.417 回答
0

为什么你会问一个关于你收到的错误消息的问题,但不包括错误消息?

错误消息是否说明“标头已发送”?

在您已经生成内容后,您不能使用header()重定向,即使它只是一个空格或空行。在这种情况下,<div>无论发生什么其他情况,第一行都有一个。因此,您将无法在此header()之后发送。

参考:如何修复 PHP 中的“标头已发送”错误

于 2013-06-03T18:29:06.170 回答