2013-12-09 5 views
0

возникли проблемы с хранением переменного массива, как печенье, а затем добавить в отдельных массивах в кук, уже содержащего массивДобавить массив в массив хранится в куках

$mysqli = mysqli_connect($db_host,$db_user,$db_pass,$db_base); 
     if (mysqli_connect_errno()) 
     { 
      printf("Connect failed: %s\n", mysqli_connect_error()); 
      exit(); 
     } 
     // Displays a message saying product was added to the basket 
     $message = $_POST['product_name']." was added to the basket"; 
     echo "<script>alert(".$message.")</script>"; 

     // Sets the basket 
     $itemID = $_POST['product_id']; 
     $itemQuantity = $_POST['product_quantity']; 
     if ($itemQuantity > 0) 
     { 
      $items = [$itemID, $itemQuantity]; 

      // Returns cookie value as array 
      $basket_array = (unserialize($_COOKIE['eg_basket'])); 

      // Adds to array into cookie array 
      $basket = serialize(array_push($basket_array, $items)); 

      // Sets basket back as cookie 
      setcookie('eg_basket', $basket); // will expire on browser close 

      // Displays message 
      echo "<h3 style='text-align:center'>".$_POST['product_name']." was added to the basket</h3>"; 
      echo "<br/>"; 
      echo "<p style='text-align:center'>Please click below to return to the previous page</p>"; 
     } 
     else 
     { 
      echo "<h3 style='text-align:center'>ERROR: ".$_POST['product_name']." was not added to the basket, invalid quantity given</h3>"; 
     } 

      echo "<form method='POST' action='product_info.php'><input style='display:none' type='number' name='product_id_POST' value='".$_POST['product_id']."'><input style='text-align:center' type='submit' value='Return'></form>"; 


     // close the connection 
     mysqli_close($mysqli); 
    ?> 

Что я tryng сделать, это создать печенье, в котором будут храниться массивы идентификаторов продукта, и количества

например cookie = [[product_id, количество], [product_id, количество], .......]; однако

им вполне уверен, что это не так, но это код, я использую для создания корзины печенья, если он не существует (это могло быть причиной того, что печенье не будет принимать какие-либо новые значения

// Checks is cookie is already set - basket only 
    if (!isSet($_COOKIE['eg_basket'])) 
    { 
     $basket = serialize([]); 
     setcookie('eg_basket', $basket); // will expire on browser close 
    } 

Спасибо, любая помощь очень ценится

Bull

+2

Я предлагаю вам перейти от cookie к сеансу, было бы легче управлять и более безопасно^_ ^ – Aliceiw

ответ

1

Вы не можете отправить куки в браузере, когда заголовки уже были отправлены, см the manual.

Таким образом, вы должны войти ваше сообщение, не вторя ничего здесь:

echo "<script>alert(".$message.")</script>"; 

И убедитесь, что нет другого выхода не посылается в браузер перед вашей setcookie() линии.

Смежные вопросы