单击链接时PHP会执行两次文件

时间:2012-05-16 18:34:08

标签: php mysql hyperlink fopen execute

我的网站上有一个奇怪的问题。只要单击链接,文件就会执行两次。我注意到这一点的唯一原因是因为当我提交关键字的搜索请求时,我会在MySQL数据库中记录搜索。数据库总是保存两个记录(有一个时间戳,有时在同一秒添加记录,但通常只相隔一秒)。我知道我是网站上唯一的一个,并且查询没有被循环调用。所以我做了一个fopen($ file,'a')来查看将添加多少行代码,并且大部分时间都添加了两行代码。我可以添加一条记录的唯一方法是连续2-3次运行相同的搜索。

所以我唯一能想到的就是我们在网站上有广告。我能想象的唯一一件事就是当我点击链接时,与广告相关联的javascript也会遵循相同的链接。

还有其他精彩的想法吗?

3 个答案:

答案 0 :(得分:5)

当有资产(图片,js,css)没有实际链接时,我已经看到过这样的症状,例如:

<img src="" />

在这种情况下,浏览器尝试获取相同的网址,但使用不同的Accept标头。记录它,这将有助于查看是否是这种情况。

答案 1 :(得分:1)

处理表单时,请检查他们是否实际点击了提交按钮,如下所示:

if (isset($_POST['submit']) && $_POST['submit'] == 'submit') {
   // Process form
} else {
   // Just display it
}

这会阻止您对其进行两次处理。您还应该使用303重定向在表单发布后重定向。

答案 2 :(得分:0)

我应该害怕吗?

我在撰写这篇文章后立即评论了谷歌广告的代码(并且看到@cillosis建议)。

我不再有问题了。完全是谷歌。每当我进行搜索时,这都在我的apache访问日志中。

66.249.73.87 - - [16/May/2012:12:38:45 -0500] "GET /search.php?page_num=1&keywords=stylist&city=&state=AL&cat= HTTP/1.1" 200 14185 "-" "Mediapartners-Google"

我很害怕......