使用Symfony HttpFoundation创建非会话Cookie

时间:2014-07-29 04:42:16

标签: symfony cookies session-cookies

使用不会在会话中过期的HttpFoundation组件创建Cookie需要做什么?

背景

我正在使用Symfony的HttpFoundation组件。我没有使用整个Symfony框架。我能够使用该组件存储和检索会话cookie。

每当我将cookie过期时间更改为0以外的其他内容时,它们都不会保存。

这将创建一个会话cookie:

new Cookie( $cookie_name, $cookie_value, 0, '/', null, false, false);

这不会创建cookie:

new Cookie( $cookie_name, $cookie_value, 10000, '/', null, false, false);

1 个答案:

答案 0 :(得分:0)

感谢Crozin的反馈,我查看了帖子标题,发现了问题。

过期时间为0的标题:

Cache-Control: no-cache\r\nDate: Tue, 29 Jul 2014 12:49:50 GMT\r\nLocation: stories\r\nSet-Cookie: cerberus=email_add%40yahoo.com+53d7986e073ef; path=/\r\n

过期时间为10000的标题:

Cache-Control: no-cache\r\nDate: Tue, 29 Jul 2014 12:50:53 GMT\r\nLocation: stories\r\nSet-Cookie: cerberus=email_add%40yahoo.com+53d798ad3696e; expires=Thu, 01-Jan-1970 02:46:40 GMT; path=/\r\n

问题是,我为过期时间设置了错误类型的值,应该是这样的

$expire  =  time() + (3600 * 48);
new Cookie( $cookie_name, $cookie_value, expire, '/', null, false, false);

正确的结果:

Cache-Control: no-cache\r\nDate: Tue, 29 Jul 2014 12:56:58 GMT\r\nLocation: stories\r\nSet-Cookie: cerberus=email_add%40yahoo.com+53d79a1a3f335; expires=Thu, 31-Jul-2014 12:56:58 GMT; path=/\r\n