json_encode / json_decode
$_COOKIE['login'] = json_encode($array);
$array = json_decode($_COOKIE['login']);
Можно также использовать сериализовать / unserialize :
$_COOKIE['login'] = serialize($array);
$array = unserialize($_COOKIE['login']);
Возможно.
UPDATE
С этим кодом:
<code><html><body><pre><?php
$array = Array(
'id' => 1234,
'email' => 'example@example.com',
'token' => base64_encode('abcDEF1234')
);
echo "Var Dump (initial):\r\n";
var_dump($array);
$serialized = serialize($array);
echo "Serialized:\r\n".$serialized."\r\n";
$unserialized = unserialize($serialized);
echo "Unserialized:\r\n".$unserailized."\r\n";
var_dump($unserialized);
?>
Вы бы сгенерировали следующее:
Var Dump (initial):
array(3) {
["id"]=>
int(1234)
["email"]=>
string(19) "example@example.com"
["token"]=>
string(16) "YWJjREVGMTIzNA=="
}
Serialized:
a:3:{s:2:"id";i:1234;s:5:"email";s:19:"example@example.com";s:5:"token";s:16:"YWJjREVGMTIzNA==";}
Unserialized:
array(3) {
["id"]=>
int(1234)
["email"]=>
string(19) "example@example.com"
["token"]=>
string(16) "YWJjREVGMTIzNA=="
}
EDIT2
Вы видите закодированное значение, основанное на том, как протокол HTTP передает файлы cookie. В передаче cookie есть два заголовка: Set-Cookie
& Cookie
. Один из них - сервер-> клиент, другой - клиент-> сервер, с уважением.
Когда PHP устанавливает cookie (используя setcookie, например), PHP на самом деле просто сокращает следующее:
setcookie('login',$serialized);
который в PHP переводится как:
header('Set-Cookie: login='.urlencode($serialized).'; '
.'expires=Wed, 12-Jan-2011 13:15:00 GMT; '
.'path=/; domain=.mydomain.com');
Если бы у вас были такие символы, как :
или пробел, браузер не знал бы, где начинались и заканчивались свойства куки.