ホームページ >バックエンド開発 >PHPチュートリアル >PHP セッションは削除できません。login.php、logout.php、index.php の 3 つのインターフェイスがあります。

PHP セッションは削除できません。login.php、logout.php、index.php の 3 つのインターフェイスがあります。

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 14:08:281478ブラウズ

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 に戻りますか?

もちろんページを再読み込みしないと変わりません
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>";}

login.php
<?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>";}

login.php
<?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() が記述されていれば、中のデータはすべて戻ります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。