2015-05-27 8 views
13

मैं एक एनालिटिक्स स्क्रिप्ट, जिन्हें लोग आगंतुक डेटा ट्रैक करने में अपने पेज में जोड़ने के लिए सक्षम हो जाएगा के विकास कर रहा हूँ। जिन मुद्दों पर मैं आया हूं उनमें से एक व्यक्ति व्यक्तिगत सत्रों को ट्रैक करने का एक तरीका तैयार कर रहा है जब वे किसी निजी पृष्ठ से किसी के पृष्ठ को देख रहे हैं (आईई गुप्त)।याद पीएचपी सत्र निजी ब्राउजिंग

यह वह स्क्रिप्ट है जिसका उपयोग मैं यह देखने के लिए कर रहा हूं कि कोई व्यक्ति 30 मिनट से अधिक समय तक सक्रिय है या नहीं, अगर उनके पास कोई नया सत्र बनाया जाएगा, तो नहीं, तो वे अपने पिछले सत्र को फिर से शुरू करेंगे ।

 session_start(); 
     $max_time = 1800; 
     $current = time(); 
     if (!isset ($_SESSION['Stationary'])){ 
      $_SESSION['Stationary'] = time(); 
      $session = $_SESSION['Stationary']; 
     } 
     if (!isset ($_SESSION['Inactive'])) { 
      $_SESSION['Inactive'] = time(); 
     } else { 
      $session_life = $current - $_SESSION['Inactive'] ; 
      if ($session_life > $max_time) { 
       session_destroy(); 
       session_start(); 
       $_SESSION['Inactive'] = time(); 
       $_SESSION['Stationary'] = time(); 
       $session = $_SESSION['Stationary']; 
      } else { 
       $_SESSION['Inactive'] = time(); 
       $session = $_SESSION['Stationary']; 
      } 
     } 

यह स्क्रिप्ट दोषरहित काम करता है जब कोई उपयोगकर्ता एक नियमित ब्राउज़र (आईई। क्रोम गुप्त) से मेरा पृष्ठ देखता है, लेकिन जब वे एक iPhone की तरह कुछ पर देख, निजी ब्राउजिंग में, हर बार वे एक नया पृष्ठ का उपयोग , एक नया सत्र प्रस्तुत किया जाता है - एक समस्या जो मेरे पास अन्यथा देखी गई नहीं है।

तो मेरा सवाल यह है कि, मुझे पता है कि एक निजी ब्राउज़र में पृष्ठों को अस्थायी कैशिंग के माध्यम से प्राप्त किया जाता है जिसे ब्राउजर बंद होने के बाद साफ़ किया जाता है, हालांकि यह क्यों है कि ब्राउजर बंद नहीं होने पर भी, लिंक पृष्ठ पर एक ही स्क्रिप्ट के साथ, किसी अन्य पृष्ठ पर लिंक होने पर भी उनके पिछले सत्र को नष्ट कर देता है?

वहाँ इस के लिए एक समाधान है?

संपादित करें: मैं नोट करना चाहिए कि इस स्क्रिप्ट हेडर application/json के साथ एक php फ़ाइल में रखा जा रहा है एक जावास्क्रिप्ट के साथ-साथ फ़ाइल के रूप में प्रयोग की जाने वाली।

+1

बीटीडब्ल्यू, आप 'सत्र.gc_maxlifetime' के माध्यम से अपने सत्र के जीवनकाल को कॉन्फ़िगर कर सकते हैं। –

+0

मेरा वेबहोस्ट दुर्भाग्य से php कॉन्फ़िगरेशन फ़ाइल को प्रबंधित करने की अनुमति नहीं देता है, @ Ja͢ck – Brad

+1

आप इसे 'ini_set() '(PHP_INI_ALL के कारण) के साथ सेट कर सकते हैं, इसलिए वहां कोई समस्या नहीं होनी चाहिए। –

उत्तर

9

हम सबसे पहले php session documentation

एक आगंतुक अपने वेब साइट तक पहुँचने में एक विशिष्ट आईडी, तथाकथित सत्र id असाइन किया गया है पर नज़र डालें तो। यह या तो उपयोगकर्ता पक्ष पर एक कुकी में संग्रहीत है या यूआरएल में प्रचारित है।

दूसरे, क्या mozilla support निजी ब्राउज़िंग के बारे में (काफी के लिए एक ही अन्य ब्राउज़रों) का कहना है

