php - cookie 值中的逗号在 ZF2 中被双重解析

标签 php cookies zend-framework2 setcookie

我正在使用 ZF2 的 Zend\HTTP\Header\SetCookie class设置一个命名的 cookie。要注意的是,该值是逗号分隔的单个单词值列表。到目前为止,它一直运行良好,如下所示:

$translations_cookie = new SetCookie('translations', implode(',', $requested_translations), null, null, null, false, false, null, null);
$response->getHeaders()->addHeader($translations_cookie);

cookie 值被编码并且逗号变为 %2C 并且所有浏览器都很好。稍后检索值并按逗号拆分就可以了。

问题是 cookie 没有定义路径值,它默认为运行它的任何文件夹。我刚刚遇到了中断的情况,我需要强制将 cookie 路径设为站点根目录。我认为这就像添加正确的值一样简单:

$translations_cookie = new SetCookie('translations', implode(',', $requested_translations), null, '/', null, false, false, null, null);
$response->getHeaders()->addHeader($translations_cookie);

这似乎设置路径很好,但现在 cookie 值是乱七八糟的!只有数组中的 last 项才能到达设置的实际 cookie。无论数组中有多少项,它们都会被丢弃,只有最后一项出现在 cookie header 中。

知道发生了什么事以及如何解决它吗?这是 ZF2 中的错误还是我做错了什么?

编辑:是的,在将值传递给 cookie 函数之前,我尝试使用 urlencode() 对其进行预编码,但这并没有改变最终结果。使用不同的定界符确实可以解决 Zend 的这个问题,但它会在我的程序的其他部分(包括第三方代码和现有 URL)之间造成不兼容,这意味着我必须对 cookie 进行版本控制并更新旧 session ——我不想这样做的马戏团如果我能帮忙,请加入。

最佳答案

这听起来可能很愚蠢,但只需删除 cookie 或尝试使用其他浏览器(不是私有(private)浏览器):)

关于php - cookie 值中的逗号在 ZF2 中被双重解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32071875/

相关文章:

php - 要求字段单独存在的条件验证器

android - 在android应用程序中使用volley api访问所有响应头

php - 有没有办法在 PHP 中检查 cookie 是否为 httponly

php - 如何使用zf2向mysql插入数据?

php - 如何按照 Apigility 方式验证嵌套数据?

即使没有记录插入数据库,PHP 也返回成功

PHP - 简单的下载脚本

php - 如何使用javascript获取密码字段值?请帮帮我,我从早上就被困在这个问题上

javascript - 从第三方网站检索 cookie/ session 内容的最佳方式是什么?

zend-framework2 - 在共享托管服务器上安装 ZF2