ホームページ >バックエンド開発 >PHPチュートリアル >PHP セッションは削除できません。login.php、logout.php、index.php の 3 つのインターフェイスがあります。
login.php
アカウントを確認するためにアカウントのパスワードは送信しません
session_start();
$_SESSION["userid"]=$rs[ID'] ;
$_SESSION["useracc"] =$rs[Acc'];
$_SESSION["username"]=$rs[Name'];
ob_start() ;
header("location:index.php");
ob_end_flush()
Index.php
if($_SESSION['userid']!=''){
echo "ログイン成功"; a href='logout.php'> ;終了5db79b134e9f6b82c0b36e0489ee08ed";
}else{
echo "ログインに失敗しました";
}
logout.php
//最初の書き方
session_start();
$_SESSION =array();//Put $_SESSION 配列をクリアします
setcookie(session_name(),"",time()-1); // Cookie をクリアします
session_destroy() // この SESSION を削除します
// 2 番目の書き方
session_start();
unset($_SESSION['userid']);
unset($_SESSION['username']); ['usertype']);
session_destroy ();
//最後に実行されました
header("location:index.php");
しかし、理由はわかりません, logout.php実行後(両方の書き込み方法を試行)index.phpに戻ると、ログインはまだ成功しており、$_SESSION内のデータはまだ存在しています。しかし、logout.php のジャンプを中断して、先頭に $_SESSION と入力すると、値がありませんでした。何が問題なのか教えてください!
ディスカッションに返信 (解決策)
ブラウザの戻るボタンを使用して、index.php に戻りますか?
もちろんページを再読み込みしないと変わりません
いいえ、それは私が使用しているヘッダーのリダイレクト ジャンプです
このマシン 私が使用している Apache サーバーは iis です
どこかで間違いを犯したに違いありません!
テストコード:
index.php
<?phpsession_start();if(isset($_SESSION['userid']) && $_SESSION['userid'] != ''){ echo "已经登录 <a href='logout.php'>退出</a>";}else{ echo "没有登录 <a href='login.php'>登录</a>";}
<?phpsession_start();$_SESSION["userid"] = 1;ob_start(); header("location:index.php");ob_end_flush();logout.php
<?phpsession_start(); session_destroy(); //删除本次 SESSION ob_start();header("location:index.php");ob_end_flush();
どこか間違っているはずです。
テストコード:
Index.php
<?phpsession_start();if(isset($_SESSION['userid']) && $_SESSION['userid'] != ''){ echo "已经登录 <a href='logout.php'>退出</a>";}else{ echo "没有登录 <a href='login.php'>登录</a>";}
<?phpsession_start();$_SESSION["userid"] = 1;ob_start(); header("location:index.php");ob_end_flush();logout.php
<?phpsession_start(); session_destroy(); //删除本次 SESSION ob_start();header("location:index.php");ob_end_flush();
このメソッドは IIS では無効のようです
最初に $_SESSION = array();
次に session_destory; ( );
$_SESSION 内のすべてのデータが戻ってきたので、ログイン状態と一致していることがわかりました。
その後、 session_destory(); これがどのようなエラーや影響を与えるかはわかりません。原因。
モデレーターが私を救ってくれることを願っています
session_unset()
session_unset()
セッション配列をクリアするためのすべてのステートメントが使用されます
unset($_SESSION['userid']) this kind
session_unset();
$ _SESSION = array(); どちらであっても、最後に session_destory() が記述されていれば、中のデータはすべて戻ります。