我正在尝试阻止我网站上的一些基本点击欺诈,并且正在根据会话时间数据构建链接。
一切都在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对于这个项目来说并不是一个真正的选择。
答案 0 :(得分:1)
我的猜测是主页面正在执行两次,这导致会话重新启动,并将新值分配给$ _SESSION ['time']。这就是它总是略微增加的原因。查看您的Web服务器日志,或使用Fiddler查看该页面是否被请求两次。如果是这样,this可能会有所帮助。