2012-02-02 7 views
0

をPHPから画像をストリームに、私はこのようなトラッキングピクセルを作成する方法を知っている:どのようにアフィリエイトマーケティングと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'); 

このオファーページでURLにクエリパラメータとしてcnameとcemailを受け取りましたが、顧客はPHPをサポートしていないもののホスティングを行っていますが、Javascriptを挿入できるようにしています。CAN 'Tこの場合はjQueryを使用してください。代わりに、私は100%純粋なJavascriptでこれを行う必要があります。だから、私は$ _GETを読んでcnameとcemailを受け取ることができません。

私はlocation.searchが私にそれらのパラメータを与えることを知っています。私はちょうどロードイベントのように私は最後にlocation.searchを渡すことができるようにIMGタグを変更する方法が必要です。そしてIE7以降、Opera、Safari、Chromeのすべてのブラウザで動作する必要があります。

+0

これはサーバー側で100%です。 JavaScriptやjQueryとは関係ありません。 MIMEヘッダーを送信した後、バイナリをストリーミングする必要があります。 –

+0

参照:http://stackoverflow.com/questions/6028452/load-a-php-image-using-src –

+0

@Diodeus、なぜかJavascriptでlocation.searchを読んで、それをリモートのPHPページに渡すのはなぜですか?下記のユーザー「caleb」を参照してください。 – Volomike

答えて

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> 
+0

質問。 IMGタグの中でonloadイベントを使用し、Javascriptで "this"変数を使用するなど、これを短縮する方法はありますか?そして、それをこの短縮バージョンとのクロスプラットフォームで動作させる? – Volomike

+0

BTW、私のエジプトのプログラマーの同僚は素晴らしい提案をしました。 location.searchを渡さないでください。その代わりに、$ _SERVER ['HTTP_REFERER']を使用してpixel.phpの画像を取り上げてください。これは、Javascriptの必要性を完全に避け、電子メールやフォーラムのようなものにこの手法を組み込むことができます。 – Volomike

+1

はい、あなたはそれを行うことができますが、時には単なる数以上のものを追跡したい場合もあります。たとえば、ロード時間。 – caleb

関連する問題