目前我正在使用setcookie设置我的Cookie,但它只能在Firefox和Safari中使用,并且不会在IE和Chrome(以及其他浏览器)中设置Cookie。
setcookie($name, $value, time()+3600 * 25);
我在一篇关于setcookie和IE的文章中读到,如果过期日期是过去的(或者太小),IE就会忽略它。
我知道Javascript可以设置cookie(我使用的是MooTools),但我更喜欢使用php和MooTools&饼干对我不起作用。
任何帮助都将不胜感激。
答案 0 :(得分:3)
检查服务器的时钟。如果它的运行时间超过25小时,那么就浏览器而言,time() + 3600 * 25
可能仍然存在。
答案 1 :(得分:2)
PHP绝对可以通过浏览器设置cookie - 毕竟,它只是一个标题,你不会看到IE中的会话失败而PHP网站上的Chrome会不会这样?
我可以理解为什么IE不会尊重过去有效期的cookie。
您是否检查过这些浏览器中的标题?
答案 2 :(得分:0)
setcookie
不依赖于浏览器,使用HTTP protocol headers设置Cookie,绝对跨浏览器
setcookie失败的原因可能是:
error_reporting(E_ALL);
打开错误消息以查看输出开始的行。 Cookie必须在第一行HTML或第一行echo
执行之前发送。setcookie
与已通过的时间一起使用。 setcookie的第三个参数是到期时间。小于time()
,cookie将不会被保存setcookie
指定错误的参数。检查您的cookie_name
参数是否仅包含字母数字标签。不要指定cookie_path
和cookie_domain
。解决方案也在使用ob_start。此功能可确保成功发送所有标头。阅读手册以了解如何使用它。
答案 3 :(得分:0)
这可能会对你有所帮助。可能适用于所有IE浏览器。我自己没有测试过。
http://php.net/manual/en/function.setcookie.php#100094
以下是该页面的部分:
对于那些在打开Internet Explorer 6时为什么没有cookie的人,你的解释非常有趣。经过一些调查,打印时,一个过期时间不是0的cookie无法从IE6传递到服务器。发送过期时间为0的cookie。
因此:
setcookie(“TestCookie”,$ value,time()+ 3600); //将不会从IE6中的打印/打印预览发送
setcookie(“TestCookie”,$ value,0); //将从IE6中的打印/打印预览发送
我会让大家弄明白在IE6中打印时不发送正常过期的cookie的好主意...