【问题标题】:How to set comma separated values in cookies如何在 cookie 中设置逗号分隔值
【发布时间】:2012-02-21 13:49:24
【问题描述】:

当我尝试按以下方式设置 cookie 时,浏览器中显示的 cookie 值是这样的 cookie 名称 -> 最近的和值 1%2c2 其中 1 和 2 是我的获取参数,而 %2c 我不知道我想要什么,而不是 %2c

if(!empty($_GET['c']))
{
    $c = $_GET['c'];
    if(isset($_COOKIE['recent']))
    {
        $c=$_COOKIE['recent'].','.$c;
        setcookie('recent',$c);
    }
    else
    {
        if(setcookie('recent',$c))
        {
            echo "yes";
        }
        else
        {
            echo "no";
        }
    }
}
echo $_COOKIE['recent'];

【问题讨论】:

  • $c$d 的初始值是多少?此外,您在第 #5 行缺少分号

标签: php cookies setcookie


【解决方案1】:

请注意,cookie 的值部分将自动 发送 cookie 时进行 urlencoded,接收时为 自动解码并分配给同名的变量 cookie 名称。

http://php.net/manual/en/function.setcookie.php

http://www.php.net/manual/ru/function.urlencode.php

【讨论】:

  • 您不需要使用urlencode()urldecode()。正如您在回答中引用的那样,这会自动发生
  • 也许这是个bug,试试explode(',',$_COOKIE['some_cookie']);它不适用于逗号分隔的列表。但是,如果您先将 cookie 分配给 $some_cookie,然后再进行 explode(',',$some_cookie);有用。所以我认为你不能假设 cookie 总是自动解码的。
  • 作品; var_dump() 你的cookie,你会看到逗号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2017-06-22
相关资源
最近更新 更多