如何获取PHP“;setrawcookie";价值回归?

如何获取PHP“;setrawcookie";价值回归?,php,http,cookies,cgi,Php,Http,Cookies,Cgi,IETF建议对二进制cookie值使用base64编码: 所以我使用了setrawcookie(..),但我不知道使用什么变量来取回cookie,因为$\u cookie[..]仍然使用与setcookie(..)匹配的URL解码。这将在输出中将“+”替换为“” <?php var_dump($_COOKIE['TEST']); $binary_string = ""; for($index = 0; $index < 256; $index++){ $binary_st

IETF建议对二进制cookie值使用base64编码:

所以我使用了
setrawcookie(..)
,但我不知道使用什么变量来取回cookie,因为
$\u 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);
?>

您应该使用普通的
设置cookie
而不是
setrawcookie
,这样您可以避免在尝试发送带有不允许字符的cookie时出现这种情况(cookie将不会被设置),并且它在
$\u cookie
数组中的值将可用

如果您坚持使用原始方法,您可以在
$\u服务器['HTTP\u COOKIE']
中找到通过浏览器发送的COOKIE。这将是字符串格式,如
key1=value1;键2=值2
。将其放入阵列的一种方法是进行简单的分解:

foreach(explode('; ',$_SERVER['HTTP_COOKIE']) as $rawcookie)
{
    list($k,$v) = explode('=',$rawcookie, 2);
    $_RAWCOOKIE[$k] = $v;
}

var_dump($_RAWCOOKIE);

你确定你的cookie设置正确吗?您正在使用输出一些数据的
var\u dump
,并且在此之后无法设置cookie,因此您可能正在对一些旧cookie进行操作?