2013-07-26 48 views
1
<?php 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
//  Section 1 (if user attempts to add something to the cart from the product page) 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
if (isset($_POST['pid'])) { 
    $pid = $_POST['pid']; 
    $wasFound = false; 
    $i = 0; 
    // If the cart session variable is not set or cart array is empty 
    if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) { 
     // RUN IF THE CART IS EMPTY OR NOT SET 
     $_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "quantity" => 1)); 
    } else { 
     // RUN IF THE CART HAS AT LEAST ONE ITEM IN IT 
     foreach ($_SESSION["cart_array"] as $each_item) { 
       $i++; 
       while (list($key, $value) = each($each_item)) { 
        if ($key == "item_id" && $value == $pid) { 
         // That item is in cart already so let's adjust its quantity using array_splice() 
         array_splice($_SESSION["cart_array"], $i-1, 1, array(array("item_id" => $pid, "quantity" => $each_item['quantity'] + 1))); 
         $wasFound = true; 
        } // close if condition 
       } // close while loop 
      } // close foreach loop 
      if ($wasFound == false) { 
       array_push($_SESSION["cart_array"], array("item_id" => $pid, "quantity" => 1)); 
      } 
    } 
    header("location: http://www.hirelogo.com/cart.php"); 
    exit(); 
} 
?> 

我在理解錯誤時遇到問題。如果有幫助,我最近剛剛轉而使用PHP的新版本。這是錯誤:修改標題錯誤

Warning: Cannot modify header information - headers already sent by (output started at /home/hirelogo/public_html/cart.php:5) in /home/hirelogo/public_html/cart.php on line 40 

線40是

header("location: http://www.hirelogo.com/cart.php ");

任何幫助理解,這是大加讚賞。另一個說明。交換機之前沒有發生此問題。

+1

什麼是第5行? – Scuzzy

+0

ob_end_flush();我試圖緩解這個問題。 – Chris

+0

確保'<?php'之前沒有任何內容,因爲它會在運行代碼之前發送。 – Barmar

回答

1

的錯誤意味着「東西」被推到客戶端都寫頭之前前收到。

  1. 檢查是否有任何BOM(字節順序標記)引起該問題,如果使用UTF-8或UTF-16,情況可能如此。
  2. 檢查請求文件開頭的所有代碼,直到最後一個包含,直到腳本遇到錯誤,並確保沒有輸出(如echosprintf),然後再推出標題。
+0

我剛剛刪除它,它的工作,但同樣的事情發生之前。一段時間後,它被踢出了。我不確定我在做什麼,因此複製非常困難。 – Chris

+0

@Chris很高興聽到你解決了你的問題。爲了將來的參考,請記住在推出標題之前絕對不要向客戶端推送任何東西*標題*總是*必須先來。太糟糕了,你必須找出困難的方式,但至少現在你知道...;) –

+1

是非常感謝這麼多電子壽司 – Chris

1

如果在第40行調用了header(),那麼在您發佈的代碼的第一行之前,您的文檔中有東西。因爲我的標題是在代碼的第29行。

你不能輸出任何東西叫頭()張貼任何你<?php開始標籤

1
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) { 

嘗試更改下面的代碼:

if (!isset($_SESSION["cart_array"]) || (isset($_SESSION['cart_array']) && count($_SESSION["cart_array"]) < 1)) { 

注意到你的錯誤出現可能?

+0

它不需要,PHP將運行'count($ _SESSION [「cart_array」])'如果只'$ _SESSION [「cart_array」]'存在 – bystwn22