2011-11-30 63 views
0

我有最奇怪的问题与Cookies。我写了一些PHP脚本,使用令牌来标识访问者,以便“他/她”可以正确使用该网站。Bluehost(或PHP脚本)问题与Cookies

令牌系统在本地开发机器(windoze + ZendApache)上运行良好,并且不能在Bluehost上的生产服务器上运行。

设置cookie的过期时间为60天时,我在域中使用“/”和域名为“mydomain.com”。我可以正确地在浏览器上看到cookie,并且可以确认与数据库中的值进行比较时,值设置正确。

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

任何想法为什么会发生这种情况?我有可能错过了一些设置?

我已经在最新的Firefox,Opera,Safari和Chrome上测试过它。

谢谢。

编辑:

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

再次感谢。

回答

2

你应该使用的

.mydomain.com 

代替

mydomain.com 

例如:

setcookie("MyCookie", $value, time()+60*24*3600, "/", ".mydomain.com", 1); 
+0

它添加。 (点)在自己前面。我想到了这一点,并尝试过,但问题依然存在。看起来,浏览器没有发送带有令牌数据的cookie。如果我print_r $ _REQUEST,我可以看到除了持有令牌值的cookie之外的所有其他cookie。 – petsoukos

+0

请给我们一些代码示例。你如何获得/设置你提到的cookie?你如何定义令牌?等等。 –

+0

嗯,我刚刚发现bluehost不太喜欢unserialize()函数。我将3个值存储在标记cookie中,但可以在下次刷新时获取这些值。我正在重写令牌系统脚本以使用implode()和explode()来设置和获取cookie数据。谢谢你花时间回答。 ;) – petsoukos