本人剛接觸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檔案後,還是保持登入狀態,請問問題出在哪裡呢?
用瀏覽器自備的清除按鈕。
按理來說,cookie成功清除了,cookie儲存的sessionid也就沒了,請求到後端session機制就沒辦法取得的sessionid去對應會話檔案取得資訊。不知道你哪環處理異常了。 cookie沒清除? sessionid已其他形式帶到請求體?
session是透過每次請求的時候傳遞一個session_id的值來保存會話的,而傳遞的方式有兩種,一種是透過每次請求時攜帶的cookies,還是有一種是透過url來傳遞,如果你php設定的是透過cookies,那麼只要刪除對應網域下的原來的cookies,伺服器就會自動產生新的session_id,也就是遺失了原來的session,至於你的問題,我覺得是刪除的方法不對,既然是開發者,那就用瀏覽器的開放者工具,上面可以顯示目前網域下的全部cookies,也可以刪除cookies,另外,瀏覽器推薦chrome!