Я преобразовываю массив в cookie с помощью функции сериализации php
$PromoteProductArray = array("PromoteuserId"=>$PromoteuserId, "PromoteProductId"=>$PromoteProductId, "PromoteBrandId"=>$PromoteBrandId); $Promotedcart[] = $PromoteProductArray; setcookie("Promotedcart", serialize($Promotedcart), time()+604800,'/');
И когда cookie создается, я использую функцию unserialize php.
print_r(unserialize($_COOKIE['Promotedcart']));
это не работает.
Когда я print_R($_COOKIE)
тогда он показывает мне значение.
Куки, разделенные точкой с запятой. Сериализованные строки с массивами содержат их внутри. Возможно, это проблема. Вы можете использовать base64, чтобы избежать всех возможных проблем с безопасностью.
Просто столкнулся с ситуацией, когда мне также понадобилось использовать это решение. Я нашел здесь свой ответ: обновить значение cookie в php
Вы можете использовать функции json_encode
, json_decode
для достижения этого в качестве альтернативы.
$PromoteProductArray = array("PromoteuserId"=>$PromoteuserId, "PromoteProductId"=>$PromoteProductId, "PromoteBrandId"=>$PromoteBrandId); $Promotedcart[] = $PromoteProductArray; setcookie("Promotedcart", json_encode($Promotedcart), time()+604800,'/'); $result = json_decode($_COOKIE['Promotedcart'], true); print_r($result);
Попробуйте, это должно сработать.