我有一个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
是我从数据库中获取的变量。
我得到的错误是(此页面有重定向循环)我该如何处理这个请帮帮我
谢谢
答案 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>";
?>