2012-09-19 10 views
10

तो प्रवेश की जांच ठीक है मैं इस कोड है कि setted है:,अनसेट कुकीज़ php

if((isset($_POST["remember_me"]))&&($_POST["remember_me"]==1)) 
    { 
    setcookie('email', $username, time()+3600); 
    setcookie('pass', $pass, time()+3600); 
    } 

अब जब मैं लॉगआउट लिंक (logout.php) मैं ऐसा किया पर क्लिक करें:

<?php session_start(); 
setcookie("email", '', 1, ""); 
setcookie("pass", '', 1, ""); 
$_SESSION["login"] = ""; 
header("location: aforum/enter_furom.php"); 
?> 

मैंने नष्ट सत्र का उपयोग नहीं किया क्योंकि मैं सभी सत्रों को नष्ट नहीं करना चाहता हूं .... अब एक सत्र को नष्ट कर रहा है ठीक है ... लेकिन जब मैं कुकीज़ को अनसेट करने का प्रयास करता हूं, तो ब्राउज़र (सभी ब्राउज़र्स: एक्सप्लोरर, क्रोम, फ़ायरफ़ॉक्स, मोज़िला) मुझे एक त्रुटि बताते हुए कहते हैं कि नया सह ठीक नहीं है ... उपरोक्त कुकीज़ को अनसेट करने में कोई मदद?

+0

, लेकिन आप वास्तव में यह नहीं कहा क्या _actually ब्राउज़र- को happens_ कुकीज़ बनाए रखा जाता है की कोशिश? किसी तरह से बदल दिया? – glenatron

+0

मैंने अपना प्रश्न आदमी संपादित किया;) – michael

+0

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

उत्तर

11

या तो superglobal _COOKIE चर का उपयोग:

unset($_COOKIE['mycookiename']); 

या साथ setcookie() फोन केवल कुकीज़ नाम

setcookie('mycookiename'); 

लॉगआउट उपयोग पर अपने कुकी रीसेट करने:

setcookie('pass'); 
setcookie('email'); 

तुम्हारे लिए लॉगिन जांच:

if(
    isset($_POST["remember_me"]) && 
    $_POST["remember_me"]==1 && 
    $_COOKIE['pass'] != NULL && 
    $_COOKIE['email'] != NULL && 
) 
+0

अभी भी काम नहीं कर रहा है ... नई त्रुटि मुझे देता है: रीडायरेक्ट (हेडर लोकेशन ...) बहुत बार किया गया है ... इसलिए या मेरे पीसी या सर्वर की समस्या से कुकीज़ को हटाने के लिए ... लेकिन जब मैं हटा देता हूं पीसी से कुकीज़ ... यह फिर से काम करता है ... और जब लॉगआउट ... एक ही समस्या ...: \ – michael

+0

क्या आप वाकई कुकी को हटाए जाने के बाद रीसेट नहीं किया गया है और क्लाइंट हेडर() के माध्यम से अग्रेषित किया गया है? –

+0

हाँ आदमी उसका सेट ... मुझे पता था कि मेरी समस्या क्या है ... मेरी समस्या ... कि मेरी जांच में ... 'अगर ((जारीकर्ता ($ _ कुकी [" ईमेल "])) && (जारीकर्ता ($ _ कुकी ["पास"])) { $ _SESSION ["लॉगिन"] = 1; } ' .. अब मैं इस चेक में कैसे न केवल ईमेल जारी कर सकता हूं ... लेकिन उदाहरण के लिए केवल ईमेल! = 1? – michael

1

PHP में कुकीज़ को अनसेट करने के लिए, बस अपने समाप्ति समय को अतीत में सेट करें। उदाहरण के लिए:

$expire = time() - 300; 
setcookie("email", '', $expire); 
setcookie("pass", '', $expire); 
0

आप अपने अतीत, उदा करने के लिए समय सीमा समाप्त हो निर्धारित करने की आवश्यकता

setcookie('email', '', time()-3600); 

इसके अलावा, आप अपने header('Location:' ....) के लिए एक Absolute URI का उपयोग करना चाहिए।

2

कुकी के संचालन के लिए अपने ब्राउज़र में चेक करें। और कुकी के पथ को निर्दिष्ट करके इसे अनसेट करें। उदाहरण की तरह है, तो कुकी निर्देशिका /aforum/

setcookie ("email","",time()-1,"/aforum/","http:// yourdomain.com"); 
+0

मैनुअल सुझाव देता है कि समय() - 3600' लेकिन -1 या 99 99 पागल भी हैं। लोग समय-समय पर कॉल का उपयोग क्यों करते हैं? क्यों न केवल 1 जनवरी 1 9 70 के बराबर समय टाइप करें? – gcb

1

क्रोम और IE8 में + कम से कम, निम्नलिखित ब्राउज़र से कुकी को हटा देगा है। यह पृष्ठ को फिर से लोड होने तक $_COOKIE सरणी में दिखाई नहीं देगा।

setcookie('cookiename','',0,'/',$cookieDomain)

आप यहाँ कुछ मापदंडों को बंद रखना होगा करने में सक्षम हो सकता है, लेकिन महत्वपूर्ण बात यह है कि आप एक खाली स्ट्रिंग सेट कर रहे हैं है, और उस ब्राउज़र से कुकी को हटा।

0

इस

setcookie ("email", "", time() - 3600); 
    setcookie ("pass", "", time() - 3600); 
लगभग हो गया है

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

  • कोई संबंधित समस्या नहीं^_^