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, отправленные при каком-либо запросе, не учитываются при следующем. При этом браузер видит отправленные куки в теле запроса. В чем причина?


Ответы (0 шт):