खोज…


परिचय

एक HTTP कुकी एक वेबसाइट से भेजा गया डेटा का एक छोटा सा टुकड़ा है और उपयोगकर्ता के वेब ब्राउज़र द्वारा उपयोगकर्ता के कंप्यूटर पर संग्रहीत किया जाता है, जबकि उपयोगकर्ता ब्राउज़ कर रहा है।

वाक्य - विन्यास

  • bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

पैरामीटर

पैरामीटर विस्तार
नाम कुकी का नाम। यह वह कुंजी भी है जिसका उपयोग आप $_COOKIE सुपर ग्लोबल से मान प्राप्त करने के लिए कर सकते हैं। यह एकमात्र आवश्यक पैरामीटर है
मूल्य कुकी में स्टोर करने का मूल्य। यह डेटा ब्राउज़र के लिए सुलभ है, इसलिए यहाँ कुछ भी संवेदनशील न रखें।
समय सीमा समाप्त कुकी को समाप्त होने पर एक यूनिक्स टाइमस्टैम्प का प्रतिनिधित्व करना चाहिए। यदि कुकी को शून्य करने के लिए सेट किया जाता है, तो सत्र के अंत में समाप्त हो जाएगा। यदि वर्तमान यूनिक्स टाइमस्टैम्प से कम संख्या में सेट किया गया तो कुकी तुरंत समाप्त हो जाएगी।
पथ कुकी का दायरा। यदि सेट / कुकी पूरे डोमेन के भीतर उपलब्ध होगी। यदि सेट /some-path/ तब कुकी केवल उस पथ में उपलब्ध होगी और उस पथ के वंशज होंगे। कुकी में सेट की जा रही फ़ाइल के वर्तमान पथ में डिफ़ॉल्टता है।
डोमेन कुकी पर डोमेन या उपडोमेन उपलब्ध है। अगर नंगे डोमेन stackoverflow.com सेट किया जाता है, तो कुकी उस डोमेन और सभी उप डोमेन के लिए उपलब्ध होगी। यदि एक उपडोमेन meta.stackoverflow.com सेट किया जाता है, तो कुकी केवल उस उपडोमेन, और सभी उप-उपडोमेन पर उपलब्ध होगी।
सुरक्षित जब TRUE सेट किया जाता है तो कुकी केवल तभी सेट की जाएगी जब क्लाइंट और सर्वर के बीच एक सुरक्षित HTTPS कनेक्शन मौजूद हो।
केवल Http निर्दिष्ट करता है कि कुकी को केवल HTTP / S प्रोटोकॉल के माध्यम से उपलब्ध कराया जाना चाहिए और जावास्क्रिप्ट की तरह क्लाइंट साइड स्क्रिप्टिंग भाषाओं के लिए उपलब्ध नहीं होना चाहिए। केवल PHP 5.2 या बाद के संस्करण में उपलब्ध है।

टिप्पणियों

यह ध्यान देने योग्य है कि केवल setcookie फ़ंक्शन को लागू करने से डेटा को $_COOKIE सुपरग्लोबल सरणी में नहीं डाला जाता है।

उदाहरण के लिए करने का कोई मतलब नहीं है:

setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value

मान अभी तक नहीं है, अगले पेज लोड होने तक नहीं। फ़ंक्शन setcookie बस कहता है " अगले http कनेक्शन के साथ क्लाइंट (ब्राउज़र) को इस कुकी को सेट करने के लिए कहें "। फिर जब हेडर ब्राउज़र में भेजे जाते हैं, तो उनमें यह कुकी हेडर होता है। ब्राउज़र तब जाँचता है कि अगर कुकी अभी तक समाप्त नहीं हुई है, और यदि नहीं, तो http अनुरोध में यह कुकी को सर्वर पर भेजता है और जब PHP इसे प्राप्त करता है और सामग्री को $_COOKIE सरणी में डालता है।

कुकी सेट करना

कुकी कुकी setcookie() फ़ंक्शन का उपयोग करके सेट की गई है। चूंकि कुकीज़ HTTP हेडर का हिस्सा हैं, इसलिए आपको ब्राउज़र में कोई भी आउटपुट भेजने से पहले कोई भी कुकी सेट करनी होगी।

उदाहरण:

setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params

विवरण:

  • नाम user साथ एक कुकी बनाता है
  • (वैकल्पिक) कुकी का मूल्य Tom
  • (वैकल्पिक) कुकी 1 दिन में समाप्त हो जाएगी (86400 सेकंड)
  • (वैकल्पिक) कुकी पूरी वेबसाइट पर उपलब्ध है /
  • (वैकल्पिक) कुकी केवल HTTPS के ऊपर भेजी जाती है
  • (वैकल्पिक) कुकी स्क्रिप्टिंग भाषाओं जैसे जावास्क्रिप्ट के लिए सुलभ नहीं है

एक बनाया या संशोधित कुकी केवल बाद के अनुरोधों (जहां path और domain मैच) पर पहुँचा जा सकता है, क्योंकि सुपरगॉल्ड $_COOKIE नए डेटा के साथ तुरंत आबादी नहीं है।

एक कुकी को पुनः प्राप्त करना

एक कुकी नाम वाले user को पुनः प्राप्त और आउटपुट user

वैश्विक चर $_COOKIE का उपयोग करके कुकी के मूल्य को पुनः प्राप्त किया जा सकता है। उदाहरण अगर हमारे पास कुकी नाम का user तो हम इसे इस तरह से पुनः user कर सकते हैं

echo $_COOKIE['user'];

कुकी को संशोधित करना

कुकी को रीसेट करके कुकी के मूल्य को संशोधित किया जा सकता है

setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already

कुकीज HTTP हेडर का हिस्सा हैं, इसलिए किसी भी आउटपुट को ब्राउजर में भेजने से पहले setcookie() को कॉल करना होगा।

कुकी को संशोधित करते समय सुनिश्चित करें कि setcookie() का path और domain पैरामीटर मौजूदा कुकी से मेल खाते हैं या इसके बजाय एक नया कुकी बनाया जाएगा।

जब आप कुकी भेजते हैं, तो कुकी का मान भाग स्वतः urlencoded हो जाएगा, और जब यह प्राप्त होता है, तो यह स्वचालित रूप से डिकोड किया जाता है और कुकी नाम के समान चर द्वारा असाइन किया जाता है

अगर कुकी सेट है, तो जाँच करना

कुकी सेट है या नहीं यह जांचने के लिए सुपरग्लोड $_COOKIE चर पर isset() फ़ंक्शन का उपयोग करें।

उदाहरण:

// PHP <7.0
if (isset($_COOKIE['user'])) {
    // true, cookie is set
    echo 'User is ' . $_COOKIE['user'];
else {
    // false, cookie is not set
    echo 'User is not logged in';
}

// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in'; 

एक कुकी को निकाल रहा है

एक कुकी को निकालने के लिए, पिछले समय में समाप्ति टाइमस्टैम्प सेट करें। यह ब्राउज़र के निष्कासन तंत्र को ट्रिगर करता है:

setcookie('user', '', time() - 3600, '/');

जब कुकी को हटाना यह सुनिश्चित करता है कि आप जिस कुकी को हटाने का प्रयास कर रहे हैं या setcookie() का path और domain पैरामीटर आप को हटाने की कोशिश कर रहे हैं या एक नया कुकी, जो तुरंत समाप्त हो जाएगा, बनाया जाएगा।

यदि वर्तमान पृष्ठ इसका उपयोग करता है तो $_COOKIE मान को $_COOKIE करना भी एक अच्छा विचार है:

unset($_COOKIE['user']);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow