【发布时间】:2011-04-06 18:32:27
【问题描述】:
简单地说,我正在尝试使用 mysql 为访问 php 站点的访问者创建一个自定义记录器。在这样做的过程中,我发现我为每个页面加载插入了两个条目。
我已经排除了代码不小心跑了两次。
我将查询放在每一页上,假设它可以完美运行。在意识到它导致出现两个条目后,我感到困惑并从其他页面中删除了查询,仅将其留在索引页面上。
利用 PHP 的 $_SERVER['HTTP_REFERER'] 和 $_SERVER['PHP_SELF'],我将值插入到日志中。看看我之前在哪里以及我现在在哪里。
假设我在创建页面上,我点击了一个指向名为 index.php 的“主页”页面的链接。数据库中的条目会说referer 是“create.php”,当前页面是“index.php”。但是,将插入第二个条目,表示引用者是“index.php”,当前页面是“index.php”
我检查了当我单击指向没有记录器的页面的链接时会发生什么,因此我单击转到“创建”页面。我检查了数据库,还有另一个条目,但讽刺的是,这次只插入了一个条目。这很奇怪,因为创建页面没有记录访问者的代码,它只插入一个条目。但是,它说引用是'create.php',当前页面是index.php。这与应有的水平相反。
进行更多研究后,我决定研究现场观看标题。因此,我使用 firefox 和 IE 进行了检查,在那里我意识到标题获取了我请求的页面,并且也始终获取了根页面。例如,对 create.php 的请求返回..
GET /create.php HTTP/1.1
获取 /style/ HTTP/1.1
GET / HTTP/1.1
我了解第一个 GET,对于我请求的页面,我了解外部样式表的第二个 GET。最后一个让我感到困惑,尽管它似乎证实了我为什么会得到重复的条目。
因为 create.php 页面上没有访问者日志,所以日志没有第一个条目,但是一旦加载根页面,就会为 create.php 创建条目作为引用,当前页面是index.php 页面,因为它正在加载根页面。
因为 index.php 页面上有一个访问者日志,所以当我从“create.php”转到“index.php”时,第一个 GET 会创建一个“create.php”条目作为引用者和当前页面是“index.php”,但第二个条目说“index.php”是引用者和当前页面。
所以我很确定这是我获得第二个条目的原因。
谁能告诉我为什么每次请求都加载根页面?
我在本地使用 xampp for mac os x,我知道它可能是默认的 favicon。但是,我刚刚删除了该图标,它仍然会出现,即使没有显示图标。
我可以提供代码示例和其他东西,在这一点上似乎无关紧要,因为插入查询有效,当我显然只执行一次时它只会出现两次。
【问题讨论】:
-
嗯,是的,这是一个很严重的问题。但它没有告诉我们你做了什么。您想分享任何可能有帮助的代码 sn-ps?
-
向我们展示您的
create.php文件。 -
你的网络服务器已经记录了所有的东西
标签: php mysql http-headers