निजी ब्राउजिंग क्या बचाने नहीं करता है? कुकीज़!

तो जवाब अब स्पष्ट है: ब्राउज़र कुकीज़ है कि आदेश संबंधित सत्र को पुनः प्राप्त करने में php द्वारा किया जाता है की किसी भी बचत नहीं है।

क्या इसका कोई कामकाज है?

हाँ$_SERVER वैरिएबल डेटा रखता है जिसे अद्वितीय के रूप में माना जा सकता है। उदाहरण के लिए, (, डेटाबेस शायद) REMOTE_ADDRHTTP_USER_AGENT से पार्स डेटा और यह CRUD के साथ संयुक्त उपयोग करके देखें।

कुछ अतिरिक्त जानकारी

+0

निजी ब्राउजिंग करते समय मैं वेबसाइट पर लॉग इन करने में सक्षम हूं, जबकि टैब को बंद किए बिना पृष्ठों पर नेविगेट करते समय, यह काम नहीं करता है इस तरह की एक स्क्रिप्ट को कार्यान्वित करना, शायद यह हो सकता है क्योंकि मैं इस स्क्रिप्ट का उपयोग सभी पृष्ठों में 'शामिल' के रूप में नहीं कर रहा हूं ?; Google क्रोम डेस्कटॉप पर एक निजी ब्राउज़र पर निजी ब्राउजिंग करते समय भी यह स्क्रिप्ट पूरी तरह ठीक काम करती है, हालांकि इसे आईफोन पर सफारी निजी ब्राउज़िंग के लिए नहीं कहा जा सकता है। – Brad

+0

यहां संबंधित प्रश्न देखें: http://superuser.com/questions/601819/why-chrome-incognito-keeps-cookies-after-closing-browser। ऐसा लगता है कि पुरानी कुकीज़ को इस प्रकार रखा जाता है जिससे आप एक ही यूएक्स प्राप्त कर सकते हैं। सभी पृष्ठों में शामिल करके आपका क्या मतलब है? यदि अनुरोध के लिए कोई फ्रंट कंट्रोलर (केंद्रीय बिंदु, प्रॉक्सी जैसा) नहीं है - हाँ, आपको इसे करना चाहिए, अन्यथा, इसे वहां रखें। – sitilge

+0

जैसा कि आपके दूसरे लिंक में कहा गया है (वह जो "क्लाइंट आईपी पता प्राप्त करें" से लिंक करता है), $ _SERVER हमेशा आईपी के बारे में सही जानकारी नहीं है। इसलिए, यदि विज़िटर प्रॉक्सी के पीछे है और यह प्रॉक्सी HTTP_X_FORWARDED_FOR नहीं भेजती है तो आपके पास कभी भी कोई सही जानकारी नहीं होगी। निजी ब्राउजिंग जो उसने कहा है, यह निजी है, उपयोगकर्ता के बारे में कुछ भी बताने की कोशिश नहीं कर रहा है। यह शायद सही नहीं है, लेकिन आप चारों ओर काम करने के लिए प्रॉक्सी पर भरोसा नहीं कर सकते हैं। – Armage

1

दुर्भाग्य से, मैं टिप्पणी नहीं कर सकता, तो मैं बस यहाँ इस लिंक पोस्ट कर रहा हूँ:

https://panopticlick.eff.org

पर यह साइट आप सभी जानकारी देख सकते हैं आयन जो आपके ब्राउज़र द्वारा लीक किया गया है। वे कुछ डेटा के लिए जावास्क्रिप्ट का उपयोग कर रहे हैं, लेकिन यह कोई समस्या नहीं होनी चाहिए क्योंकि अधिकांश उपयोगकर्ताओं के पास जावास्क्रिप्ट सक्षम है।

2

यदि आप ईटैग का उपयोग करते हैं तो यह हासिल करना संभव है। वहाँ एक लेख यहाँ जो बताती है कि यह कैसे काम करता है:

http://lucb1e.com/rp/cookielesscookies/

ETags सत्र गुप्त ब्राउज़र के दौरान जारी रहता हैं - लेकिन आप लगातार सत्र अद्यतन करना चाहिए के रूप में यह खो दिया जा सकता है जब आप विंडो बंद करें और इसे फिर से खोलने।

मुझे यह जोड़ना चाहिए कि इसके साथ जातीय नैतिकताएं हैं (लेकिन मेरे पास कोई स्रोत नहीं है)।

संबंधित मुद्दे