2012-01-29 74 views
1

這裏是我的登錄的Cookie被設置餅乾不會刪除

setcookie('username[0]',$username,time()+(60*60*24*365)); 
setcookie('username[1]',$userid,time()+(60*60*24*365)); 
setcookie('username[2]',$subscribed,time()+(60*60*24*365));   
setcookie('password',md5($password),time()+(60*60*24*365)); 
setcookie('admin',$admin,time()+(60*60*24*365)); 

這裏是我的註銷功能

function logout($return) { 

     setcookie('username[0]', '', time()-(60*60*24*365)); 
    setcookie('username[1]', '', time()-(60*60*24*365)); 
    setcookie('username[2]', '', time()-(60*60*24*365)); 
    setcookie('password', '', time()-(60*60*24*365)); 
    setcookie('admin', '', time()-(60*60*24*365)); 


     header('Location: ' . $return); 

    echo "<div class='fontall'><span class='fontdif'>You've been logged out. </span><a href='$return'>Click Here</a><span class='fontdif' to return</span></div>"; 

     } 

當我嘗試註銷並返回頁面我仍然登錄?我做錯了什麼?

+0

你刷新了頁面嗎? – xdazz

+0

是的,頁面仍然登錄。 – user892134

+0

當我註銷時,我得到'無法修改標題'的錯誤? – user892134

回答

4

如果你得到'無法修改標題'的錯誤,這意味着你在setcookie之前回應一些東西。 setcookie必須在任何內容回聲出來之前做。

與其他標題一樣,必須在您的 腳本的任何輸出(這是協議限制)之前發送cookie。這要求您在任何輸出之前將 調用放入此函數,包括 標記以及任何空格。

+0

我有我的退出代碼在一個函數。所以我不應該把我的註銷代碼放在一個函數中?只需將代碼放在空白頁面上即可。 – user892134

+0

@ user892134沒關係,只要確保setcookie之前沒有迴音。 – xdazz

+0

檢查我的編輯,我沒有在setcookie之前回顯任何內容,我仍然得到這個錯誤。 – user892134

0
// 1. Find the session 
    session_start(); 

    // 2. Unset all the session variables 
    $_SESSION = array(); 

    // 3. Destroy the session cookie 
    if(isset($_COOKIE[session_name()])) { 
     setcookie(session_name(), '', time()-42000, '/'); 
    } 

    // 4. Destroy the session 
    session_destroy(); 

這應該工作。 也許..u沒有破壞會話?

0

代碼似乎沒有錯 - 它們應該刪除cookie。你確定cookies沒有被刪除嗎?註銷後,請嘗試檢查Cookie是否存在。您可以使用顯示活動cookie的瀏覽器進行此操作。或者,您也可以嘗試使用PHP閱讀Cookie。

其次,你如何檢查會話是否仍然有效?你能分享一段代碼嗎?你在哪裏檢查你的會話 - 你會在所有頁面上做這些事情嗎?