首頁 >後端開發 >php教程 >網站是SESSION保持回話的,我手動刪除了客戶機上的所有cookie,再次訪問的時候為什麼還是登入狀態呢?

網站是SESSION保持回話的,我手動刪除了客戶機上的所有cookie,再次訪問的時候為什麼還是登入狀態呢?

WBOY
WBOY原創
2016-09-21 14:13:011195瀏覽

本人剛接觸PHP不到3個月,noob一枚.....試寫的網站是用SESSION保持回話的,在沒有關閉瀏覽器的情況下, 我手動刪除客戶端上所有的cookie文件,然後刷新網站,發現還是帳號處於登入狀態...這是怎麼回事呢?

而據我平時常用的一些網站,只要清空cookie後,都會退出登入狀態...

下面是小弟的問題代碼,請大牛們不吝賜教..

處理登入程式碼的頁面A

<code>//登录成功,保持登录状态
function login_true($username){
    session_start();
    $_SESSION['userinfo']=array('uid'=>476283675,'username'=>$username);
}
</code>

顯示登入介面的頁面B

<code>/*如果$_SESSION['userinfo']或$_SESSION['userinfo']['uid']为空
 *则说明未登录,引导用户登录
 */

session_start();
if (empty($_SESSION['userinfo'])or empty($_SESSION['userinfo']['uid'])){
    echo "<a href='919.html'>点我登录</a>";
    die('请先登录');
}

echo '晚上好';</code>

清空了cookie檔案後,還是保持登入狀態,請問問題出在哪裡呢?

回覆內容:

本人剛接觸PHP不到3個月,noob一枚.....試寫的網站是用SESSION保持回話的,在沒有關閉瀏覽器的情況下, 我手動刪除客戶端上所有的cookie文件,然後刷新網站,發現還是帳號處於登入狀態...這是怎麼回事呢?

而據我平時常用的一些網站,只要清空cookie後,都會退出登入狀態...

下面是小弟的問題代碼,請大牛們不吝賜教..

處理登入程式碼的頁面A

<code>//登录成功,保持登录状态
function login_true($username){
    session_start();
    $_SESSION['userinfo']=array('uid'=>476283675,'username'=>$username);
}
</code>

顯示登入介面的頁面B

<code>/*如果$_SESSION['userinfo']或$_SESSION['userinfo']['uid']为空
 *则说明未登录,引导用户登录
 */

session_start();
if (empty($_SESSION['userinfo'])or empty($_SESSION['userinfo']['uid'])){
    echo "<a href='919.html'>点我登录</a>";
    die('请先登录');
}

echo '晚上好';</code>

清空了cookie檔案後,還是保持登入狀態,請問問題出在哪裡呢?

網站是SESSION保持回話的,我手動刪除了客戶機上的所有cookie,再次訪問的時候為什麼還是登入狀態呢?

用瀏覽器自備的清除按鈕。

按理來說,cookie成功清除了,cookie儲存的sessionid也就沒了,請求到後端session機制就沒辦法取得的sessionid去對應會話檔案取得資訊。不知道你哪環處理異常了。 cookie沒清除? sessionid已其他形式帶到請求體?

session是透過每次請求的時候傳遞一個session_id的值來保存會話的,而傳遞的方式有兩種,一種是透過每次請求時攜帶的cookies,還是有一種是透過url來傳遞,如果你php設定的是透過cookies,那麼只要刪除對應網域下的原來的cookies,伺服器就會自動產生新的session_id,也就是遺失了原來的session,至於你的問題,我覺得是刪除的方法不對,既然是開發者,那就用瀏覽器的開放者工具,上面可以顯示目前網域下的全部cookies,也可以刪除cookies,另外,瀏覽器推薦chrome!
網站是SESSION保持回話的,我手動刪除了客戶機上的所有cookie,再次訪問的時候為什麼還是登入狀態呢?

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn