我正在嘗試構建一個像素,用於跟蹤用戶訪問時的當前URL。我可以使用JS(首選)或1x1圖像像素。對於JS,我假設我需要運行一個AJAX請求到一個PHP腳本來捕獲我需要的信息,並且對於一個圖像像素,我在獲取當前URL時遇到問題。開發跟蹤像素
我也考慮過使用JS編碼當前URL的URL編碼,並將編碼的當前URL作爲查詢字符串動態放置在PHP腳本中,但我可能會變得很長。
如果我要去的AJAX路線,我可以使用哪個AJAX庫? JQuery爲此太臃腫。
還有其他想法嗎?
我正在嘗試構建一個像素,用於跟蹤用戶訪問時的當前URL。我可以使用JS(首選)或1x1圖像像素。對於JS,我假設我需要運行一個AJAX請求到一個PHP腳本來捕獲我需要的信息,並且對於一個圖像像素,我在獲取當前URL時遇到問題。開發跟蹤像素
我也考慮過使用JS編碼當前URL的URL編碼,並將編碼的當前URL作爲查詢字符串動態放置在PHP腳本中,但我可能會變得很長。
如果我要去的AJAX路線,我可以使用哪個AJAX庫? JQuery爲此太臃腫。
還有其他想法嗎?
您可以編寫創建和使用PHP使用跟蹤的目的GD library(這是在現代版本的PHP往往分佈)返回.gif
,.jpeg
或.png
映像的腳本。如果您無法訪問GD,則始終可以使用GD重新編譯PHP。
實施例:
pixel.php
(評論出於解釋的目的):
<?php
// Create an image, 1x1 pixel in size
$im=imagecreate(1,1);
// Set the background colour
$white=imagecolorallocate($im,255,255,255);
// Allocate the background colour
imagesetpixel($im,1,1,$white);
// Set the image type
header("content-type:image/jpg");
// Create a JPEG file from the image
imagejpeg($im);
// Free memory associated with the image
imagedestroy($im);
?>
在一個簡單的例子,則可以使用以下示例的URL通過電子郵件或其他調用此跟蹤頁:
<img src="http://example.com/pixel.php?s=value1&b=value2&c=value3">
個使用變量:
在您pixel.php
那麼你可以分析和解釋傳遞給它的圖像標籤內的任何$_GET
變量,簡單化:
if (isset($_GET['a'])) {
// (Do|log) act on a
}
if (isset($_GET['b'])) {
// (Do|log) act on b
}
if (isset($_GET['c'])) {
// (Do|log) act on c
}
應用和重複,因爲你需要,但你可以是相當複雜的,你可以做什麼,特別是你可以通過在$_GET
字符串上設置變量來訪問相當多的關於用戶的信息。
更適用的例子可能是:
<img src="http://example.com/pixel.php?userid=98798&campaign=302&last=8">
跟蹤不僅僅是$ _ GET變量的更多:
您還可以拿起使用PHP,例如更多的信息,:
// Server variables
$ip = $_SERVER['REMOTE_ADDR'];
$referer = $_SERVER['HTTP_REFERER'];
$useragent = $_SERVER['HTTP_USER_AGENT'];
$browser = get_browser(null, true);
etc...
然後也許插入到費盡表中您的數據庫:
$sql = "INSERT INTO campaign_tracking
('when','campaign','last','ip','useragent')
VALUES
(NOW(),'$campaign','$last','$ip','$useragent')";
這是跟蹤電子郵件營銷活動,特別是在PHP中廣泛使用的(所)基本方法,但使用其他腳本/編程語言和庫同樣的方法適用 - 和其他目的。
而且和GD有用信息:
這裏是另一個PHP實施跟蹤像素,從Open Web Analytics項目,它試圖基本上是Google Analytics的PHP克隆。
它返回一個1x1 透明 GIF圖像(不使用PHP的圖片庫!),具有無緩存頭(用於精確跟蹤重要),並刷新輸出,因此您可以繼續處理分析,而不會阻塞HTTP響應(性能)。這似乎是一個相當先進的實現,值得嘗試。
<?php
ignore_user_abort(true);
// turn off gzip compression
if (function_exists('apache_setenv')) {
apache_setenv('no-gzip', 1);
}
ini_set('zlib.output_compression', 0);
// turn on output buffering if necessary
if (ob_get_level() == 0) {
ob_start();
}
// removing any content encoding like gzip etc.
header('Content-encoding: none', true);
//check to ses if request is a POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// the GIF should not be POSTed to, so do nothing...
echo ' ';
} else {
// return 1x1 pixel transparent gif
header("Content-type: image/gif");
// needed to avoid cache time on browser side
header("Content-Length: 42");
header("Cache-Control: private, no-cache, no-cache=Set-Cookie, proxy-revalidate");
header("Expires: Wed, 11 Jan 2000 12:59:00 GMT");
header("Last-Modified: Wed, 11 Jan 2006 12:59:00 GMT");
header("Pragma: no-cache");
echo sprintf('%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%',71,73,70,56,57,97,1,0,1,0,128,255,0,192,192,192,0,0,0,33,249,4,1,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59);
}
// flush all output buffers. No reason to make the user wait for OWA.
ob_flush();
flush();
ob_end_flush();
// DO ANALYTICS TRACKING HERE
輸出x 1像素的這種方式:
header('Content-type: image/png');
echo gzinflate(base64_decode('6wzwc+flkuJiYGDg9fRwCQLSjCDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOSxMDB+E7cIBcl7uvq5rHNKaAIA'));
任何人能證實它的工作原理? –
@JimThio這個對我有用 –
下面是用PHP編寫的一個非常簡單的跟蹤像素。
跟蹤像素像最原始的信標可能的,並且它通過利用網頁的事實操作:圖像是從頁面的單獨請求。
如果您已經能夠在其他人的頁面上運行您的JS代碼,您應該將數據發回給您的服務器。不需要顯示只能獲得相同類型數據的微小像素。
您完全不需要ajax,因爲在PHP中生成的像素圖像只會包含在您的HTML中並作爲圖像請求。 – nickhar
只需使用服務器日誌或谷歌分析。 – 2012-10-26 01:41:25
@Dagon這是一個自定義的應用程序,我需要捕獲幾塊信息。 –