php';s";setcookie";不';不能跨浏览器工作?

php';s";setcookie";不';不能跨浏览器工作?,php,javascript,firefox,cookies,mootools,Php,Javascript,Firefox,Cookies,Mootools,目前,我正在使用setcookie设置我的Cookie,但是它只在Firefox和Safari中起作用,并且IE和Chrome(可能还有其他浏览器)中没有设置Cookie 我在一篇关于setcookie和IE的文章中读到,如果到期日在过去(或太小),IE就会忽略它 我知道Javascript可以设置cookies(我使用的是MooTools),但我更喜欢使用php和MooTools&cookies对我不起作用 如果有任何帮助,我们将不胜感激。PHP绝对可以跨浏览器设置Cookie-毕竟,它只是一

目前,我正在使用setcookie设置我的Cookie,但是它只在Firefox和Safari中起作用,并且IE和Chrome(可能还有其他浏览器)中没有设置Cookie

我在一篇关于setcookie和IE的文章中读到,如果到期日在过去(或太小),IE就会忽略它

我知道Javascript可以设置cookies(我使用的是MooTools),但我更喜欢使用php和MooTools&cookies对我不起作用


如果有任何帮助,我们将不胜感激。

PHP绝对可以跨浏览器设置Cookie-毕竟,它只是一个标题,在PHP站点上,您不会看到IE和Chrome中的会话失败,是吗

我能理解为什么我不接受过期的饼干


您检查过这些浏览器中的标题了吗?

检查服务器的时钟。如果延迟运行超过25小时,
time()+3600*25
就浏览器而言可能仍然是过去的时间。

setcookie
不依赖于浏览器,cookie是使用跨浏览器设置的,这肯定是

setcookie失败的原因可能是:

  • 在执行setcookie之前发送文本的fome部分。使用
    错误报告(E_ALL)打开错误消息
    查看输出开始的行。cookies必须在HTML的第一行或执行第一个
    echo
    之前发送
  • 使用BOM以UTF-8编码保存php文件。可以关闭BOM表。在文本编辑器中打开文件,更改编码并重新保存。首先创建备份
  • 使用
    setcookie
    和已过的时间。setcookie的第三个参数是过期时间。小于
    时间()
    ,则不会保存cookie
  • setcookie
    指定错误的参数。检查
    cookie\u name
    参数是否仅包含字母数字字符。根本不要指定
    cookie\u路径
    cookie\u域

解决方案也在使用。此函数保证所有标头都成功发送。阅读手册了解如何使用它的详细信息。

这可能会对您有所帮助。可能适用于所有IE。我还没有亲自测试过。

以下是本页的一部分:

对于那些在InternetExplorer6打印时为什么没有cookie的人来说,这个解释很有趣。经过一点调查,当打印时,过期时间不是0的cookie无法从IE6传递到服务器。将发送过期时间为0的cookie

因此:

setcookie(“TestCookie”,$value,time()+3600)//不会从IE6中的打印/打印预览发送

setcookie(“TestCookie”,$value,0)//将从IE6中的打印/打印预览发送

我会让每个人都知道在IE6中打印时不发送正常过期的cookies是谁的好主意


包含不仅仅是字母数字字符的cookie是一个错误的举动吗?我使用[]符号。我将尝试将到期日期设置为*100。服务器时钟停止工作。time()3600*25应该可以抵消任何时区差异。是的!我把它设为*50,显然IE接受了饼干。我没有亲自测试过它(这是一位朋友的测试),所以如果它不起作用,我会更新这个问题。过期日期不就是浏览器删除cookie的信号吗?@yc是的,我会这么说。我对cookies使用了一个更高级别的抽象已经有一段时间了。
setcookie($name, $value, time()+3600 * 25);