跟踪外部网站/加载在外部网站上的图像的流量


Track the traffic of an external website/ of an image being loaded on an external website

编辑:

我想计算一个网页加载的次数,每次加载时,我都想更新一个图像(这是一个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地址。创建webpagevisited((函数的最佳方法是什么?

我认为你最好的选择是$referrer = $_SERVER['HTTP_REFERER'];

这应该会显示加载图像的网页,但也可以通过CURL甚至虚假标题很容易地进行欺骗。

此外,计数将不会存储在该页面上,因为每次加载图像时都会重置$count

您将需要某种数据库来存储/更新命中率。

EDIT-编辑答案并发表评论后,您可以使用简单的.htaccess(我认为您使用的是启用了mod重写的apache(重写来修改URL。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^image_counter.jpg$ image.php [L]
</IfModule>

假设.htaccess与image.php脚本一起位于根web目录中,现在您可以使用<img src="http://www.yourwebsite.com/image_conter.jpg" alt="" />,并且htaccess应该将url重写到脚本中。有关htaccess规则的更多信息,请查看apache网站。

使用$_SERVER['HTTP_REFERER'],您可以针对正在计数的特定URL进行测试。

最后根据需要提供图像,例如

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,然后将其递增一并保存新的计数。然后你可以随心所欲地在你的图片中展示你的计数。

例如:

<?php
//get saved count here as $count
$count++;
//save new count
//create image using count and present it.
?>