2012-04-19 8 views
8

मुझे कुकी सेट करने की आवश्यकता है जो PHP setcookie फ़ंक्शन का उपयोग करके 1 घंटे के बाद समाप्त हो जाती है। मेरे सर्वर पर टाइमज़ोन जीएमटी पर सेट है। मुझे अलग-अलग क्लाइंट के ब्राउज़र टाइमज़ोन में काम करने के लिए, कुकी समाप्ति तिथि कैसे सेट करनी चाहिए?ग्राहक के पक्ष में संग्रहीत कुकी का टाइमज़ोन क्या है?

+1

@ डॉन कैलिस्टो को उनके अधिकांश प्रश्नों पर उत्तर देने की आवश्यकता नहीं हो सकती है। – noob

+0

धन्यवाद दोस्तों, दोनों टिप्पणियां उपयोगी हैं। दरअसल मुझे जवाब नहीं मिला है, लेकिन इसके बारे में याद रखना अच्छा है। – Karol

+1

आपको ['$ कुकी-> setExpiryTime ($ expiryTime)'] मिल सकता है (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L80) या ['$ कुकी-> setMaxAge ($ maxAge) '] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L92) उपयोगी है, जैसा कि [इस स्टैंडअलोन लाइब्रेरी] में पाया गया है (https://github.com/delight-im/PHP-Cookie)। – caw

उत्तर

7

पास के लिए gmdate इस्तेमाल कर सकते हैं के रूप में मैं कर सकते हैं बताएं कि इससे कोई फर्क नहीं पड़ता कि क्लाइंट का समय क्या है। PHP यूनिक्स टाइमकोड के आधार पर समाप्ति समय सेट करता है। उस समय में कोई भी बदलाव सर्वर के साथ रहना चाहिए।

समय सीमा समाप्त:

समय कुकी का समाप्ति समय

यहाँ() setcookie के लिए PHP manual से अंश है। यह यूनिक्स टाइमस्टैम्प है इसलिए युग के बाद से सेकंड की संख्या में है। दूसरे शब्दों में, आप सबसे अधिक संभावना इसे समय() फ़ंक्शन के साथ सेट करें और से पहले सेकंड की संख्या सेट करें, जिसे आप समाप्त करना चाहते हैं। या आप mktime() का उपयोग कर सकते हैं। समय() +60 * 60 * 24 * 30 कुकी को 30 दिनों में समाप्त होने के लिए सेट करेगा। यदि 0 पर सेट किया गया है, या छोड़ा गया है, तो कुकी सत्र के अंत में समाप्त हो जाएगी (जब ब्राउज़र बंद हो जाता है)।

0

आप getTimeZone साथ की कोशिश कर सकते हैं और setTimeZone datetime का सही स्वरूप पुनर्प्राप्त के लिए एक नज़र here

इसके अलावा strtotime ठीक हो रहा है ले लो, तो आप परिवर्तित यह

0

मान लीजिए कि आप सेट कुकी का उपयोग करते हैं।

मैं गलत हो सकता है लेकिन मुझे लगता है कि:

आप एक यूनिक्स टाइमस्टैम्प के रूप में पैरामीटर की समय सीमा समाप्त प्रदान करते हैं और आप के रूप में, तो आप "एक घंटे में" टाइमस्टैम्प गणना कुकी एक घंटे में समाप्त हो करना चाहते हैं। तो टाइमज़ोन की परवाह न करें क्योंकि यूनिक्स टाइमस्टैम्प अस्पष्ट है।

फिर ब्राउज़र के काम के लिए एक तारीख bowser सेटिंग्स (स्थान, भाषा और इसी तरह) के आधार पर

5

PHP के setcookie() समारोह एक पूर्णांक एक यूनिक्स टाइमस्टैम्प मान के संगत को स्वीकार करता है में यूनिक्स टाइमस्टैम्प अनुवाद करने के लिए है। यदि आपकी कुकी में रहने के लिए 1 घंटे का समय होना चाहिए, तो आप उस मान के लिए समय() + 3600 का उपयोग कर सकते हैं। PHP तब समाप्ति समय के साथ एक कुकी बना देगा जैसे "expires = Fri, 3 अगस्त 2001 20:47:11 यूटीसी"। यह यूटीसी (जीएमटी) में है, इसलिए आपको क्लाइंट ब्राउज़र के टाइमज़ोन के बारे में चिंता करने की ज़रूरत नहीं है

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