也许这是一个重复的问题,但我无法找到它。
问题是我在浏览器中有一个存储的cookie,如username=test+1@test.com
,当我从php $_COOKIE["username"]
读取它时,我得到test 1@test.com
。我希望cookie没有url解码,就像浏览器发送它一样。我知道存在功能setrawcookie()
,我想要的东西就像它的反面(如getrawcookie
)。
由于
答案 0 :(得分:0)
基于dubafek的评论,我构建了此代码以获取原始Cookie值:
$raw_cookies = (array_reduce(
explode(';', $_SERVER['HTTP_COOKIE'] ?? ''),
function($carry, $item) {
$pair_arr = explode('=', $item);
$carry[ trim($pair_arr[0]) ] = trim($pair_arr[1]);
return $carry;
},
[]
) ?: []);
从那里可以像使用$raw_cookies
一样使用$_COOKIE
。在curl呼叫中转发cookie时,我需要具有原始值。
编辑:$raw_cookies
和$_COOKIE
的键之间有细微的差别。例如,密钥为connect.sid
的cookie将出现在$_COOKIE['connect_sid']
和$raw_cookies['connect.sid']
中。我不确定PHP对cookie键进行了哪些转换,因此在您的特定实现中可能需要考虑也可以不需要考虑这些。