【问题标题】:How to stream an image from PHP for tracking purposes如何从 PHP 流式传输图像以进行跟踪
【发布时间】:2012-02-25 12:35:33
【问题描述】:

通过联属网络营销和 PHP,我知道如何制作这样的跟踪像素:

<img alt="" src="http://example.com/pixel.php?tracking=43233" />

然后,在 pixel.php 中我执行以下操作:

<?php

$sTrack = @ $_GET['tracking'];
$sTrack = urldecode($sTrack);
$sTrack = strip_tags($sTrack);
$sTrack = trim($sTrack);
// do something with sTrack here
header('Content-type: image/gif');
readfile('images/invisible.gif');

问题是,在此报价页面上,我收到 cname 和 cemail 作为 URL 上的查询参数,而客户托管的东西不支持 PHP,但允许我插入 Javascript,我 可以'T 在这种情况下使用 jQuery。相反,我需要使用 100% 纯 Javascript 来执行此操作。所以,我无法读取 $_GET 来获取 cname 和 cemail。

我知道 location.search 会给我这些参数。我只需要如何更改 IMG 标签,以便像在加载事件中一样,我可以在最后传递 location.search。而且我需要它在 IE7 及更高版本以及 Opera、Safari 和 Chrome 之后的所有浏览器上工作。

【问题讨论】:

  • 这是服务器端的 100%。与 JavaScript 或 jQuery 无关。您需要在发送 MIME 标头后输出二进制文件。
  • @Diodeus,呃,为什么不直接在 Javascript 中读取 location.search 并将其传递给远程 PHP 页面呢?看,下面的用户“caleb”明白我在说什么。

标签: javascript tracking pixel affiliate query-parameters


【解决方案1】:

使用Javascript设置图片来源。

<body onload="document.getElementById('tracking_pixel').src='http://example.com/pixel.php'+location.search;">
    <img id="tracking_pixel" src="" />
</body>

编辑:

是的,您可以通过将其放在 img 的 onload 中来缩短它。您甚至可以删除 id 和 this 关键字。但是,您不能让初始 src 为空,事实上,它必须是有效的图像才能触发 onload 事件。这样做的问题是您会产生通过网络请求的成本。

这是我能收集到的最短路径,我没有重复 url,而是使用了+=,但这意味着必须清除 onload 处理程序。

<body>
    <img src="http://example.com/pixel.php" onload="onload=''; src+=location.search;" />
</body>

或者,您可以使用数据 URI。不幸的是,只有 1 个像素的数据 URI 相当长。

<body>
    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR42mNgAAIAAAUAAen63NgAAAAASUVORK5CYII=" onload="src='http://example.com/pixel.php'+location.search;" />
</body>

【讨论】:

  • 问题。有没有办法缩短这个时间,比如在 IMG 标签中使用 onload 事件,然后在 Javascript 中使用“this”变量?然后用这个缩短的版本让它跨平台工作?
  • 顺便说一句,我的一位埃及程序员同事有一个很好的建议。不要通过 location.search。相反,使用 $_SERVER['HTTP_REFERER'] 在 pixel.php 中获取它。这完全避免了对 Javascript 的需求,并允许您将此技术插入电子邮件和论坛等内容中。
  • 是的,您可以这样做,但有时您想要跟踪的不仅仅是数字。例如,加载时间。
  • 好点。因此,如有必要,请使用 Javascript。否则,使用远程页面中的 HTTP_REFERER。
  • 顺便说一句,我刚刚注意到您的替代解决方案。这太棒了——它缩短了一点。因此,我可以根据需要使用 pixel.php 中的 $_SERVER['HTTP_REFERER'] 或 Javascript 技术中的任何一个选项。
【解决方案2】:

您可以只使用http://example.com/pixel.php 作为 img src,然后检查该 PHP 脚本中的引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2012-03-21
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多