setcookie 在非 Firefox 中暂时不起作用

发布于 2024-11-08 23:06:02 字数 713 浏览 0 评论 0原文

在测试一些脚本时,我注意到,如果过期时间很短(不是零) - cookie 在 Chrome、Opera、IE 中不可用。

示例:

<?php
// setting cookie for 5 minutes
setcookie( 'cookie1' , 'Test', time()+60*5 );
echo $_COOKIE['cookie1'];
// yeap (it should display it only with refresh of page - I know:)
?>

在 Firefox 中 - 我看到“测试”一词(打开并刷新页面后)。

但在其他浏览器中 - 我没有看到这一点。 例如,如果我将时间更改为 time()+60*100 - 它在所有浏览器中都可以正常工作。

这是什么原因呢?

UPD:

来自 Chome Dev Tool(抱歉,不知道 Chrome firebug 是如何调用的):

Date:Sun, 22 May 2011 10:29:59 GMT
Keep-Alive:timeout=15, max=99
Server:Apache/2.2.14 (Ubuntu)
Set-Cookie:Maslo123=Test; expires=Sun, 22-May-2011 10:34:59 GMT

日期早于“过期”;

While testing some scripts, I've noticed, if expiration time is little (not zero) - cookie isn't available in Chrome, Opera, IE.

Example:

<?php
// setting cookie for 5 minutes
setcookie( 'cookie1' , 'Test', time()+60*5 );
echo $_COOKIE['cookie1'];
// yeap (it should display it only with refresh of page - I know:)
?>

In Firefox - I see the word Test (after opening and refreshing the page).

But in other browser - I don't see this.
If I change time to time()+60*100 for example - it works fine in all browsers.

What's the reason of this?

UPD:

From Chome Dev Tool (sorry, don't know how Chrome firebug is called):

Date:Sun, 22 May 2011 10:29:59 GMT
Keep-Alive:timeout=15, max=99
Server:Apache/2.2.14 (Ubuntu)
Set-Cookie:Maslo123=Test; expires=Sun, 22-May-2011 10:34:59 GMT

Date is early than 'expires';

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

好多鱼好多余 2024-11-15 23:06:02

由于我们已经了解到您的服务器时间有几个小时的误差,因此 cookie 已经过期。

Firefox 仍然存储 cookie 的原因可能是它检测到服务器和客户端之间的奇怪时间差,并使用 Date 值和 Expires 属性值之间的差异确定 cookie 的到期日期。

这些问题也是为什么后来的 RFC 标准(例如当前的 RFC 6265 更喜欢相对的)增量秒的时间值。

As we have already acquired that your server’s time is wrong by few hours and thus the cookies are already expired.

The reason why Firefox still stores the cookie might be that it detect the odd time difference between the server and the client and uses the difference between the Date value and the Expires attribute value to determine the cookie expiration date.

These issues are also the reason why latter RFC standards like the current RFC 6265 prefer the relative time value of delta seconds.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文