2010-01-08 9 views
7

मेरे पास एक ऐसी साइट है जिसे उपयोगकर्ता को साइट पर लॉगिन करने से पहले जावास्क्रिप्ट और कुकीज़ सक्षम करने की आवश्यकता होती है। (जेएस भाग किया जाता है और पूरी तरह से काम करता है।) फिलहाल, हम एक कुकी सेट कर रहे हैं और फिर उपयोगकर्ता को दूसरे पेज (PHP में) पर रीडायरेक्ट कर रहे हैं। इसने ठीक काम किया है, लेकिन अब हमारे पास ऐसे लोगों का समूह है जिन्होंने उस पृष्ठ को बुकमार्क किया है जिसे हम रीडायरेक्ट कर रहे हैं, जिसमें निश्चित रूप से कुकी सेट नहीं है और इसलिए उन्हें लॉगिन करने की अनुमति नहीं है।jQuery कुकी प्लगइन का उपयोग यह जांचने का एक वैध तरीका है कि कुकीज़ सक्षम हैं या नहीं?

तो मैं कुकी की जांच करने के लिए एक और समाधान खोजने की कोशिश कर रहा हूं और मैं jQuery Cookie plugin का उपयोग करने के बारे में सोच रहा हूं। मैं सोच रहा हूं कि यह सभी ब्राउज़रों में संगत है (जब जेएस निश्चित रूप से सक्षम है)?

+2

मैं सभी ब्राउज़रों में यह परीक्षण नहीं किया है, लेकिन jQuery और jQuery प्लगइन्स होने के पूरे मुद्दे पार ब्राउज़र संगत होना है। इसके अलावा, "सभी ब्राउज़र्स" थोड़ा चौड़ा है; मैं आईई 6 और ओपेरा को फ्रिंज पर मानता हूं। दुर्भाग्य से इस क्लाइंट के लिए –

+0

मुझे आईई 6 होना चाहिए। ओपेरा मैं चाहूंगा, लेकिन मुझे लगता है कि मैं बिना रह सकता हूं। –

उत्तर

10

your answer के लिए Thxs Shawn, लेकिन दुर्भाग्य से क्योंकि ब्राउज़र हमेशा रेफरर नहीं भेजते हैं, यह हर बार इसका उपयोग करने में सक्षम होने के लिए पर्याप्त विश्वसनीय नहीं है। क्योंकि अगर यह सेट नहीं है, तो आप एक लूप में खत्म हो जाते हैं।

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

अंत में, मैंने आईई 6, 7, और 8, सफारी 4, Google क्रोम 4, फ़ायरफ़ॉक्स 3.5, ओपेरा 10.2 और कुछ अलग कॉन्फ़िगरेशन पर jQuery कुक प्लगइन की कोशिश की और यह उन सभी में काम किया। यहां मैं जिस कोड का उपयोग कर रहा हूं:

$.cookie('test_cookie', 'cookie_value', { path: '/' }); 
if ($.cookie('test_cookie') == 'cookie_value') { 
    // cookie worked, set/enable appropriate things 
} 

यह सही नहीं है, लेकिन मुझे लगता है कि यह 95% मामलों में काम करेगा। अन्यथा, यह असफल हो जाएगा और उन्हें कुछ भी करने की अनुमति नहीं देगा।

+2

हाँ मुझे लगता है कि यह हर ब्राउज़र के लिए काम करेगा, यहां एक और कोड नमूना है http://blog.nickburwell.com/2009/05/check-if-cookies-are-enabled-on-client.html –

1

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

+0

मैंने यह कोशिश की है, लेकिन रेफरर $ _SERVER सरणी में सेट नहीं है। कोई विचार? मैंने 302 और 307 दोनों की कोशिश की है। –

+0

@ $ HTTP_REFERER या getenv ("HTTP_REFERER") आज़माएं। –

+1

मुझे वास्तव में वह हेडर मिला ("स्थान: ..."); रेफरर (कम से कम सफारी में) सेटिंग को समाप्त नहीं करता है, इसलिए मैंने इसके बजाय <मेटा रीफ्रेश /> का उपयोग किया जो पूरी तरह से काम करता था। –

1

मैं इस 1 लाइनर समारोह की तरह:

function cookiesEnabled() { 
    return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid'; 
} 
संबंधित मुद्दे

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