Чтобы сохранить значения массива в cookie, сначала нужно преобразовать их в строку, поэтому здесь есть несколько вариантов.
Хранение файлов cookie в формате JSON
Хранение кода
setcookie('your_cookie_name', json_encode($info), time()+3600);
Чтение кода
$data = json_decode($_COOKIE['your_cookie_name'], true);
JSON также может быть удачным выбором, если вам нужно прочитать cookie в интерфейсе JavaScript.
На самом деле вы можете использовать любую группу методов encrypt_array_to_string
/ decrypt_array_from_string
, которая преобразует массив в строку и преобразует строку обратно в такой же массив.
Например, вы также можете использовать explode
/ implode
для массива целых чисел.
Предупреждение: не использовать сериализацию / десериализацию
Из PHP.net
![enter image description here](https://i.stack.imgur.com/PeUOC.png)
Do not pass untrusted user input to unserialize().
- Все, что приходит по HTTP, включая куки, не заслуживает доверия!
Ссылки, связанные с безопасностью
В качестве альтернативного решения вы можете сделать это и без преобразования массива в строку.
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();
<b>Array
(
[my_array] => Array
(
[0] => value1
[1] => value2
[2] => value3
)
)</b>
Это документированная функция 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.