PHP-скрипт игнорирует содержимое $_COOKIE
Header("Content-Type: text/html;charset=UTF-8"); /*Явно задаем кодировку в заголовке, чтобы из-за отсутствия BOM
не полетела кодировка не-ASCII символов*/
$GOODS=array( "1729"=>array( "name"=>"сепульки маринованные",
"price"=>1024,
"amount"=>42),
"2400"=>array( "name"=>"маленький Цик",
"price"=>9999,
"amount"=>1),
"8128"=>array( "name"=>"Хедкрабы по акции",
"price"=>82,
"amount"=>476),
"9999"=>array( "name"=>"Баночки с землицей",
"price"=>50,
"amount"=>1234));
$CART=array( "1729"=>array( "name"=>"сепульки маринованные",
"price"=>1024,
"amount"=>0),
"2400"=>array( "name"=>"маленький Цик",
"price"=>9999,
"amount"=>0),
"8128"=>array( "name"=>"Хедкрабы по акции",
"price"=>82,
"amount"=>0),
"9999"=>array( "name"=>"Баночки с землицей",
"price"=>50,
"amount"=>0));
/*Проверяем есть ли у нас куки для каждого товара, и надо ли их загружать*/
foreach ($CART as $val_key=>&$val){
$COOKIE_key='GOODS['.$val_key.']';
$POST_key=$val_key.'_amount';
if (isset($_COOKIE[$COOKIE_key])){
if(!empty($_COOKIE[$COOKIE_key]))
$val=unserialize(htmlentities($_COOKIE[$COOKIE_key]));
}
if (isset($_POST[$POST_key])&& !empty($_POST[$POST_key])){
$_POST[$POST_key]=$_POST[$POST_key]*1; //преобразование в числовой тип
if(is_int($_POST[$POST_key]) && ($_POST[$POST_key]>0))
$val['amount']=$val['amount']+$_POST[$POST_key];
}
if ($val["amount"]>0)
setcookie($COOKIE_key,serialize($val),0,"/");
else
setcookie($COOKIE_key,serialize($val),time()-4,"/");
}
unset ($val);
foreach($GOODS as $val_key => &$val){
$val["amount"]=$val["amount"]-$CART[$val_key]["amount"];
}
unset ($val);
?>
<!DOCTYPE HTML>
<html lang=ru>
<head>
<meta charset='UTF-8'>
<title>^_^ САМЫЙ ЛУЧШИЙ МАГАЗИН ^_^</title>
</head>
<body>
<form method="post" action="cart.php">
<button type="submit" name="goods_to_cart">В корзину</button>
</form>
<h4>Список товаров</h4>
<ul>
<?
foreach ($GOODS as $val_key=>$val){
echo'
<li>
<form method="post" action="goods.php">
<p>'.$val["name"].'<br>
Цена: '.$val["price"].' испанских тугриков<br>
В наличии штук: '.$val["amount"].'<br>
Купить: <input type="number" name="'.$val_key.'_amount" >
<button type=submit>В корзину</button>
</form>
</li>';
}
?>
</ul>
</body>
</html>
По неизвестной причине значения COOKIE, отправленные при каком-либо запросе, не учитываются при следующем. При этом браузер видит отправленные куки в теле запроса. В чем причина?