2008-08-01 15 views
65

कैसे ट्रैक करूं मेरे पास एक ऐसी वेबसाइट है जो फ़्लैश प्लेयर में एमपी 3 बजाती है। यदि कोई उपयोगकर्ता 'प्ले' पर क्लिक करता है तो फ़्लैश प्लेयर स्वचालित रूप से एक एमपी 3 डाउनलोड करता है और इसे खेलना शुरू कर देता है।मैं फ़ाइल डाउनलोड

क्या कोई विशेष गीत क्लिप (या कोई बाइनरी फ़ाइल) डाउनलोड करने के लिए ट्रैक करने का कोई आसान तरीका है?


खेलने लिंक वास्तविक एमपी 3 फाइल करने के लिए या कुछ जावास्क्रिप्ट कोड है कि एक खिलाड़ी पॉप-अप होने के लिए एक लिंक है?

यदि उत्तरार्द्ध, तो पर हिट की संख्या को ट्रैक करने के लिए आप आसानी से स्वयं लॉगिंग कोड जोड़ सकते हैं।

यदि पूर्व में, आपको की आवश्यकता होगी जो वेब सर्वर लॉग को ट्रैक कर सकता है और वह भेद बना सकता है। मेरी होस्टिंग योजना वेबलाइज़र के साथ आता है, जो यह अच्छी तरह से करता है।

यह जावास्क्रिप्ट कोड है, जो इसका उत्तर देता है।

हालांकि, यह जानना अच्छा होगा कि अन्य विधि (मेजबान स्विच किए बिना) का उपयोग करके डाउनलोड को ट्रैक करना है।

उत्तर

39

मजेदार बात यह है कि मैंने 2 दिन पहले अपने सभी संगीत के लिए एक PHP मीडिया गैलरी लिखा था। मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। मैं प्लेयर के लिए http://musicplayer.sourceforge.net/ का उपयोग कर रहा हूं। और प्लेलिस्ट php के माध्यम से बनाया गया है। सभी संगीत अनुरोध वहां एक स्क्रिप्ट फ़ाइल xfer.php कहा जाता है = जो भी

$filename = base64_url_decode($_REQUEST['file']); 
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header('Content-disposition: attachment; filename='.basename($filename)); 
header("Content-Transfer-Encoding: binary"); 
header('Content-Length: '. filesize($filename)); 

// Put either file counting code here. either a db or static files 

// 

readfile($filename); //and spit the user the file 


function base64_url_decode($input) { 
    return base64_decode(strtr($input, '-_,', '+/=')); 
} 

और जब आप फोन फ़ाइलों की तरह कुछ का उपयोग करें:?

function base64_url_encode($input) { 
    return strtr(base64_encode($input), '+/=', '-_,'); 
} 

http://us.php.net/manual/en/function.base64-encode.php

आप उपयोग कर रहे हैं कुछ जावास्क्रिप्ट या एक फ्लैश प्लेयर (उदाहरण के लिए जेडब्ल्यू प्लेयर) जिसके लिए वास्तविक लिंक एक एमपी 3 फ़ाइल या जो कुछ भी हो, उसे "& टाइप =। एमपी 3" टेक्स्ट जोड़ना आवश्यक है, इसलिए अंतिम लिंक कुछ ऐसा हो जाता है: "www.example.com/ xfer.php? फ़ाइल = 34,842 ffjfjxfh & टाइप = .mp3 "। इस तरह ऐसा लगता है कि यह फ़ाइल लिंक को प्रभावित किए बिना एमपी 3 एक्सटेंशन के साथ समाप्त होता है।

+17

इस स्क्रिप्ट में एक निर्देशिका ट्रावर्सल भेद्यता है! एक हमलावर xfer.php में पास हो सकता है? फ़ाइल = ../../../passwd या जो कुछ भी वे चाहते हैं! सावधान रहे!!! –

+4

यदि फाइलें बहुत बड़ी हैं और आपका ट्रैफ़िक ऊंचा है तो यह सर्वर की मेमोरी सीमा को उड़ा देगा .. कुछ मैंने स्वयं अनुभव किया है। – tmsimont

