编辑:
我想计算一个网页加载的次数,每次加载时,我想更新一个图像(这是一个jpg文件)来显示页面加载的次数。我知道如何更新图像并将其转换为jpg,但我想弄清楚的是如何“收听”页面加载。这个页面在我的服务器外部...我无法访问它...只是一个随机的网页。
我应该使用什么方法?
这是我所希望的:
<?php
if (webpagevisited('www.stackoverflow.com')) //this would be the function
{
increase_hit_counter_by_one();
}
我创建了函数increase_hit_counter_by_one()。它使用mySQL数据库来更新值并过滤重复的IP地址。什么方法最好创建webpagevisiited()函数?
答案 0 :(得分:1)
我认为你最好的选择是$referrer = $_SERVER['HTTP_REFERER'];
。
这应该会显示加载图像的网页,但也可以通过CURL甚至假标题轻松欺骗。
此外,计数不会存储在该页面上,因为每次加载图像时都会重置$count
。
您需要某种数据库来存储/更新匹配。
答案 1 :(得分:0)
编辑 - 在您编辑答案并评论之后,您可以使用简单的.htaccess(我假设您正在使用启用了mod重写的apache)重写来修改URL。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^image_counter.jpg$ image.php [L]
</IfModule>
假设.htaccess与您的image.php脚本一起位于根网页目录中,现在您可以使用<img src="http://www.yourwebsite.com/image_conter.jpg" alt="" />
并且htaccess应该将脚本重写为您的脚本。有关htaccess规则的更多信息,请访问apache网站。
使用$_SERVER['HTTP_REFERER']
,您可以针对您正在计算的特定网址进行测试。
最后根据需要提供图像,例如
header('Content-Type: image/jpeg'); //or other correct mime type
//output image you created
您需要将'count'存储在数据库或类似的存储选项中才能保存count变量,每次加载页面时都会重置它,正如Dom正确指出的那样。
我建议最简单的选择是将你的图像src作为你的php文件,例如。
<img src="image.php" alt="Hit Counter" />
然后在您的image.php文件中,您可以使用Mysql检索存储的计数,并将其递增1并保存新计数。然后,您可以根据自己的喜好在图像中显示计数。
例如:
<?php
//get saved count here as $count
$count++;
//save new count
//create image using count and present it.
?>