我真的没有得到如何做到这一点
Cookie名称可以设置为数组名称,并可供您使用 PHP脚本作为数组但单独的cookie存储在用户的脚本中 系统。
这对我来说没问题,我可以使用,如下所示
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
但是这种方法会创建多个cookie,这是我不想要的
PHP手册也说
考虑使用explode()设置一个具有多个名称的cookie 值。
但是我没有得到如何使用explode设置一个具有多个名称和值的cookie?
请有人解释一下。
但没有得到这个
答案 0 :(得分:3)
Cookie只不过是一个愚蠢的键/值存储系统。就这么简单。
事实上,PHP提供了一个非常好的功能:当从PHP读取cookie时,名称包含所描述格式的方括号的cookie将组合成单个数组变量。但这是唯一的例外,它不会影响cookie的工作方式,正如您所说,它是您不需要的功能。
说,你只需要将cookie值视为白板,你可以放任何你想要的东西,只要它是文本。并且有许多PHP函数允许您将数组之类的奇怪内容转换为纯文本:
发挥你的想象力,你就完成了; - )
更新:有点评论 - 我已经提到了serialize()
的完整性,但它可能不值得努力,因为确保你不打开它会非常复杂代码注入的大门。
答案 1 :(得分:-1)
您可以像这样设置一个cookie:
setcookie("cookiename", "value1;value2;value3;value4");
然后像这样使用爆炸:
$a = explode(';', $_COOKIE['cookiename']);
然后,您将从单个cookie中获取一组值。
它也说你不应该这样做......在文档的下一句中。
setcookie("cookiename", serialize( array("value1", "value2", "value3") );
// next request
$a = unserialize($_COOKIE['cookiename']);
因为这是不安全的,因为用户可以将其cookie修改为非数组值。
答案 2 :(得分:-1)
使用序列化和反序列化
前:
$ckArr= array();
$ckArr['abc'] = "abc";
$ckArr['xyz'] = "xyz";
$ckArr['pqr'] = "pqr";
$ckStr= serialize($ckArr);
setcookie("mycookie", $ckStr, $time, $servername);
你可以使用:
取消序列化$cookieContent = unserialize($_COOKIE['mycookie']);
print_r($cookieContent);