2011-11-04 79 views
0

我有一個PHP頭位置問題我在做什麼是從我的數據庫中獲取一些數據,然後做一個if else檢查,並根據我將用戶重定向到下一頁,在這裏我的代碼Php頭位置錯誤

  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是我從我的數據庫中獲得的變量。

我得到錯誤的是(此頁有重定向循環)我怎麼能照顧這請大家幫我

謝謝

+1

什麼頁面是這個代碼嗎? –

+0

嘗試用print'header(「Location:$ page」);' - >'print(「Location:$ page」)替換最後一個頭文件語句;'看看會打印什麼。 –

+0

另外,您是否有任何重寫規則? –

回答

2

看樣子你發出Location頭問題上沒有什麼(在header聲明不在if之內...至少不在您共享的代碼中),因此它總是會重定向(並且始終使用格式錯誤的位置標題,即使定義了$page,它也不能成爲絕對URI)。

當您實際上想要重定向時,只發出Location

0

不回答你的問題,但你應該避免如此多的其他問題。 您的代碼應該是這樣的:

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

在這一點上是很容易建立自己的$page變種

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

這樣做,但又錯誤仍然相同 –

+0

是的,當然這不是你的錯誤 – dynamic

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"); 
+0

這只是不好,因爲如果,閱讀我的答案得到一個更好的代碼 – dynamic

+1

我看到它後,我發佈的答案。更好的版本。唯一需要做的是檢查數組鍵是否存在,以便$頁總是有效。 if(array_key_exists($ claim_status,$ allowedStatus)){$ page = $ allowedStatus [$ claim_status]。 '.php?verifyid ='。 $ ID; } else {$ page =「error_handling.php」; } – John

0

您可以使用JavaScript來停止重定向循環

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