+0

"निर्देशिका ट्रैवर्सल भेद्यता" को कैसे ठीक करें? – anarchOi

6

क्या यह गेम वास्तविक एमपी 3 फ़ाइल या किसी जावास्क्रिप्ट कोड के लिंक को लिंक करता है जो किसी खिलाड़ी को पॉप करता है?

यदि बाद वाला, तो आप इसमें हिट की संख्या को ट्रैक करने के लिए आसानी से अपना स्वयं का लॉगिंग कोड जोड़ सकते हैं।

यदि पूर्व में, आपको ऐसा कुछ चाहिए जो वेब सर्वर लॉग को ट्रैक कर सके और उस भेद को बना सके। मेरी होस्टिंग योजना वेबलाइज़र के साथ आता है, जो यह अच्छी तरह से करता है।

10

आप एक अपाचे भी स्थापित कर सकते हैं। Htaccess निर्देश जो * .mp3 अनुरोधों को querystring dubayou में परिवर्तित कर रहा है। यह प्रत्यक्ष अनुरोध रखने का एक शानदार तरीका हो सकता है और फिर भी प्रतिक्रिया में लॉग फ़ंक्शन को स्लिपस्ट्रीम करने में सक्षम हो सकता है।

2

क्या आपके संगीत पुस्तकालय के लिए कोई डेटाबेस है?यदि कोई सर्वर कोड है जो एमपी 3 डाउनलोड करते समय चलता है तो आप प्ले गिनती बढ़ाने के लिए अतिरिक्त कोड जोड़ सकते हैं। आप प्लेस गिनती बढ़ाने के लिए जावास्क्रिप्ट को दूसरा अनुरोध भी दे सकते हैं, लेकिन इससे लोगों/रोबोटों की झूठी बढ़ती संख्या बढ़ सकती है।

मैं एक इंटरनेट रेडियो साइट के लिए काम करता था और हम अलग-अलग तालिकाओं का इस्तेमाल किया समय हर गीत खेला गया था ट्रैक करने के लिए। हमारी धाराओं को एक पर्ल स्क्रिप्ट द्वारा संचालित आइसकास्ट द्वारा संचालित किया गया था, इसलिए जब भी कोई नया ट्रैक खेलना शुरू हो गया, तो हमने डेटाबेस अनुरोध को ट्रिगर किया। फिर प्ले गिनती की गणना करने के लिए हम गिनने के लिए एक क्वेरी चलाएंगे कि प्ले लॉग में कितनी बार एक गीत की आईडी थी।

11

तो अपने गीत/बाइनरी फ़ाइल अपाचे द्वारा परोसा गया था, आप आसानी से access_log डाउनलोड की संख्या पता लगाने के लिए grep कर सकते हैं। एक साधारण पोस्ट-लॉग्रोटेट स्क्रिप्ट लॉग को grep कर सकता है और एक डीबी में अपने गिनती आंकड़े बनाए रख सकता है। आपके लाइव अनुरोध कोड पथ में नहीं होने के कारण इसका प्रदर्शन लाभ है। आंकड़े ऑफ़लाइन जैसी गैर-महत्वपूर्ण चीजें करना आपकी वेबसाइट को बड़ी संख्या में उपयोगकर्ताओं को स्केल करना एक अच्छा विचार है।

20

उपयोग बैश:

grep mp3 /var/log/httpd/access_log | wc 
2

समस्या मैं AWStats जैसी चीजों के साथ किया था/वेब सर्वर लॉग के माध्यम से पढ़ने बड़े डाउनलोड अक्सर लॉग भीतर डेटा मात्रा में विभाजित किया जा सकता है। यह डाउनलोड की सटीक संख्या को काफी कठिन बनाता है।

मैं गूगल विश्लेषिकी Event Tracking सुझाव देंगे, के रूप में यह एक डाउनलोड लिंक पर एक बार प्रति क्लिक दर्ज करेगा।