我有一个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>";
?>