【发布时间】:2011-02-27 01:03:49
【问题描述】:
我正在尝试防止我的网站上出现一些基本的点击欺诈,并且正在根据会话时间数据构建链接。
在 FF 中一切正常,但在 IE 中,我存储在会话中的信息正在以某种方式被更改。
当我加载主页时,我像这样设置我的会话变量
session_start(); $_SESSION['time']=time();我将会话值放入页面中,所以我得到了类似的东西 1275512393.
当用户点击一个链接时,我会发送一个 ajax 请求,该页面会返回我要放入警报的会话。
session_start(); 回声 $_SESSION['时间']; 死();警报正在返回 1275512422.
仅在 IE 中返回的 $_SESSION['time'] 与原始 $_SESSION['time'] 不同
这似乎不是一个缓存问题,因为时间总是非常接近,第二个总是在第一个之后,但我并不肯定。
--------更新 - 由 facebook javascript 引起的问题。还没有解决办法--------------
当我按照 MANCHUCK 的建议删除要发布的代码时,我开始怀疑这部分 Facebook 代码是否以某种方式导致了问题
FB.ini({appId: 'myappid', status: true, cookie: true, xfbml: true });
所以我把它去掉并再次运行页面,现在 $_SESSION 时间匹配了!!
所以我发现了问题。 我想也许 FB javascript 正在创建一个会话(注意我只使用 FB javascript,而不是 PHP api),它以某种方式覆盖了我之前会话的值。
我将有问题的 javascript 放回原处,并尝试将会话名称更改为 $_SESSION['mytime'] 或 $_SESSION['time2'],但问题仍然存在。 我尝试使用其他时间函数,如 date('Ymd G:h:s') 或 date('Ymd G:h:s').'test' 但在检索 $_SESSION 时时间总是增加几秒钟从第二页开始。
我很惊讶会发生这样的事情,并且无法想象这是怎么可能的,但我现在已经重复了 4 次,每次我拿出那一行 Javascript 时,一切正常!
不幸的是,不使用 facebook connect 并不是这个项目的真正选择。
【问题讨论】:
-
会话数据存储在服务器而不是浏览器中。发生的情况是 PHP 向浏览器发送了一个带有唯一 ID 的 cookie。您存储在会话中的数据将保存在服务器上(默认情况下保存在文件中,但您可以更改它)。你能把整个代码贴出来让我们看看吗?
-
这就是我认为的MANCHUCK,这就是为什么我看到这种错误感到非常惊讶。我会尽量删掉多余的东西,并发布更多的代码。
标签: php internet-explorer facebook session session-variables