Php标题位置错误

时间:2011-11-04 12:21:20

标签: php

我有一个PHP标题位置问题我正在做的是从我的数据库获取一些数据,然后进行if else检查,并根据我将用户重定向到下一页,这里是我的代码

            if($claim_status == 'Pending Verification')
        {
            $page = "pending-verification.php?verifyid=".$id."";
        }
        elseif($claim_status == 'Pending PO Clearance')
        {
            $page = "po-clearance.php?verifyid=".$id."";
        }
        elseif($claim_status == 'Payment Approved')
        {
            $page = "payment-approved.php?verifyid=".$id."";
        }
        elseif($claim_status == 'Payment Receipt')
        {
            $page = "confirm-claim.php?verifyid=".$id."";
        }
        elseif($claim_status == 'Billing')
        {
            $page = "billing.php?verifyid=".$id."";
        }
        elseif($claim_status == 'Billed')
        {
            $page = "billed.php?verifyid=".$id."";
        }
        header("Location:$page");

$claim_status是我从数据库中获取的变量。

我得到的错误是(此页面有重定向循环)我该如何处理这个请帮帮我

谢谢

4 个答案:

答案 0 :(得分:2)

无论发生什么(Location语句不在header内... ...至少不在您共享的代码中),您似乎会发出if标题,所以它将始终重定向(并始终使用格式错误的Location标头,即使定义了$page,它也不会是绝对URI)。

只有在您真正想要重定向时才会发出Location

答案 1 :(得分:0)

没有回答你的问题,但是你应该避免这么多。 您的代码应如下所示:

$allowedStatus = array ( 
    'Pending Verification' => 'pending-verification',
    'Pending PO Clearance' => 'po-clearance'
    //> Etc
);

此时很容易构建$page var

$page = $allowedStatus[$claim_status] . '.php?verifyid=' . $id;

答案 2 :(得分:0)

用例而不是if-elsif语句。 另外,确保header();

之前没有其他php输出
switch($claim_status) {

    case 'Pending Verification':
        $page = "pending-verification.php?verifyid=".$id."";
        break;

    case 'Pending PO Clearance';
        $page = "po-clearance.php?verifyid=".$id."";
        break;

    case 'Payment Approved';
        $page = "payment-approved.php?verifyid=".$id."";
        break;

    case 'Payment Receipt';
        $page = "confirm-claim.php?verifyid=".$id."";
        break;

    case 'Billing';
        $page = "billing.php?verifyid=".$id."";
        break;  

    case 'Billed';
        $page = "billed.php?verifyid=".$id."";
        break;


    default:
        $page = ''; //Set a default rediraction page in case $claim_status is invalid.
        break;

}

header("Location:$page");

答案 3 :(得分:0)

您可以使用javascript来停止重定向循环

<?php
   $redirect_page = 'page.php';
   echo "<script type='text/javascript'>window.location=$redirect_page</script>";
?>