use*_*343 3 php cookies cgi http
IETF建议对二进制cookie值使用base64编码:http: //tools.ietf.org/html/draft-ietf-httpstate-cookie-07
所以我使用setrawcookie(..)但我不知道用什么变量来获取cookie,因为$_COOKIE[..]仍然使用匹配的URL解码setcookie(..).这会在输出中将"+"替换为"".
<?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);
?>
Run Code Online (Sandbox Code Playgroud)
你应该用正常setcookie来代替setrawcookie,这种方式试图发送的cookie不允许的字符(cookie将不会被设置),当你能避免的情况和它的价值$_COOKIE阵列将可以使用.
如果你坚持使用raw方法,你可以找到浏览器发送的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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3312 次 |
| 最近记录: |