2013-07-26 7 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의 최신 버전으로 VPS로 전환했습니다. 이 많이 감사 이해헤더 오류 수정

header("location: http://www.hirelogo.com/cart.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) :이 오류입니다. 또 다른 메모. 이 문제는 전환하기 전에 발생하지 않았습니다.

+1

온라인 5는 무엇입니까? – Scuzzy

+0

ob_end_flush(); 나는 그 문제를 완화 시키려고 노력했다. – Chris

+0

' Barmar

답변

1

오류가 헤더가 작성되기 전에 "뭔가" 클라이언트에 푸시되고 있음을 의미하기 전에이 아무것도 게시 헤더를 호출하기 전에.

  1. UTF-8 또는 UTF-16을 사용하는 경우 BOM (Byte Order Mark)이 문제를 일으키는 지 확인하십시오.
  2. 요청 파일의 시작 부분부터 스크립트가 오류가 날 때까지 가장 최근의 include까지 모든 코드를 확인하고 헤더를 푸시하기 전에 출력이 없음 (예 : echo 또는 sprintf)인지 확인하십시오. 당신이있어 오류가 어쩌면 표시

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

    주의 사항 :

+0

방금 ​​제거하고 작동하지만 이전에 동일한 문제가 발생했습니다. 잠시 후 그것은 쫓겨났다. 나는 그것을하기 위해 무엇을하고 있었는지 확신 할 수 없으므로 복제하기가 매우 어렵습니다. – Chris

+0

@Chris 당신의 문제를 듣고 기쁩니다. 나중에 참조 할 때는 헤더를 푸시하기 전에 클라이언트에게 아무 것도 보내지 말 것을 명심하십시오. 헤더 * 항상 * 먼저 와야합니다. 너무 어려워서 알아 내야 만했지만, 적어도 이제는 알았어 ...;) –

+1

예 전자 스시 덕분에 – Chris

1

header()가 40 행에 호출되면 게시 한 코드의 첫 줄 앞에 문서에 내용이있는 것입니다. 헤더의 코드 29 행에 있기 때문입니다.

당신은 아무것도 출력 할 수없는 모든()는 <?php 시작 태그

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

봅니다 다음 코드를 변경하려면?

+0

PHP는'count ($ _SESSION [ "cart_array"])'만 실행하면된다. '$ _SESSION [ "cart_array"]'존재합니다 – bystwn22