在cookie中存储变量的多个值并进行比较

时间:2011-01-04 11:35:17

标签: php cookies

例如,如何使用php在cookie中为变量存储多个值 $ id = 1,2,4,5 那我怎样才能将存储的值与变量进行比较?例如,$ new_id = 4,我想检查cookie中存储的$ id值是否存在$ new_id值。 感谢您的帮助,祝您度过愉快的一天。

5 个答案:

答案 0 :(得分:3)

您可以在cookie元素中存储任意字符串,因此序列化数组应该可以工作。例如:

// To store:
$ids = array(1, 2, 3, 4);
setcookie('ids', serialize($ids));

// To retrieve:
$serialized = $_COOKIE['ids'];
$ids = unserialize($serialized);
// sanity check: $ids needs to be an array.
assert(is_array($ids));

// Now let's check:
if (in_array(4, $ids)) {
    // Yes, it's here.
}

但有几点需要注意:

  • cookie完全掌握在客户端手中,cookie值永远不可信任。像处理查询字符串参数或POST数据一样对待它们。
  • Cookie提供非常有限的存储空间(IIRC,该标准允许您使用4096字节)。

考虑到这些,最好将数组存储在$_SESSION中 - 这将为您提供几乎无限的存储空间,客户端应用程序调整值的唯一方法是通过您的代码。

答案 1 :(得分:0)

要使用多个值,您可以使用数组然后存储它,您可以序列化(和反序列化)数组。

要创建数组: $ array = array(1,2,3,4);

比较: if(in_array(2,$ array))echo“是的”;

序列化要存储的数据: $ store = serialize($ array);

十,您将能够使用$ store数据创建cookie,然后使用unserialize($ store)重新转换数组中的数据。

Serialize Manual

答案 2 :(得分:0)

尝试使用以下代码段。

// do Stuff to retrieve value of $id from cookie.

// explode variable to array
$idArr = explode(',' , $id);

// check existence of new_id in cookie variable.
if(in_array($new_id , $idArr)){

// new_id exist in cookie variable

}

希望这会有所帮助

谢谢!

侯赛因。

答案 3 :(得分:0)

以下是众多解决方案中的一个(语法可能包含错误):

// Create an array with the values you want to store in the cookie
$id = array(1, 2, 3, 4);

// Create cookie
set_cookie('id', implode(',', $id));

// Get cookie
$id = explode(',', $_COOKIE['id']);

// Test value
if(in_array($newId, $id) === true) {
  // Value is in the array
}

限制: 存储在$ id中的值不能包含逗号,如果需要存储逗号

,请选择其他分隔符

答案 4 :(得分:0)

将数组存储在cookie中,然后比较它们