本人剛接觸PHP不到3個月,noob一枚.....試寫的網站是用SESSION保持回話的,在沒有關閉瀏覽器的情況下, 我手動刪除用戶端上所有的cookie檔案,然後重新整理網站,發現還是帳號處於登入狀態...這是怎麼回事呢?
而據我平時常用的一些網站,只要清空cookie後,都會退出登入狀態...
下面是小弟的問題代碼,請大牛們不吝賜教..
處理登入代碼的頁面A
//登入成功,保持登入狀態function login_true($username){ session_start(); $_SESSION['userinfo']=array('uid'=>476283675,'username'=>$username);}
顯示登入介面的頁面B
/*如果$_SESSION['userinfo']或$_SESSION['userinfo']['uid']為空白 *則說明未登入,引導使用者登入 */session_start();if (empty($_SESSION['userinfo'])or empty($_SESSION['userinfo']['uid'])){ echo "點我登入"; die('請先登入');}echo '晚上好';
清空了cookie檔案後,還是保持登入狀態,請問問題出在哪兒呢?
回複內容:
本人剛接觸PHP不到3個月,noob一枚.....試寫的網站是用SESSION保持回話的,在沒有關閉瀏覽器的情況下, 我手動刪除用戶端上所有的cookie檔案,然後重新整理網站,發現還是帳號處於登入狀態...這是怎麼回事呢?
而據我平時常用的一些網站,只要清空cookie後,都會退出登入狀態...
下面是小弟的問題代碼,請大牛們不吝賜教..
處理登入代碼的頁面A
//登入成功,保持登入狀態function login_true($username){ session_start(); $_SESSION['userinfo']=array('uid'=>476283675,'username'=>$username);}
顯示登入介面的頁面B
/*如果$_SESSION['userinfo']或$_SESSION['userinfo']['uid']為空白 *則說明未登入,引導使用者登入 */session_start();if (empty($_SESSION['userinfo'])or empty($_SESSION['userinfo']['uid'])){ echo "點我登入"; die('請先登入');}echo '晚上好';
清空了cookie檔案後,還是保持登入狀態,請問問題出在哪兒呢?
用瀏覽器內建的清除按鈕。
按理來說,cookie成功清除了,cookie儲存的sessionid也就沒了,請求到後端session機制就沒法擷取的sessionid去對應會話檔案擷取資訊。不知道你哪環處理異常了。cookie沒清除?sessionid已其他形式帶到請求體中?
session是通過每次請求的時候傳遞一個session_id的值來儲存會話的,而傳遞的方式有兩種,一種是通過每次請求時攜帶的cookies,還是有一種是通過url來傳遞,如果你php設定的是通過cookies,那麼只要刪除相應網域名稱下的原來的cookies,伺服器就會自動產生新的session_id,也就是丟失了原來的session,至於你的問題,我覺得是刪除的方法不對,既然是開發人員,那就用瀏覽器的開放者工具,上面可以顯示當前網域名稱下的全部cookies,也可以刪除cookies,另外,瀏覽器推薦chrome!