2010-08-05 21 views
5

मैंने यहां पर कई jQuery कुकी प्रश्न पढ़े हैं और पता है कि एक jQuery कुकी प्लगइन (jQuery cookie) है। ज्यादा जांच किए बिना, प्रश्न: क्या कुकी की समाप्ति तिथि निर्धारित करने का कोई तरीका है?jQuery कुकी समाप्ति मान

jquery.cookie डॉक से:

/** 
* Get the value of a cookie with the given name. 
* 
* @example $.cookie('the_cookie'); 
* @desc Get the value of a cookie. 
* 
* @param String name The name of the cookie. 
* @return The value of the cookie. 
* @type String 
* 
* @name $.cookie 
* @cat Plugins/Cookie 
* @author Klaus Hartl/[email protected] 
*/ 

प्रतीत नहीं होता है कि इस प्लगइन यह कर सकते हैं?

कारण यह है कि मैं ऐसा करना चाहता हूं कि मेरी कुकी 5 मिनट की निष्क्रियता के बाद समाप्त हो जाती है और आईडी उपयोगकर्ता को सूचित करने की तरह है कि उनका सत्र जावास्क्रिप्ट से समाप्त होने वाला है।

उत्तर

3

जब तक कुछ बदल गया है, तो आप से यह मान नहीं मिल सकता है एक कुकी, आप इसे सेट कर सकते हैं, लेकिन यह है, जब यह समाप्त हो जाता है तो यह अब कुकी संग्रह में दिखाई नहीं देगा .... लेकिन आप नहीं देख सकते कि यह 5 मिनट में समाप्त हो गया है।

आपका सत्र समाप्ति की तर्ज पर कुछ करने के लिए सबसे अच्छा शर्त है, अगर यह 5 मिनट है सही देरी से setTimeout() उपयोग करने के लिए, उदाहरण के लिए आप 30 सेकंड है, इस तरह 4 मिनट पर इसकी सूचना देना चाहेंगे:

setTimeout(function() { 
    alert("Your session will expire in 30 seconds!"); 
}, 270000); //4.5 * 60 * 1000 
+0

के लिए समाप्ति तिथि की जांच करने की अनुमति देती है, धन्यवाद, धन्यवाद। चूंकि मैं प्रत्येक आगामी पृष्ठ अनुरोध पर PHP के माध्यम से कुकी अपडेट कर रहा हूं, इसलिए आप अनुशंसा कर रहे हैं कि मैं केवल प्रत्येक पृष्ठ अनुरोध पर उपयोगकर्ता को संदेश बंद करने के लिए cookie.expiration - (कुछ समय) का टाइमआउट सेट करता हूं? मुझे लगता है कि मैं समझ में नहीं आता कि आप एक समाप्ति क्यों निर्धारित कर सकते हैं लेकिन इसे वापस नहीं प्राप्त कर सकते हैं। – Chris

+0

@ क्रिस - मुझे यकीन है कि उस पर तर्क नहीं है, बस यह जान लें कि दस्तावेज़/कुकी एपीआई में इसे पाने के तरीके नहीं हैं, अगर आप 'document.cookie' देखते हैं तो आप देखेंगे कि यह नहीं है वहाँ :) और हाँ प्रत्येक पृष्ठ पर टाइमआउट सहित, या बस उस टाइमआउट को सीधे एक जावास्क्रिप्ट फ़ाइल में शामिल करें ... मैं व्यक्तिगत रूप से अलर्ट के अलावा एक अधिसूचना बार या कुछ करता हूं, लेकिन विचार वही है :) –

5
$.cookie("example", "foo", { expires: 7 }); 

7 दिनों

कोई Javascript API आप एक कुकी के लिए समाप्ति की तारीख की जाँच करने की अनुमति देता है में समाप्त हो जाएगा

+4

मुझे समाप्ति मूल्य चाहिए। मैं नहीं पूछ रहा हूं कि समाप्ति मूल्य को कैसे सेट करें। – Chris

+0

कोई जावास्क्रिप्ट एपीआई नहीं है जो आपको कुकी – maestr0

3

चूंकि यह जावास्क्रिप्ट एपीआई से सुलभ नहीं है, इसलिए इसे मेटाडेटा के साथ समानांतर में सामग्री में संग्रहीत करना एकमात्र तरीका है।

var textContent = "xxxx" 
    var expireDays = 10; 
    var now = new Date().getTime(); 
    var expireDate = now + (1000*60*60*24*expireDays); 
    $.cookie("myCookie", '{"data": "'+ textContent +'", "expires": '+ expireDate +'}', { expires: expireDays }); 

तो यह वापस पढ़ें (जाहिर है, इस मामले में सुरक्षा उपायों को जोड़ने कुकी पहले ही समाप्त हो):

var now = new Date().getTime(); 
var cookie = $.parseJSON($.cookie("myCookie")); 
var timeleft = cookie.expires - now; 
var cookieData = cookie.data; 

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

+0

var कुकी = $ .parseJSON ($। कुकी ("myCookie")); काम नहीं करता। @ लिंक http://stackoverflow.com/questions/1532193/reading-cookie-expiration-date – user470370

+0

@ user470370: आपको प्रदान करने में Jquery और [कुकी प्लगइन] शामिल हैं (http://www.electrictoolbox.com/jquery -कुकी /) और सही जेसन का उपयोग करें (मैंने गलती की है, जेसन स्ट्रिंग की चाबियों के चारों ओर उद्धरण भूल गए हैं) यह ठीक काम करता है। http://jsfiddle.net/3ddLG/2/ –

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