login.php
驗證帳號密碼就不發了,發設定session的代碼給大家看
session_start();
$_SESSION["userid"]=$rs[ID'];
$_SESSION["useracc"]=$rs[Acc'];
$_SESSION["username"]=$rs[Name'];
$_SESSION["usertype"]="user";
ob_start();
header("location:index.php");
ob_end_flush()
index.php
if($_SESSION['userid']!=''){
echo "登入成功";
echo "退出";
}else{
echo "登入失敗";
}
logout.php
//第一種寫法
session_start();
$_SESSION=array();//把$_SESSION 數組清空
setcookie(session_name(),"",time()-1); //把 cookie 清空
session_destroy(); //刪除本次 SESSION
//第二種寫法
session_start();
unset($_SESSION['userid']);
unset($_SESSION['useracc']);
unset($_SESSION['username']);
unset($_SESSION['usertype']);
session_destroy();
//最後都執行
ob_start();
header("location:index.php");
ob_end_flush();
但是不知道為什麼,執行logout.php之後(兩種寫法都試過)返回到index.php的時候還是登入成功,那個$_SESSION裡面的資料都還是存在。但是我中斷logout.php跳轉在前面打出$_SESSION裡面是沒有值了。 請高手指導一下到底是什麼問題!
回複討論(解決方案)
返回到index.php,是通過瀏覽器後退按鈕嗎?
那沒有重新載入頁面當然是不會變的
返回到index.php,是通過瀏覽器後退按鈕嗎?
那沒有重新載入頁面當然是不會變的
不是啊,就是使用的那個header那個裡面的重新導向跳轉的,
在我本機是可以的,在伺服器上就不行了
本機使用的是apache伺服器上是iis
你一定有什麼地方弄錯了!
測試代碼:
index.php
login.php
logout.php 你一定有什麼地方弄錯了!
測試代碼:
index.php
login.php
logout.php
現在好像session_destory();這個方法在IIS裡面無效了
我先$_SESSION = array();
然後在session_destory();
發現前面$_SESSION裡面的資料都又回來了,所以導致一致是登入狀態,
後面把session_destory();
給去掉了
不知道這樣會出現什麼樣的錯誤或者是影響。
希望版主解救
session_unset()
session_unset()
把session數組清空的語句都使用了的
unset($_SESSION['userid']);這種
session_unset();這種
$_SESSION = array();這種
不管是哪一種,只要後面寫上了session_destory()
裡面的資料都又全部回來了。