2011-12-27 13 views
5

मैं PHP के माध्यम से एक कुकी सेट करना चाहता हूं। परिदृश्य इस तरह है:डोमेन के लिए PHP में कुकी कैसे सेट करें

डोमेन है: example.com

उप-डोमेन पर एक वेब पेज नहीं है (my.example.com)। मेरा कोड है:

$value="I am looged in"; 
setcookie("TestCookie", $value,'','',".example.com"); 
echo "hello".$_COOKIE["TestCookie"]; 

लेकिन परिणाम केवल "हैलो" है - कुकी सेट नहीं हो रही है। कृपया संभावित समाधान का सुझाव दें।

धन्यवाद!

+0

यह उपयोग करते समय यह काम करता है: setcookie ("TestCookie", $ value); – Yogesh

+0

आसान कुकी प्रबंधन के लिए, विशेष रूप से "डोमेन" संपत्ति के संबंध में, आप इसका उपयोग कर सकते हैं: https://github.com/delight-im/PHP- कुकी – caw

+0

आपको ['$ कुकी-> setDomain ($ डोमेन) मिल सकता है) '] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117) सहायक, जैसा कि [इस स्टैंडअलोन लाइब्रेरी] में पाया गया है (https://github.com/खुशी-आईएम/पीएचपी कुकी)। – caw

उत्तर

9

setcookie की वास्तविक कॉल के पहले दो सुधार: पैरामीटर 3 (expired) एक पूर्णांक मान होना चाहिए (डिफ़ॉल्ट मान 0 है); सभी उपनिर्देशिकाओं के लिए कुकी को वैध बनाने के लिए पैरामीटर चार को '/' पर सेट किया जाना चाहिए; setcookie कॉल इसलिए इस तरह दिखना चाहिए:

setcookie("TestCookie", $value, 0, '/', ".example.com"); 

तो यह वास्तव में दूसरी बार स्क्रिप्ट कहा जाता है काम करना चाहिए। यह समझने के लिए कि यह पहली बार क्यों काम नहीं करेगा, हमें थोड़ा into how cookies work में खोदना होगा; मूल रूप से, कुकीज़ सर्वर से क्लाइंट को भेजे गए डेटा होते हैं, जहां सर्वर कहता है "अगली बार जब आप मुझे एक अनुरोध भेजें तो" मुझे यह डेटा भेजें "। यह मूल रूप से सेटक्यूकी के लिए है: जब अनुरोध किया जाता है और ग्राहक को पृष्ठ प्राप्त और संसाधित किया जाता है, तो निर्दिष्ट अनुसार कुकी क्लाइंट पर बनाई जाएगी; $_COOKIE, दूसरी तरफ, सभी मान रखता है जो पहले से ही कुकीज में हैं, और क्लाइंट द्वारा अनुरोध के साथ प्रेषित किया गया है - जिसका अर्थ है कि पहली बार स्क्रिप्ट को कॉल किया जाता है, $ _SESSION वास्तव में अभी भी खाली होगा कुकीज़ को केवल स्क्रिप्ट आउटपुट प्राप्त होने के बाद ही बनाया जाएगा।

+0

चीजों को समझाने के लिए बहुत बहुत धन्यवाद! यह मेरे लिए काम करता है। – Yogesh

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