如何在cookies中设置逗号分隔值

问题描述:

当我尝试按以下方式设置cookie时,数值显示我在浏览器中的Cookie是这样的 cookie name - > recent和value 1%2c2 其中1和2是我的GET参数%2C我不知道这是什么我想要的,代替%2C如何在cookies中设置逗号分隔值

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']; 
+0

什么是'$ C'和'$ D'的初始值?另外,你缺少一行分号#5 – Phil 2012-02-21 05:05:02

注意,cookie的值部分将自动 url编码,当你发送cookie,以及当它被接收时,它被自动解码并被分配给一个变量 ,其名称与相同的cookie名称。

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

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

+2

你不需要使用'urlencode()'或'urldecode()'。正如你在答案中引用的那样,这会自动发生 – Phil 2012-02-21 05:06:59

+0

顺便说一句,引用的脚本在我的虚拟主机上运行良好。 – Electronick 2012-02-21 06:14:17

+0

也许这是一个错误,试试explode(',',$ _ COOKIE ['some_cookie']);它不适用于以逗号分隔的列表。但是,如果您先将cookie分配给$ some_cookie,然后再爆炸(',',$ some_cookie);有用。所以我认为你不能认为cookie总是被自动解码。 – 2013-05-30 09:36:51