PHP获取原始cookie

时间:2016-08-22 14:49:55

标签: php cookies

也许这是一个重复的问题,但我无法找到它。

问题是我在浏览器中有一个存储的cookie,如username=test+1@test.com,当我从php $_COOKIE["username"]读取它时,我得到test 1@test.com。我希望cookie没有url解码,就像浏览器发送它一样。我知道存在功能setrawcookie(),我想要的东西就像它的反面(如getrawcookie)。

由于

1 个答案:

答案 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键进行了哪些转换,因此在您的特定实现中可能需要考虑也可以不需要考虑这些。