如何获得PHP“setrawcookie”值?
问题描述:
的IETF推荐使用base64编码二进制cookie值: http://tools.ietf.org/html/draft-ietf-httpstate-cookie-07如何获得PHP“setrawcookie”值?
于是我就用setrawcookie(..)
,但我不知道该用什么变量获得饼干回来,因为$_COOKIE[..]
仍然使用匹配setcookie(..)
的URL解码。这会在输出中用“”替换“+”。
<?php
var_dump($_COOKIE['TEST']);
$binary_string = "";
for($index = 0; $index < 256; $index++){
$binary_string .= chr($index);
}
$encoded_data = base64_encode($binary_string);
var_dump($encoded_data);
$cookie_set = setrawcookie('TEST', $encoded_data, time() + 3600);
?>
答
你应该用正常setcookie
代替setrawcookie
,这种方式试图发送的cookie不允许的字符(cookie将不会被设置),当你能避免的情况,它是在$_COOKIE
数组值将是可用的。
如果你坚持原始的方法,你可以找到浏览器发送的Cookie在$_SERVER['HTTP_COOKIE']
。这将是字符串格式,如key1=value1; key2=value2
。其中一种方法是做简单的爆炸:
foreach(explode('; ',$_SERVER['HTTP_COOKIE']) as $rawcookie)
{
list($k,$v) = explode('=',$rawcookie, 2);
$_RAWCOOKIE[$k] = $v;
}
var_dump($_RAWCOOKIE);
你确定你的cookie设置正确吗?你正在使用'var_dump'来输出一些数据,并且在这个cookie不能被设置之后,你可能会使用一些旧的cookie? – 2010-04-22 20:41:01
只需重新加载页面 – user250343 2010-04-23 00:09:21