जवाबों:
आप यह कोशिश कर सकते हैं
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['remember_user']);
setcookie('remember_user', null, -1, '/');
return true;
} else {
return false;
}
unset($_COOKIE['Hello']);
। यदि आप इसे हटाते हैं तो यह कुछ भी नहीं बदलता है।
unset($_COOKIE['Hello']);
वास्तव में महत्वपूर्ण है यदि आप कोड में बाद में कहीं कुकी की जांच कर सकते हैं।
मान को "" और समाप्ति की तारीख को कल (या अतीत में किसी भी तारीख) पर सेट करें
setcookie("hello", "", time()-3600);
फिर अगली बार जब पृष्ठ लोड होगा तो कुकी समाप्त हो जाएगी।
कुकी को हटाने का एक साफ तरीका $_COOKIE
मूल्य और ब्राउज़र कुकी फ़ाइल दोनों को साफ़ करना है :
if (isset($_COOKIE['key'])) {
unset($_COOKIE['key']);
setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}
setcookie
कॉल में पथ को भी शामिल करना होगा :setcookie('key', '', time() - 3600, '/');
unsetting
सफलतापूर्वक था ।
null
मूल्यों के साथ मौजूद हैं, आपको इसके बजाय array_key_exists () का उपयोग करने की आवश्यकता होगी , क्योंकि एक null
मूल्य वाला कुकी isset()
चेक द्वारा नहीं मिलेगा ।
मज़बूती से एक कुकी को हटाने के लिए इसे अपने PHP सर्वर द्वारा गणना के रूप में अतीत में कभी भी समाप्त करने के लिए इसे सेट करने के लिए पर्याप्त नहीं है। ऐसा इसलिए होता है क्योंकि क्लाइंट कंप्यूटर कई बार ऐसा कर सकते हैं जो आपके सर्वर से भिन्न होते हैं।
सबसे अच्छा अभ्यास एक खाली कुकी के साथ वर्तमान कुकी को अधिलेखित करना है जो भविष्य में एक सेकंड के बाद (1 जनवरी 1970 00:00:00 यूटीसी) के बाद समाप्त हो रहा है:
setcookie("hello", "", 1);
यह आपके कोड में कुकी को परेशान करेगा, लेकिन चूंकि प्रत्येक अनुरोध पर $ _COOKIE चर ताज़ा किया जाता है, इसलिए यह अगले पृष्ठ के अनुरोध पर वापस आ जाएगा।
वास्तव में कुकी से छुटकारा पाने के लिए, समाप्ति तिथि निर्धारित करें:
// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);
unset()
कुकी को कोई ज़रूरत नहीं है ?
मुझे अपने कोड में एक ही समस्या थी और पाया कि यह एक कुकी पथ मुद्दा था। इस स्टैक ओवरफ्लो पोस्ट की जाँच करें: php सेट कुकी को हटा नहीं सकते
मैंने कुकी को "/" के पथ मान का उपयोग करके सेट किया था, लेकिन जब मैंने इसे खाली करने का प्रयास किया, तो इसका कोई भी मार्ग मूल्य नहीं था, इसलिए यह स्पष्ट नहीं था। तो यहाँ एक उदाहरण है कि क्या काम किया है:
कुकी की स्थापना:
$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);
कुकी साफ़ करना:
setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);
उम्मीद है की वो मदद करदे।
यदि आप कुकी को अतीत में समाप्त करने के लिए सेट करते हैं, तो ब्राउज़र इसे हटा देगा। Phc.net पर setcookie () उदाहरण देखें
PHP डॉक्स से " उदाहरण # 2 setcookie () हटाएँ उदाहरण " लेबल देखें । ब्राउज़र से एक कुकी को साफ़ करने के लिए, आपको ब्राउज़र को यह बताना होगा कि कुकी समाप्त हो गई है ... ब्राउज़र तब इसे हटा देगा। unset
जैसा कि आपने इस्तेमाल किया है, यह सिर्फ कोको हेल को हटाता है 'कुकी' सरणी से।
जब आप करते हैं तो यह PHP v7 सेटकुकी () कोड काम करता है:
<?php
setcookie('user_id','');
setcookie('session','');
?>
पोर्ट 80 पर सूँघते समय tcpdump के आउटपुट से, सर्वर क्लाइंट (ब्राउज़र) को निम्न हेडर भेजता है:
Set-Cookie: user_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
Set-Cookie: session=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
निम्नलिखित अनुरोधों में पैकेट का अवलोकन करना ब्राउज़र अब हेडर में इन कुकीज़ को नहीं भेजता है
कुकी को हटाने के लिए आपको केवल NULL को मान सेट करना होगा:
"यदि आपने समाप्ति समय, पथ या डोमेन के लिए नोन्डफॉल्ट मानों के साथ एक कुकी सेट की है, तो आपको कुकी को ठीक से हटाने के लिए कुकी को हटाते समय फिर से उन्हीं मूल्यों को प्रदान करना होगा।" "लर्निंग PHP5" पुस्तक से उद्धरण।
तो इस कोड को काम करना चाहिए (मेरे लिए काम करता है):
कुकी की स्थापना:
setcookie('foo', 'bar', time() + 60 * 5);
कुकी को हटाना:
setcookie('foo', '', time() + 60 * 5);
लेकिन मैंने देखा कि हर कोई एक्सपायरी डेट को पहले से निर्धारित कर रहा है, क्या यह आवश्यक है, और क्यों?
''
रूप में एक ही बात नहीं है null
।
आपके द्वारा लिखी जा सकने वाली सभी कुकी हटाने के लिए:
foreach ($_COOKIE as $key => $value) {
unset($value);
setcookie($key, '', time() - 3600);
}
यदि आप कुकी को "हटाना" चाहते हैं, तो बस समाप्ति तिथि को एक घंटे पहले सेट करें:
setcookie ("TestCookie", "", time() - 3600);
या
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
स्रोत: http://www.php.net/manual/en/function.setcookie.php
आपको filter_input()
सभी ग्लोबल्स के लिए फ़ंक्शन का उपयोग करना चाहिए जो एक आगंतुक इस तरह से दर्ज / हेरफेर कर सकता है:
$visitors_ip = filter_input(INPUT_COOKIE, 'id');
आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं: http://www.php.net/manual/en/function.filter-input.php और यहाँ: http://www.w3schools.com/php/func_filter_input.asp
मुझे पता है कि इस विषय को बनाए हुए एक लंबा समय हो गया है, लेकिन मैंने इस समाधान के भीतर थोड़ी सी गलती देखी (मैं इसे इस तरह कह सकता हूं, क्योंकि यह एक विस्तार है)। मैं मानता हूँ कि बेहतर समाधान शायद यही समाधान है:
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
return true;
} else {
return false;
}
लेकिन, वर्तमान स्थिति में, आप हर मामले में कुकीज़ को हटा देते हैं, जहाँ unset फंक्शन काम करता है और तुरंत ही आप नई एक्सपायर्ड कुकीज़ बनाते हैं, ताकि unset फंक्शन काम न करे।
इसका मतलब है कि भले ही अनसेट फ़ंक्शन काम करता है, फिर भी यह कंप्यूटर पर 2 कुकीज़ होगा। तार्किक दृष्टिकोण में, पूछा गया लक्ष्य कुकीज़ को हटाना है यदि यह संभव है और यदि यह वास्तव में नहीं है, तो इसे समाप्त करें; "सबसे साफ" परिणाम प्राप्त करने के लिए।
इसलिए, मुझे लगता है कि हमें बेहतर करना चाहिए:
if (isset($_COOKIE['remember_user'])) {
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
return true;
} else {
return false;
}
धन्यवाद और आपका दिन शुभ हो :)
$cookie_name = "my cookie";
$cookie_value = "my value";
$cookie_new_value = "my new value";
// Create a cookie,
setcookie($cookie_name, $cookie_value , time() + (86400 * 30), "/"); //86400 = 24 hours in seconds
// Get value in a cookie,
$cookie_value = $_COOKIE[$cookie_name];
// Update a cookie,
setcookie($cookie_name, $cookie_new_value , time() + (86400 * 30), "/");
// Delete a cookie,
setcookie($cookie_name, '' , time() - 3600, "/"); // time() - 3600 means, set the cookie expiration date to the past hour.
यदि आप अपने सभी मौजूदा डोमेन से कुकी को पूरी तरह से हटाना चाहते हैं तो निम्न कोड निश्चित रूप से आपकी मदद करेगा।
unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");
यह कोड कुकी चर को आपके सभी डोमेन से पूरी तरह से हटा देगा; "/" - यह दर्शाता है कि कुकी चर का मान सभी डोमेन के लिए सेट है न केवल वर्तमान डोमेन या पथ के लिए। समय () - 300 यह दर्शाता है कि यह पिछली बार सेट होता है इसलिए यह समाप्त हो जाएगा।
यह कैसे पूरी तरह से हटा दिया जाता है।
आप कुकी मानों के आधार पर एक सत्र चर सेट कर सकते हैं
session_start();
if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}
echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");
आप बस इस अनुकूलित फ़ंक्शन का उपयोग कर सकते हैं:
function unset_cookie($cookie_name) {
if (isset($_COOKIE[$cookie_name])) {
unset($_COOKIE[$cookie_name]);
setcookie($cookie_name, null, -1);
} else { return false; }
}
यदि आप $ _COOKIE ['user_account'] को हटाना चाहते हैं।
महज प्रयोग करें:
unset_cookie('user_account');
जब आप 0
समय के लिए प्रवेश करते हैं, तो आप ब्राउज़र के लिए "अब" (+ अब से वास्तव में अब है) का मतलब है और यह कुकी को हटा देता है।
setcookie("key", NULL, 0, "/");
मैंने इसे क्रोम ब्राउजर में चेक किया जो मुझे देता है:
Name: key
Content: Deleted
Created: Sunday, November 18, 2018 at 2:33:14 PM
Expires: Sunday, November 18, 2018 at 2:33:14 PM
बस false
इसे अनसेट करने के लिए कुकी का मान सेट करें ,
setcookie('cookiename', false);
PS: - यह सबसे आसान तरीका है।
आपको अपने सर्वर में php के साथ कुकीज़ को हटाना है और अपने ब्राउज़र के लिए js के साथ .. (उन्होंने php के साथ बनाया है, लेकिन कुकी फ़ाइलें ब्राउज़र क्लाइंट में भी हैं):
एक उदाहरण:
if ($_GET['action'] == 'exit'){
// delete cookies with js and then in server with php:
echo '
<script type="text/javascript">
var delete_cookie = function(name) {
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
};
delete_cookie("madw");
delete_cookie("usdw");
</script>
';
unset($_COOKIE['cookie_name']);
unset($_COOKIE['cookie_time']);
आप में से अधिकांश यह भूल रहे हैं कि यह केवल एक स्थानीय मशीन पर काम करेगा। एक डोमेन पर आपको इस उदाहरण की तरह एक पैटर्न की आवश्यकता होगी।
setcookie("example_cookie", 'password', time()-3600, "/", $_SERVER['SERVER_NAME']);
setcookie
किसी भी डोमेन के लिए काम करता है, चाहे लोकलहोस्ट हो या न हो।
$cookie->delete()
से github.com/delight-im/PHP-Cookie उपयोगी। प्रश्न से कोड बस उस संपत्ति को हटा देता है जिसे सर्वर-साइड पर पार्स किया गया है। कुकी अभी भी क्लाइंट की तरफ रहेगी।