PHP Cookies - 在一个cookie中存储2个数据

时间:2012-01-31 05:32:23

标签: php cookies

我有两个与同一主题相关的数据,即国家/地区代码。

例如:澳大利亚和澳大利亚

是否有一种首选方法可以在一个Cookie中存储2个数据? 或者更好地使用2个cookie。

对不起,如果这是一个愚蠢的问题......只是对其他人的意见感兴趣。

THX

4 个答案:

答案 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