我了解像素跟踪的基础知识,我能够将引用我的跟踪域上的图像的像素插入到其他网站。
但是,如何增加跟踪域上的实际像素数?每次提供像素图像时,是否有某种日志告诉我?我能做类似的事情吗:
<img src="http://www.foo.com/serveImage/getImage.php?id=5123" />
然后有 getImage 页面,提供图像,并根据传入的 id 递增?还是有更好的方法来实现这一目标?
先感谢您。
我了解像素跟踪的基础知识,我能够将引用我的跟踪域上的图像的像素插入到其他网站。
但是,如何增加跟踪域上的实际像素数?每次提供像素图像时,是否有某种日志告诉我?我能做类似的事情吗:
<img src="http://www.foo.com/serveImage/getImage.php?id=5123" />
然后有 getImage 页面,提供图像,并根据传入的 id 递增?还是有更好的方法来实现这一目标?
先感谢您。
如果您只想输出 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);
是的,你有正确的想法。
你给每个站点或页面一个唯一的 ID,然后在图像 src 中传递。因此,在您的示例中,ID 是 5123。
然后在您的 getImage.php 脚本中使用此 ID 来增加数据库(或者您记录数据)并返回您想要的任何图像。如果您希望返回的图像显示点击次数,您可以使用GD 扩展动态创建图像- 有关更多信息,请参阅 PHP 手册。
这是我的跟踪代码:
<?php
$id = $_GET['site_id'];
// do track
$imageFile = 'images/pixel.jpg';
$im = imagecreatefromjpeg($imageFile);
header('Content-type: image/jpeg');
imagejpeg($im);
?>
有点切题的答案,但评论太长了:
您不一定需要增加任何内容,具体取决于您如何实现它。如果你的目标是让它超快,仅仅依靠服务器请求日志就足够了。“getImage.php?q=5123”的每个请求都已经存在,您只需从查询字符串中提取相关信息。
您可以稍后将日志解析到一个很好的、可查询的数据库中(通过 cron 等),带外它不会影响提供跟踪错误。一次性完成这一切会更优雅一些,但如果您要处理大量请求,那么无论如何日志都已经存在了。
奖励:服务器日志也有引用者和时间戳,因此您可以更轻松地查看是否有人直接敲击 getImage.php 或从其他地方链接到它以玩弄数字,如果这些数字值得的话。