2009-07-23 11 views
6

ピクセルトラッキングの基本を理解しています。トラッキングドメインの画像を参照するピクセルを他のウェブサイトに挿入できます。PHPでドメイン間でピクセルトラッキングを使用する方法

ただし、トラッキングドメインで実際のピクセル数をどのように増やす必要がありますか?ピクセルイメージが表示されるたびに私に知らせるログがありますか? 、その後のgetImageページを持っている

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

画像をアップ機能し、渡されたIDに基づいて、増分:私のような何かを行うことができますか?またはこれを達成するためのよりよい方法がありますか?

ありがとうございます。

答えて

13

あなただけの出力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); 
+0

これは、ファイルを最初にロードすることなく、画像をバッファに直接出力します。これはより高速です。 – Andy

3

はい、あなたは正しい考えがあります。

各サイトまたはページに一意のIDを付け、そのIDをイメージsrcに渡します。したがって、あなたの例ではIDは5123です。

getImage.phpスクリプトでは、このIDを使用してデータベースをインクリメント(またはデータを記録)し、必要な画像を返します。あなたがヒット数を表示するために返すイメージを表示させたい場合は、GD extentionでオンザフライでイメージを作成することができます。詳細については、PHPのマニュアルを参照してください。

3

これは私のトラックコードです:

<?php 

$id = $_GET['site_id']; 

// do track 

$imageFile = 'images/pixel.jpg'; 
$im = imagecreatefromjpeg($imageFile); 
header('Content-type: image/jpeg'); 
imagejpeg($im); 


?> 
+5

リソースの使用量を減らしたい場合は、GDを使用してイメージファイルを読み取ってから吐き出さないでください。コンテンツヘッダーを送信してから、 'readfile()'を使用してください。 – gnud

+0

@gnudあなたは正しいです...今は、301 HTTPヘッダーで画像にリダイレクトするほうが賢明です... –

1

接線の答えの種類が、コメントには長すぎる:

あなたは、必ずしもあなたがそれを実装する方法に応じて、何かをインクリメントする必要はありません。超高速化を目指しているのであれば、サーバーの要求ログに頼るだけで十分です。 "getImage.php?q = 5123"のリクエストはすべてそこにあります。クエリ文字列から関連する情報を抜き出すだけです。

ログは、後で(cronなどを介して)追跡可能なバグの解決に影響を与えない帯域外のクエリ可能なデータベースに解析できます。ワンショットですべてを行うのはもう少しエレガントですが、多くの要求を処理している場合は、ログはすでに存在しています。

ボーナス:サーバログにも参照先&タイムスタンプがあるので、誰かがgetImage.phpを直接叩いているかどうかを知ることができます。

関連する問題