- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpでのログアウトについて)
phpでのログアウト方法についてのご質問
このQ&Aのポイント
- phpで会員制サイトの制作を勉強しています。データベースへの接続はPDOを使用し、MySQLデータベースを使用しています。現在、セッション変数を使用したログイン方法を実装していますが、ログアウト処理についてのご質問があります。
- 現在のログアウト処理では、全ページ共通のメインメニューにログアウトボタンを作成し、押されたら$_POST['logout']にtrueという値を送信しています。トップページに遷移した後、$_POST['logout']の値がtrueの場合にセッション変数を破棄しています。
- しかし、リンクを使用したログアウトボタンを実装したい場合、どのようにセッション変数を破棄すれば良いのかわかりません。ネットで調べたりもしましたが、ほとんどのサイトではログアウト処理確認専用の画面に遷移してからセッション変数を破棄する方法ばかりでした。よりスムーズなログアウト処理のプログラムについてご教示いただければ幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
anchor要素だと(QueryStringで渡すにしてもpathinfoで渡すにしても)間違ってログアウト後のTOPページをBookmarkされてしまうと、そのBookmarkでTOPに戻ろうとするとログアウトしてしまうけどそれはいいんですかね。 anchor要素でやるならlogout.phpのようなログアウト専用のスクリプトにリンクして、そちらでセッション情報を破棄してからLocationヘッダでtoppageへ遷移させる方が素直だと思います。 logput.php <?php session_start(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } $_SESSION = array(); session_destroy(); header('Location: http://example.com/toppage.php');
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.1
><a href="toppage.php">ログアウト</a> >とリンクを使用して作成したいです。 そのロジックだとtoppageにいったら必ずログアウトしてしまうけどいいの? <a href="toppage.php?logout=1">ログアウト</a> 的な処理にしたらどうですか?
質問者
お礼
ご回答ありがとうございます! なるほど、GETを使用するやり方ですね。 確かに理にかなっていると思いますが、 できればURLをあっさりさせたいので、POSTを使用していました。
お礼
ご回答ありがとうございます! ブックマークされた場合とか、全く考えていなかったです・・・ 確かに動作的に危ないですね。 仰るとおり、headerで飛ばせば、ワンクッションページがあっても ログアウト処理が安全に行えて、無駄な画面は表示されないので良いですね! 非常に為になりました。