PHP重定向不在生产服务器上工作

时间:2014-08-27 11:17:03

标签: php apache

我不确定为什么,但它适用于我的开发服务器。我正在运行Apache2并使用PHP作为我的编程语言。服务器不完全相同但非常相似/大部分每个设置都是相同的。

这与服务器上的PHP版本有什么关系吗?

  • 生产正在运行:PHP版本5.4.27-1 + deb.sury.org~precision + 1

  • 开发正在运行:PHP版本5.4.32-2 + deb.sury.org~lucid + 1

或者我的代码中有些东西我不见了?

<?php
$page = 'Home';
require_once('includes/config.php');
require_once('includes/auth.php');
require_once('includes/header.php');
?>

<div id="content">
    <?php
        if($loggedin){
            if(isset($customer)){
                header('Location: ftp.php');
                require_once('indexes/customers.php');
            } else if(isset($web_user)){
                if(checkperm($loggedin_id, 2)){header("Location: bulletin.php");}
                if(checkperm($loggedin_id, 4)){ header("Location: signoff.php?dep=Workorders");}
                require_once('indexes/employees.php');
            }
        } else {
            require_once('indexes/guest.php');
        }
        //echo "<meta http-equiv='refresh' content='0;url=http://www.yoursite.com'>";
    ?>
</div>
<?php
    require_once('includes/footer.php');
?>

应用程序上的每个注册用户都设置了特定权限和角色,以便他们可以访问应用程序的特定部分。

基本上,如果登录并且用户的“角色”设置为$ customer,他们将只能访问我们应用程序的FTP部分以下载/上传文件给我们。

如果登录并且用户的“角色”是$ web_user,并且他们的checkperm(权限)是id:2(加工),那么在登录时将它们重定向到公告页面。

如果登录并且用户的“角色”是$ web_user,并且他们的checkperm(权限)是id:4(管理员),那么将它们重定向到工作订单签名页面。

代码与开发服务器上运行的代码相同。

2 个答案:

答案 0 :(得分:3)

您正在致电:

header('Location: ftp.php');

您已经输出了一些内容。必须在输出之前发送标题!这包括HTML和PHP echo语句。

答案 1 :(得分:1)

使用标题下方的exit,但在发送任何输出之前确保它。

        if(isset($customer)){
            header('Location: ftp.php');
            exit();
           /* Why do you have this line here? When redirect begins above then it will not be executed */
            require_once('indexes/customers.php');
        }