代码之家  ›  专栏  ›  技术社区  ›  user250343

如何返回php“setrawcookie”值?

  •  3
  • user250343  · 技术社区  · 14 年前

    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);
    ?>
    
    1 回复  |  直到 11 年前
        1
  •  7
  •   dev-null-dweller    14 年前

    你应该用普通的 setcookie 相反 setrawcookie ,这样可以避免在尝试使用不允许的字符发送cookie时出现这种情况(cookie将不会被设置),并且它的值位于 $_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);