我正在创建一个带有名称和值的cookie(序列化对象数组):
include_once './Model/Winkelwagenitem.php';
$winkelwagenProduct = array (
//aantal + ID
new WinkelwagenItem(1,257),
new WinkelwagenItem(3,258),
new WinkelwagenItem(1,259)
);
$cookie_name = "winkelwagen";
$cookie_value = serialize($winkelwagenProduct);;
setcookie($cookie_name, $cookie_value);
//echo "Data to be stored (serialized): ".$cookie_value."<br>";
if(!isset($_COOKIE[$cookie_name])){
echo "Cookie not being set";
} else {
echo "cookie created";
}
一切顺利。现在在另一个php文件中我访问这个cookie,我需要反序列化它并返回cookie中的对象:
if(isset($_COOKIE["winkelwagen"])){
echo "Deze cookie (".$_COOKIE["winkelwagen"].") bestaat";
foreach ($_COOKIE["winkelwagen"] ....){
.....
unserialize(....)
....
}
} else {
echo "deze cookie bestaat niet";
}
我真的不知道foreach循环中会发生什么?
请帮忙吗?
答案 0 :(得分:0)
我已经创建了一个Unserialize数组的函数,这里是函数:
function _unserialize($data)
{
$data = @unserialize(strip_slashes($data));
if (is_array($data))
{
foreach ($data as $key => $val)
{
if (is_string($val))
{
$data[$key] = str_replace('{{slash}}', '\\', $val);
}
}
return $data;
}
return (is_string($data)) ? str_replace('{{slash}}', '\\', $data) : $data;
}
也许这会帮助你......
答案 1 :(得分:0)
您不需要迭代该Cookie变量。您存储在cookie中的内容只是一个值,因为您正在序列化。
因此,当您想要使用这些对象时,需要反序列化并使用。
您的代码应如下所示:
if(isset($_COOKIE["winkelwagen"])){
//! You have your array of object here, use it as required
$winkelwagenProduct = unserialize($_COOKIE["winkelwagen"]);
} else {
echo "deze cookie bestaat niet";
}
几点提示:
WinkelwagenItem
的类定义