如何从PHP流式传输图像以进行跟踪

时间:2012-02-02 20:22:07

标签: javascript tracking pixel affiliate query-parameters

通过联盟营销和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,而我 CAN 'T 在这种情况下使用jQuery。相反,我需要在100%纯Javascript中执行此操作。所以,我无法阅读$ _GET来获取cname和cemail。

我知道location.search会给我这些参数。我只需要如何更改IMG标记,以便在加载事件上我可以在最后传递location.search。自从IE7及以后,我需要它在所有浏览器上工作,以及Opera,Safari和Chrome。

2 个答案:

答案 0 :(得分: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事件。这样做的问题是您通过网络承担了请求的费用。

这是我可以选择的最短的,而不是重复网址,我使用+=,但这意味着必须清除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>

答案 1 :(得分:1)

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