0

我遇到了 Cookie 最奇怪的问题。我编写了一些使用令牌来识别访问者的 PHP 脚本,以便“他/她”可以正确使用该网站。

Token 系统在本地开发机器(windoze+ZendApache)上运行良好,但在 Bluehost 上的生产服务器上无法运行。

在设置 cookie 的有效期为 60 天时,我使用“/”作为路径,使用“mydomain.com”作为域。我可以正确地看到浏览器上的 cookie,并且与数据库中的值相比,我可以确认这些值设置正确。

每次刷新页面时,服务器都不会获取 cookie 并创建一个新令牌并将其发送回浏览器并再次在数据库中创建新记录。新的 cookie 再次与最新记录匹配,但下次我刷新时,又是同样的事情。无法维护令牌,因此无法浏览站点。

知道为什么会这样吗?有没有可能我错过了一些设置?

我已经在最新的 Firefox、Opera、Safari 和 Chrome 上对其进行了测试。

谢谢。

编辑:

这是一个与 PHP 和 Bluehost 相关的问题,我在 cookie 的值上以序列化格式存储了 3、40 个字符的字符串。unserialize() 函数由于某种原因在 Bluehost 上没有执行,但在我的开发机器上运行良好。所以我将存储的值更改为 40chars.40chars.40chars 并用分隔符“。”分解该值。得到3个字符串。

再次感谢。

4

1 回答 1

2

你应该使用

.mydomain.com

代替

mydomain.com

例如:

setcookie("MyCookie", $value, time()+60*24*3600, "/", ".mydomain.com", 1);
于 2011-11-30T23:59:51.173 回答