我有两个与同一主题相关的数据,即国家/地区代码。
例如:澳大利亚和澳大利亚
是否有一种首选方法可以在一个Cookie中存储2个数据? 或者更好地使用2个cookie。
对不起,如果这是一个愚蠢的问题......只是对其他人的意见感兴趣。
THX
答案 0 :(得分:1)
如果是我,我只是使用特定的胶水将数据附加在一起,然后在我想再次分离值时爆炸字符串。
$cookeString = $country . '+' . $countryCode;
list($country, $countryCode) = explode('+', $cookieString);
但老实说,存储国家和国家/地区代码没有意义,只需存储国家/地区代码并使用国家/地区代码作为关键字查找国家/地区数据。
答案 1 :(得分:0)
为什么不使用javascript并创建一个json对象?
var cc = {
australia: 'au',
India : 'In'
}
您可以使用cc.India
我知道,你问过cookies,但是我需要存储国家代码,我这样做了。它快速而简单。
答案 2 :(得分:0)
您可以通过多种方式执行此操作,可以是多个Cookie,也可以存储像JSON这样的对象,或者您只需简单地放置一个由:: ::例如和用户php的eplode函数分隔的字符串。总而言之,这取决于你的所作所为。如果使用JSON对象,则可以通过使用json_encode和json_decode轻松地在对象和数组之间来回切换。这一切都与您的舒适程度有关。总而言之,如果你真的希望将它保存在一个cookie中,你最终会考虑使用一系列数据。
示例:
<?php
//set the cookie
$cookieData = json_encode(array("value_one", "value_two"));
setcookie("MyCookie", $cookieData , time()+3600);
//read the cookie
$cookieInfo = json_decode($_COOKIE['MyCookie']);
echo $cookieInfo[0]."<br>";
echo $cookieInfo[1]."<br>";
//or
for($i = 0; $i < count($cookieInfo); $i++)
{
echo $cookieInfo[$i]."<br>";
}
你可以使这个概念相当大,但是请记住,cookie很容易被客户端操作,因此在通过脚本运行它们之前清理你的cookie变量,这些脚本可以注入和破坏以满足其他需求,例如检查数据库以查看是否使用通过cookie信息有效。
另一件需要记住的事情是某些浏览器有一个cookie大小,你的cookie最大大小只有4kb。
此外,您可以更加了解使用JSON和Arrays的逻辑,如果您不熟悉它们,它们一开始就很棘手但是一旦您开始使用它们并理解它们,您会发现它们是您最好的朋友。
答案 3 :(得分:0)
您还可以在Cookie名称中使用数组表示法设置数组Cookie。
PHP代码 -
// set the cookies
setcookie("cookie[one]", "cookie1");
setcookie("cookie[two]", "cookie2");
setcookie("cookie[three]", "cookie3");
// after the page reloads, print them out
if (isset($_COOKIE['cookie'])) {
foreach ($_COOKIE['cookie'] as $name => $value) {
$name = htmlspecialchars($name);
$value = htmlspecialchars($value);
echo "$name : $value <br />";
}
}
<强>输出:强>
一:cookie1
二:cookie2
三:cookie3