2010-02-17 8 views
17

कुछ एप्लिकेशन, जो मेरे द्वारा लिखे गए नहीं हैं, और PHP में नहीं, डोमेन "www.domain.com" के लिए एक कुकी बनाता है।php setcookie डोमेन

मैं उस कुकी को प्रतिस्थापित करने की कोशिश कर रहा हूं। तो php में मैंने किया था:

setcookie('mycookie','mydata',time() + 2*7*24*60*60,'/','www.domain.com', false); 

हालांकि जिसके परिणामस्वरूप कुकी डोमेन के लिए बनाया गया है: "।" ".www.domain.com", डॉट ध्यान दें डोमेन से आगे

तो यह इसे प्रतिस्थापित नहीं करता है, यह एक और कुकी बनाता है। मैं क्या कर सकता हूं?

+0

डोमेन 'www.domain.com' और '.www.domain.com' (प्रमुख बिंदु पर ध्यान दें) कम से कम आरएफसी 6265 के अनुसार व्यवहार किया जाता है, जो * हर * आधुनिक ब्राउज़र लागू होता है। यह कहता है कि अग्रणी बिंदु सिर्फ * अनदेखा * है। लेकिन यदि कुकीज़ एक-दूसरे को सफलतापूर्वक ओवरराइट नहीं करती हैं, तो यह गुण "पथ", "डोमेन", "सुरक्षित" या "httpOnly" में भिन्नता के कारण हो सकती है, जिसे हम यहां नहीं देख सकते हैं। सामान्य रूप से, आप आसान कुकी प्रबंधन के लिए https://github.com/delight-im/PHP- कुकी खोज सकते हैं। – caw

उत्तर

31

मुद्दा भी यहाँ adressed है: If you want to restrict the cookie to a single host, supply the domain parameter as an empty string

आप भी आजमा सकते ".domain.com" डोमेन के रूप में: "जह" द्वारा http://php.net/manual/en/function.setcookie.php

टिप्पणी देखें। पिछला बिंदु "डोमेन.com" के लिए सभी सबडोमेन के लिए एक कुकी को अनुमति देगा और "www।" - कुकी को ओवरराइट कर सकता है, लेकिन मैं पहले उपर्युक्त समाधान के साथ जाऊंगा।

+4

+1 डोमेन निर्दिष्ट नहीं करना कुंजी है। – Gumbo

+0

मैं इसके उत्तर का भी इंतजार कर रहा था, और निश्चित रूप से पर्याप्त डोमेन छोड़कर डोमेन को खाली कर रहा था। धन्यवाद। –

+1

चेतावनी दीजिये, यदि आप डोमेन के लिए स्ट्रिंग का उपयोग और खाली स्ट्रिंग करते हैं तो आप कुछ ब्राउज़रों को भ्रमित कर सकते हैं। यदि आप कर सकते हैं, getenv ('HTTP_HOST') का उपयोग करें –

-1

एक ही नाम के साथ कई अन्य कुकी बनाने की कोशिश करें, लेकिन एक अलग डोमेन। उदाहरण:

setcookie('mycookie','mydata1',time() + 2*7*24*60*60,'/','www.domain.com', false); 
setcookie('mycookie','mydata2',time() + 2*7*24*60*60,'/','www.domain.com', false); 
setcookie('mycookie_top','mydata1',time() + 2*7*24*60*60,'/','domain.com', false); 
setcookie('mycookie_top','mydata2',time() + 2*7*24*60*60,'/','domain.com', false); 

फिर Firebug में इन कमांड के द्वारा बनाई गई कुकी का निरीक्षण किया। यदि आप डबल कुकी प्राप्त करते रहते हैं, तो यह PHP में एक बग हो सकता है। साथ ही, कुकी को जावास्क्रिप्ट कोड में सेट करने का प्रयास करें, देखें कि क्या आपको अभी भी वही समस्याएं हैं।

4

यदि आप कोई डोमेन निर्दिष्ट करते हैं, तो आपको आरएफसी 210 9 का पालन करना चाहिए और डोमेन को डॉट के साथ उपसर्ग करना चाहिए; अन्यथा ग्राहक ऐसा करेगा। लेकिन यदि आप किसी डोमेन को बिल्कुल निर्दिष्ट नहीं करते हैं, तो ग्राहक अनुरोध का डोमेन लेगा।

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