在 Cookie 中存储 PHP 数组
如何在 Cookie 中存储数组的正确方法?在 PHP 代码示例中:
$number_ticket=2;
$info[7][5]=1;
$info[8][5]=1;
如何在 Cookie 中存储数组的正确方法?在 PHP 代码示例中:
$number_ticket=2;
$info[7][5]=1;
$info[8][5]=1;
要将数组值存储在cookie中,首先需要将它们转换为字符串,因此这里有一些选项。
存储代码
setcookie('your_cookie_name', json_encode($info), time()+3600);
读取代码
$data = json_decode($_COOKIE['your_cookie_name'], true);
JSON也可以是很好的选择,如果你需要在前端使用JavaScript读取cookie。
实际上,您可以使用任何/方法组,它将数组转换为字符串并将字符串转换回相同的数组。例如,您也可以将 / 用于整数数组。encrypt_array_to_string
decrypt_array_from_string
explode
implode
从 PHP.net
Do not pass untrusted user input to unserialize().
- 任何通过HTTP(包括cookie)来的东西都是不可信的!
与安全性相关的参考
setcookie('my_array[0]', 'value1' , time()+3600);
setcookie('my_array[1]', 'value2' , time()+3600);
setcookie('my_array[2]', 'value3' , time()+3600);
之后,如果您要打印变量,您将看到以下内容$_COOKIE
echo '<pre>';
print_r( $_COOKIE );
die();
Array ( [my_array] => Array ( [0] => value1 [1] => value2 [2] => value3 ) )
这是有文档记录的 PHP 功能。
从 PHP.net
Cookies names can be set as array names and will be available to your PHP scripts as arrays but separate cookies are stored on the user's system.
序列化数据:
setcookie('cookie', serialize($info), time()+3600);
然后取消序列化数据:
$data = unserialize($_COOKIE['cookie'], ["allowed_classes" => false]);
数据后,$info和$data将具有相同的内容。