2012-03-13 67 views
8

在一个页面上我有这样的事情PHP setcookie()函数不工作

setcookie('user', 'value' ,6000, '/', 'mydomain.co.uk'); 

在接下来的页面我有

var_dump($_COOKIE); 

我可以看到所有的自动生成的,如PHPSESSID但我看不到user

如果我做echo setcookie('user', 'value' ,6000, '/', 'mydomain.co.uk');它返回true。所以我不确定为什么我看不到它。

我尝试了很多不同的想法,但没有任何工作。此外,我已经使用.htaccess通过一个页面重定向所有请求index.php不知道这是否做任何事情。

+0

您可能会发现['新的Cookie($ name)'](https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L51)有帮助, [这个独立的库](https://github.com/delight-im/PHP-Cookie)。 – caw 2016-09-21 02:39:06

回答

17

试试这个:

setcookie('user', 'value' ,time() + 6000, '/', 'mydomain.co.uk'); 

的到期参数需要一个时间戳。作为时间戳的6000在过去,因此删除了Cookie。

+0

啊哈是的!非常好,谢谢! – Alex 2012-03-13 19:21:22

+1

补充说明:expires参数可以设置为0,基本上使cookie在会话结束时过期。http://php.net/manual/en/function.setcookie.php – diggersworld 2012-11-14 16:56:11

1

如何:

setcookie('user', 'value' ,6000, '/', '.mydomain.co.uk'); 

检查在浏览器的饼干。有些浏览器(firefox和chrome)有插件,可以让你看到cookies,因此你可以进行调试。

编辑:问题是6000.这是错误的。 使用这样的:time() + 6000

+0

是的,我一直在使用一个Chrome插件,但是当它没有出现在那里时,却使用了var_dumping $ _COOKIE。我试过使用'.mydomain.co.uk'但它仍然不工作:( – Alex 2012-03-13 19:16:38

+0

啊,是的,谢谢! – Alex 2012-03-13 19:21:48