我得到了这样的数组
$ value = {array('id'=> $ id,'email'=> $ email,'token'=> $ token)}
我想对数组进行字符串化然后编码然后将其存储在cookie"login"中.你是怎样做的 ?另请告诉我如何解码和读取存储的值.
编辑:
我一直在尝试序列化/反序列化,但它没有按预期工作.例如,
$value = serialize(array('id'=>33, 'email'=>'big@gmail.com', 'token'=>'e9aa0966773d68e0fbf9cb21fc2877b4'));
echo $value; //a:3:{s:2:"id";i:33;s:5:"email";s:20:"big@gmail.com";s:5:"token";s:32:"e9aa0966773d68e0fbf9cb21fc2877b4";}
Run Code Online (Sandbox Code Playgroud)
但是当值转到cookie时,它看起来像这样
a%3A3%3A%7Bs%3A2%3A%22id%22%3Bs%3A1%3A%226%22%3Bs%3A5%3A%22email%22%3Bs%3A20%3A%22craigcosmo%40gmail.com%22%3Bs%3A5%3A%22token%22%3Bs%3A32%3A%22e9aa0966773d68e0fbf9cb21fc2877b4%22%3B%7D
Run Code Online (Sandbox Code Playgroud)
Bra*_*tie 13
$_COOKIE['login'] = json_encode($array);
$array = json_decode($_COOKIE['login']);
Run Code Online (Sandbox Code Playgroud)
$_COOKIE['login'] = serialize($array);
$array = unserialize($_COOKIE['login']);
Run Code Online (Sandbox Code Playgroud)
也许.
UPDATE
使用此代码:
<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);
?></pre></body></html>
Run Code Online (Sandbox Code Playgroud)
您将生成以下内容:
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=="
}
Run Code Online (Sandbox Code Playgroud)
EDIT2
您将看到基于HTTP协议传输cookie的编码值.Cookie转移中有两个标头:Set-Cookie&Cookie.一个是服务器 - >客户端,另一个是客户端 - >服务器,尊重.
当PHP设置cookie时(使用setcookie例如)PHP实际上只是简短地处理以下内容:
setcookie('login',$serialized);
Run Code Online (Sandbox Code Playgroud)
在PHP中转换为:
header('Set-Cookie: login='.urlencode($serialized).'; '
.'expires=Wed, 12-Jan-2011 13:15:00 GMT; '
.'path=/; domain=.mydomain.com');
Run Code Online (Sandbox Code Playgroud)
如果您有像:或SPACE 这样的字符,浏览器将不知道cookie的属性开始和结束的位置.
Jon*_*uhn 10
编辑:当你将一个字符串存储到cookie(setcookie)时,php需要对字符串进行url编码.这可以防止保存到cookie的字符串中的任何字符干扰任何其他标头.当接下来加载页面时,php获取cookie并自动对cookie值进行url解码,以将其返回到之前的值.至于存储在cookie中的内容,这在php中无关紧要,因为php会自动执行url编码/解码.现在,如果您使用其他语言(如javascript)获取cookie,那么是的,您将获得原始字符串.在这种情况下,您可以使用JS中的decodeURI之类的东西来获取原始值.
| 归档时间: |
|
| 查看次数: |
31614 次 |
| 最近记录: |