2009-07-23 34 views
6

我瞭解像素跟蹤的基礎知識,我可以在其他網站上插入一個將跟蹤域上的圖像引用到其他像素的像素。如何在PHP中的域中使用像素跟蹤

但是,如何增加跟蹤域上的實際像素數?每當像素圖像被投放時,是否有某種日誌會告訴我?我能夠做一些事情,如:

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

然後纔有的getImage頁面,服務立形象,增加基於中傳遞的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); 
3

是的,你有正確的想法。

給每個網站或頁面一個唯一的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 2009-10-05 11:02:30

+0

@gnud你是對的...現在使用301 HTTP標頭重定向到圖像會更明智... – 2012-10-16 15:00:04

1

切線答案的那種,而是太長評論:

你不一定需要增加什麼,取決於你如何實現它。如果你的目標是使其超速,只依靠服務器請求日誌就足夠了。每個「getImage.php?q = 5123」的請求都已經存在,你只需要從查詢字符串中提取相關信息。

您可以稍後(通過cron等)將日誌解析到一個漂亮的,可查詢的數據庫中,在不會影響提供跟蹤錯誤的帶外。一舉全力做到了一點,但如果你處理了很多請求,日誌已經存在了。

獎勵:服務器日誌也有推薦人&時間戳,所以你可以更容易地看到是否有人直接敲擊getImage.php或從其他地方連接到遊戲的數字,如果這些數字是值得的。