2009-07-23 34 views
6

我了解像素跟踪的基础知识,我可以在其他网站上插入一个将跟踪域上的图像引用到其他像素的像素。如何在PHP中的域中使用像素跟踪

但是,如何增加跟踪域上的实际像素数?每当像素图像被投放时,是否有某种日志会告诉我?我能够做一些事情,如:

<img src="http://www.foo.com/serveImage/getImage.php?id=5123" /> 

然后才有的getImage页面,服务立形象,增加基于中传递的ID?还是有更好的方法来实现这一目标?

预先感谢您。

回答

13
如果你想只输出GIF这是一个快速简单的方法,只要确保你的脚本不输出任何东西之前或之后

header("Content-type: image/gif"); 
header("Content-length: 43"); 
$fp = fopen("php://output","wb"); 
fwrite($fp,"GIF89a\x01\x00\x01\x00\x80\x00\x00\xFF\xFF",15); 
fwrite($fp,"\xFF\x00\x00\x00\x21\xF9\x04\x01\x00\x00\x00\x00",12); 
fwrite($fp,"\x2C\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02",12); 
fwrite($fp,"\x44\x01\x00\x3B",4); 
fclose($fp); 
3

是的,你有正确的想法。

给每个网站或页面一个唯一的ID,然后在图像src中传递。因此,在您的示例中,ID是5123.

在您的getImage.php脚本中,然后使用此ID来递增数据库(或者您记录数据)并返回您想要的任何图像。如果您希望返回的图像显示点击次数,您可以使用GD extention即时创建图像 - 请参阅PHP手册了解更多信息。

3

这是我的跟踪代码:

<?php 

$id = $_GET['site_id']; 

// do track 

$imageFile = 'images/pixel.jpg'; 
$im = imagecreatefromjpeg($imageFile); 
header('Content-type: image/jpeg'); 
imagejpeg($im); 


?> 
+5

如果你想减少资源使用,不要使用GD来读取图像文件,然后吐出来。只需发送内容标题,然后使用`readfile()`。 – gnud 2009-10-05 11:02:30

+0

@gnud你是对的...现在使用301 HTTP标头重定向到图像会更明智... – 2012-10-16 15:00:04

1

切线答案的那种,而是太长评论:

你不一定需要增加什么,取决于你如何实现它。如果你的目标是使其超速,只依靠服务器请求日志就足够了。每个“getImage.php?q = 5123”的请求都已经存在,你只需要从查询字符串中提取相关信息。

您可以稍后(通过cron等)将日志解析到一个漂亮的,可查询的数据库中,在不会影响提供跟踪错误的带外。一举全力做到了一点,但如果你处理了很多请求,日志已经存在了。

奖励:服务器日志也有推荐人&时间戳,所以你可以更容易地看到是否有人直接敲击getImage.php或从其他地方连接到游戏的数字,如果这些数字是值得的。