Php标头位置错误


Php Header location error

我有一个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是我从数据库中获得的变量。

我得到的错误是(这个页面有一个重定向循环)我怎么能照顾这个请帮助我

谢谢

看来你发出一个Location头无论什么(header语句不是在if…至少不在你共享的代码),所以它总是重定向(并且总是有一个畸形的位置头,即使$page被定义,它也不能是一个绝对的URI)。

仅在实际需要重定向时才发出Location

不回答你的问题,但你应该避免很多其他问题。你的代码应该像这样:

$allowedStatus = array ( 
    'Pending Verification' => 'pending-verification',
    'Pending PO Clearance' => 'po-clearance'
    //> Etc
);
此时构建$page var 就很容易了
$page = $allowedStatus[$claim_status] . '.php?verifyid=' . $id;

用例代替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");

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

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