代码之家  ›  专栏  ›  技术社区  ›  Petrogad

如何在PHP中跨域使用像素跟踪

  •  6
  • Petrogad  · 技术社区  · 16 年前

    我了解像素跟踪的基本知识,我可以将引用我跟踪域中图像的像素插入其他网站。

    但是,如何增加跟踪域上的实际像素计数?有没有什么日志可以告诉我每次提供像素图像?我能做些什么吗?

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

    然后有getimage页面,提供图像,并根据传入的ID递增?还是有更好的方法来实现这一点?

    提前谢谢。

    4 回复  |  直到 15 年前
        1
  •  13
  •   nsbucky    15 年前

    如果您只想输出一个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);
    
        2
  •  3
  •   Jacob Wyke    16 年前

    是的,你的想法是对的。

    为每个站点或页面提供一个唯一的ID,然后在image-src中传递该ID。所以在您的示例中,ID是5123。

    在getimage.php脚本中,然后使用这个ID来增加数据库(或者记录数据的方式),并返回您想要的任何图像。如果希望返回的图像显示点击数,可以使用 GD extention -有关它的更多信息,请参阅PHP手册。

        3
  •  3
  •   Gabriel Sosa    16 年前

    这是我的航迹代码:

    <?php
    
    $id = $_GET['site_id'];
    
    // do track
    
    $imageFile = 'images/pixel.jpg';
    $im = imagecreatefromjpeg($imageFile);
    header('Content-type: image/jpeg');
    imagejpeg($im);
    
    
    ?>
    
        4
  •  1
  •   tadamson    15 年前

    回答有点无关紧要,但评论太长:

    您不一定需要增加任何东西,这取决于您如何实现它。如果你的目标是让它超快速,仅仅依靠服务器请求日志就足够了。每次请求“getimage.php”?Q=5123“已经存在了,您只需要从查询字符串中提取相关信息。

    您可以稍后(通过cron等)将日志解析到一个好的、可查询的数据库中,在这个数据库中,它不会影响跟踪错误的服务。一次完成这一切有点优雅,但是如果你处理了很多请求,那么日志就已经存在了。

    额外的好处:服务器日志也有引用者和时间戳,因此您可以更容易地看到是否有人直接锤击getimage.php或从其他地方链接到它来玩数字游戏,如果这些数字值得。

    推荐文章