
phpで会員制サイトの制作を勉強しています。
データベースへはPDOで接続しています。
MySQLデータベースを使用しています。
セッション変数($_SESSION["email"])の有無を使用したログイン方法を使用しています。
セッション変数の破棄(ログアウト処理)について質問があります。
前提として、現在会員制サイト制作の勉強で「ログアウト後は必ずTOPページに遷移する」という形にこだわっています。
ちなみに現在使っているログアウトの方法は
1、
全ページ共通の、ページ上部に表示されるメインメニューに
<form method="post" name="logout" action="toppage.php">
<input type="hidden" name="logout" value="true">
<input type="submit" value="ログアウト">
</form>
でログアウトボタンを作成し、
ログアウトボタンが押されたらtrueという値を持った$_POST["logout"]を
トップページ(toppage.php)に送る。
2、トップページ(toppage.php)に画面遷移させ、
$logout = filter_input(INPUT_POST, 'logout');
if($logout=="true"){
unset( $_SESSION["email"] );
}
でもしも$_POST["logout"]がtrueなら
セッション変数$_SESSION["email"]を破棄する
というプログラムによりログイン・ログアウトを管理しています。
きちんと動いてはいるのですが、不満が1つあります。
願わくばログアウトボタンをformタグのsubmitで作るのではなく、
<a href="toppage.php">ログアウト</a>
とリンクを使用して作成したいです。
このようにリンクを使用する場合、遷移後のTOPページ(toppage.php)でセッション変数$_SESSION["email"]を破棄するには、どのようなプログラムを記述すれば良いのでしょうか?
ネットで調べたりもしましたが、ほとんどのサイトで紹介していたものは、
ログアウトリンクをクリックすると、ログアウト処理確認専用の画面(「ログアウトしました!」とだけ書かれたような画面)に遷移し、セッション変数を破棄するものばかりでした・・・
私個人としてはログアウト処理が完了した旨を報告する画面をワンクッション置くのは、あまり実用的ではない気がして好みません・・・
巷にあふれているようなサイトではログアウトボタンをクリックすると
TOPページに遷移するようなサイトばかりなので、
phpを使用した場合、どうやったらそのような仕組みになるのか考えた上で、
今のへんてこなログアウト処理プログラムに至りました。
ごちゃごちゃしていないもっと良いログアウト処理プログラムはないでしょうか?
ご回答、よろしくお願いします。
No.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');
ご回答ありがとうございます!
ブックマークされた場合とか、全く考えていなかったです・・・
確かに動作的に危ないですね。
仰るとおり、headerで飛ばせば、ワンクッションページがあっても
ログアウト処理が安全に行えて、無駄な画面は表示されないので良いですね!
非常に為になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP session_destroyとsession...
-
session_start();について
-
$_SESSION 有効期限をブラウザ...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
*.php、*.php3、*.phtmlの違い
-
Subversionのリポジトリの削除
-
CFileDialogの最初のディレクト...
-
ビットマップ画像を読み込むプ...
-
ボタンのクリック数を合計保存...
-
phpの条件文について
-
別ファイルの変数を呼び出した...
-
2つの画像ファイルが異なるファ...
-
ループの中で mailItemObj.Disp...
-
PHPを使ってRSSコードから画像...
-
SQLiteに画像を格納したい
-
PHPでメールを受信するには?
-
inputタグでphpを呼び出す際、...
-
「クラウドにアップロード」」...
-
さくらインターネットでメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$_SESSION 有効期限をブラウザ...
-
PHP session_destroyとsession...
-
セッションとヘッダーの順序に...
-
ドコモのセッション機能について
-
PHPのセッションについて。
-
PHP 文字列 操作
-
以下プログラム(php)のバ...
-
sessionが分かりにくいです
-
セッションの変数の受渡しについて
-
session_start();について
-
セッションとGCに付いての検証
-
携帯サイトのセッションについて
-
さくらサーバーでsessionが使え...
-
セッションファイルの場所
-
phpでのログアウトについて
-
PHPでpaypal支払後のセッション...
-
セッション機能が使えない
-
セッションが変数が取得できません
-
PHPからリアルタイムにデータを...
-
セッション管理について
おすすめ情報