如何获取PHP“;setrawcookie";价值回归?
IETF建议对二进制cookie值使用base64编码: 所以我使用了如何获取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
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进行操作?