来自IE的会话数据不一致 - 缓存会话?

时间:2010-06-02 21:08:41

标签: php internet-explorer facebook session session-variables

我正在尝试阻止我网站上的一些基本点击欺诈,并且正在根据会话时间数据构建链接。

一切都在FF中运行,但在IE中,我在会话中存储的信息以某种方式被更改。

当我加载主页面时,我设置了像这样的会话变量

session_start();
$_SESSION['time']=time();

我将会话值放入页面,所以我得到类似的东西 1275512393。

当用户点击链接时,我发送了一个ajax请求,该页面正在返回我正在发送警报的会话。

session_start();
echo $_SESSION['time'];
die();

警报正在返回 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对于这个项目来说并不是一个真正的选择。

1 个答案:

答案 0 :(得分:1)

我的猜测是主页面正在执行两次,这导致会话重新启动,并将新值分配给$ _SESSION ['time']。这就是它总是略微增加的原因。查看您的Web服务器日志,或使用Fiddler查看该页面是否被请求两次。如果是这样,this可能会有所帮助。