使用cookie传递URL参数字符串

时间:2016-02-26 16:40:15

标签: javascript php jquery cookies

我有一个包含'!'的网址在查询参数的值中。我在cookie中编码param字符串并加载相关页面。来自php:

foreach ( $_GET as $key => $value ){
    setcookie($key,$value,time()+60,'/');
}

在相关页面中,cookie的值(通过javascript / jquery $ .cookie(“”)读取)具有'!'编码为%21。

有人可以告诉我为什么'!'已被编码?它不是cookie值中的有效字符吗?

2 个答案:

答案 0 :(得分:0)

有两个地方可以编码数据。第一个是从$_GET数组中取出时,可以对$value进行编码,并且可以使用rawurldecode()进行解码。可能发生编码的第二个地方是使用setcookie()时;为了避免这种情况,请改用setrawcookie(),这将设置原始cookie而不是编码cookie。

foreach ( $_GET as $key => $value ){
    setrawcookie($key, rawurldecode($value), time() + 60, '/');
}

答案 1 :(得分:0)

  

有人可以告诉我为什么'!'已被编码?它不是cookie值中的有效字符吗?

this answer。根据RFC 6265,!是cookie名称和值中的有效字符。如果php正在编码!,则意味着它是一个错误。

要解决此问题,您可以执行@Andrew建议的操作或使用名为js-cookie的库,该库允许使用converters拦截cookie读取,然后您可以还原PHP在客户端中执行的编码。 / p>