2012-10-26 22 views
29

विकसित करना मैं एक पिक्सेल बनाने की कोशिश कर रहा हूं जो उस यूआरएल पर चलने वाले मौजूदा यूआरएल को ट्रैक करेगा। मैं या तो जेएस (पसंदीदा) या 1x1 छवि पिक्सेल का उपयोग कर सकते हैं। जेएस के साथ मैं मान रहा हूं कि मुझे एक जेपी स्क्रिप्ट को एक एजीएक्स अनुरोध चलाने की ज़रूरत है जो मुझे चाहिए और एक छवि पिक्सेल के साथ मुझे वर्तमान में यूआरएल प्राप्त करने में समस्याएं हैं।ट्रैकिंग पिक्सेल

मैंने जेएस के साथ वर्तमान यूआरएल एन्कोडिंग के बारे में भी सोचा और गतिशील रूप से एन्कोडेड वर्तमान यूआरएल के साथ छवि पिक्सेल को एक PHP स्ट्रिप के लिए एक क्वेरी स्ट्रिंग के रूप में रखा, लेकिन यह कि मैं बहुत लंबा हो सकता हूं।

अगर मुझे AJAX मार्ग जाना है, तो मैं कौन सी AJAX लाइब्रेरी का उपयोग कर सकता हूं? JQuery इस उद्देश्य के लिए बहुत फूला हुआ है।

कोई अन्य विचार?

+2

आपको AJAX की आवश्यकता नहीं है क्योंकि PHP में जेनरेट की गई पिक्सेल छवि को केवल आपके HTML में एक छवि के रूप में शामिल किया जाएगा और अनुरोध किया जाएगा। – nickhar

+2

बस सर्वर लॉग, या Google Analytics का उपयोग करें। –

+0

@Dagon यह एक कस्टम निर्मित ऐप के लिए है जिसे मुझे जानकारी के कई टुकड़े कैप्चर करने की आवश्यकता है। –

उत्तर

47

आप एक स्क्रिप्ट है कि बनाता है और का उपयोग कर उद्देश्यों पर नज़र रखने GD library (जो अक्सर आधुनिक संस्करण में पीएचपी साथ वितरित किया जाता है) के लिए PHP का उपयोग एक .gif, .jpeg या .png छवि रिटर्न लिख सकते हैं। यदि आपके पास जीडी तक पहुंच नहीं है, तो आप हमेशा जीडी सक्षम के साथ 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 चर कि छवि टैग के भीतर इसे करने के लिए पारित कर रहे हैं की व्याख्या, simplistically:

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 में व्यापक रूप से इस्तेमाल तरीका है, लेकिन एक ही विधि अन्य स्क्रीप्टिंग/प्रोग्रामिंग भाषाओं और लाइब्रेरी का उपयोग कर लागू होता है - और के लिए अन्य उद्देश्यों भी।

इसके अलावा और जी.डी. पर उपयोगी जानकारी:

+0

लेकिन मैं इस यूआरएल का उपयोग कैसे करता हूं कि इस प्रकार के कार्यान्वयन के साथ पिक्सेल आग लगती है? केवल एक ही तरीका है जिसे मैं सोच सकता हूं कि document.URL को पिक्सेल में क्वेरी स्ट्रिंग पैरामीटर के रूप में जोड़ना है, लेकिन मेरा डर यह है कि यह पिक्सेल यूआरएल बहुत लंबा बना देगा। नहीं? –

+2

महंगा है ??? आपको छवि को हर समय – Baba

+0

उत्पन्न करना है, मैं इसे जेएस के जरिए कॉल नहीं कर सकता, आपको कई समस्याएं पैदा होंगी, जब तक कि आपकी यूआरएल-स्ट्रिंग लंबाई में हास्यास्पद न हो !? आप बिना किसी समस्या के '$ _GET' कॉल कर सकते हैं, लेकिन यह एक व्यक्तिपरक मुद्दा है। यह निर्भर करता है कि आप क्या कर रहे हैं। @ बाबा जब आपको मक्खी पर छवि उत्पन्न करनी है, तो मैंने कभी भी ईमेल में शामिल प्रति दिन @ circa 1m (मिलियन) अनुरोधों के साथ कोई समस्या नहीं देखी है !! यह प्रभावी रूप से, ईमेल ट्रैकिंग सिस्टम कैसे काम करता है। – nickhar

42

यहाँ पर, एक ट्रैकिंग पिक्सेल का एक और पीएचपी कार्यान्वयन है Open Web Analytics परियोजना है, जो मूल रूप से एक होने के लिए प्रयास करता है से Google Analytics का PHP क्लोन।

यह एक 1x1 पारदर्शी GIF छवि देता है (एक PHP छवि पुस्तकालय का उपयोग कर! बिना), नो कैश हेडर के साथ (सटीक ट्रैकिंग के लिए महत्वपूर्ण है), और ब्लॉक किए बिना उत्पादन flushes ताकि आप Analytics संसाधन जारी रख सकते हैं 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 
+4

+1 जीडी के बिना ग्रेट (और परिष्कृत) विकल्प। – nickhar

+0

मेरे लिए यह काम नहीं करता है ... आउटपुट एक टूटी हुई छवि :( – nights

+4

गूंज base64_decode ('R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEA') भी sprintf के बजाय काम करता है, छोटे सा। – MSpreij

8

आउटपुट 1px 1px एक्स इस तरह से:

header('Content-type: image/png'); 
echo gzinflate(base64_decode('6wzwc+flkuJiYGDg9fRwCQLSjCDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOSxMDB+E7cIBcl7uvq5rHNKaAIA')); 
+0

किसी को भी पुष्टि कर सकते हैं यह काम करता है? –

+1

@JimThio इससे मेरा काम बनता है –

0

यहाँ एक अत्यंत सरलीकृत ट्रैकिंग पिक्सेल PHP में लिखा है।

How a Tracking Pixel Works

ट्रैकिंग पिक्सेल सबसे आदिम बीकन की तरह संभव है, और यह वेब पृष्ठों की एक सच्चाई का दुरुपयोग करके संचालित: छवियों पेज से एक अलग अनुरोध कर रहे हैं।

यदि आप पहले से ही किसी अन्य व्यक्ति के पृष्ठ पर अपना जेएस कोड चलाने में सक्षम हैं, तो आपको डेटा को अपने सर्वर पर वापस पोस्ट करना चाहिए। एक छोटे पिक्सेल को प्रदर्शित करने की आवश्यकता नहीं है जो केवल उसी प्रकार का डेटा प्राप्त करेगी।