PHPでWEBアプリケーションを作成しています。
携帯対応にするために、フォームを使用できないところは
セッションIDをURLに付加しています。
ログアウト後(ユーザーがログアウトボタンをクリック)は、戻るボタンをクリックしても「ログインしていません」のエラーメッセージが表示されるようにしたいのです。
現在、ログアウトする際、すべてのセッション変数を削除しているのですが、ブラウザの戻るボタンをクリックすると、もとの画面が表示されます。
その画面にはセッションIDを埋め込んだリンクがあり、
クリックすると正常にリンク先に移動してしまいます。
セッションファイルが残っているために、セッションが継続されたような状態になってしまっているのではないかと思います。
セッションファイルを削除すれば、上記エラーメッセージが表示されるのです。
そこで、ログアウト時にセッションファイルを自動的に削除してしまいたいのですが、どのような方法をとればよいのでしょうか?
やっぱり普通にセッションファイルの場所を取得して、削除するしかないのでしょうか?
教えてください。
以下、ログアウト時の処理です。
// セッションの初期化
session_start();
// セッション変数を全て解除する
$_SESSION = array();
(session_id(''));
// セッションを切断するにはセッションクッキーも削除する。
// Note: セッション情報だけでなくセッションを破壊する。
if (isset($_COOKIE[session_name()]))
{
setcookie(session_name(), '', time()-42000, '/');
}
// 最終的に、セッションを破壊する
session_unset();
session_destroy();
No.1ベストアンサー
- 回答日時:
可能であればセッションを使った簡単なページを作成してみては?
私の環境では下記のページで
test1.php -> test2.php -> test3.php
の順に辿っていくとtest3.phpの所でセッションファイル(私の環境では/tmpの中sess_xxxxx)が削除されました。test3.phpから「戻る」でtest2.phpに移ってもセッション変数はからでした。
●環境
FedoraCore4
Apache 2.0.54
PHP 5.0.4
-------- tset1.php ---------
<?
session_start();
$sid = session_id();
$_SESSION['a'] = b;
$_SESSION['date'] = date("H:i:s");
echo "<a href=\"test2.php?PHPSESSID=${sid}\">test2</a>";
?>
--------- test2.php ---------
<?
session_start();
$sid = session_id();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
echo "<a href=\"test3.php?PHPSESSID=${sid}\">test3</a>"
?>
-------- tset3.php -----------
<?
session_start();
$_SESSION = array();
session_unset();
session_destroy();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
echo "SESSION END";
?>
----- 以上 -------------
参考URLで似たような現象についてやりとりがありました。
参考URL:http://ns1.php.gr.jp/pipermail/php-users/2003-Ju …
回答ありがとうございました。
確かに、いただいたコードでで試してみると、セッションファイルはきれいに削除されます。
が、開発中のプログラムではセッションファイルが削除されません。
実は、開発にフレームワーク「mojavi」を使用しており、セッションはすべて mojavi の $user オブジェクトを通して値をセットしています。
このあたりの影響なのかまだ不明です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- Google Drive 会社への勤怠届出にGoogleフォームを使用しています。 しかし、最近何故か『このサービスはビジター 2 2022/12/05 00:21
- その他(ゲーム) ファイナルファンタジー7リメイクのnormalクリア後のセッションセレクトについて。 セッションを自 2 2023/04/11 16:52
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- Chrome(クローム) GoogleChrome閉じるたびにアンケート続行できない表示が出る。 1 2023/08/13 13:53
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- PHP ここで言うトークンの意味を教えてください。 3 2022/08/24 03:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
完全なセッション破棄をしたい
-
SESSION情報は、ブラウザを起動...
-
クッキー使用によるログイン遷...
-
自分の掲示板にアクセス解析を...
-
Dosブロンプトでtabを出力したい
-
DrawImageでビットマップを拡大...
-
shシェルスクリプト 空白行の...
-
ActiveReportのサブレポート機...
-
IEを使わないでhtmlテキストを...
-
IPアドレスとMACアドレスを取得...
-
phpでcookieがうまく保存されない
-
フォームを使わずにPOST送信す...
-
DBのハッシュ化したパスワード...
-
ウイルスもどき
-
不正競争防止法に該当するので...
-
Yahoo! JAPAN IDを新規取得でき...
-
変数の内容が突然変化するのは...
-
開始と終了を指定して、その間...
-
縦型カレンダー
-
乱数が常に一定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPのセッション有効期限について
-
PHPのセッションについて
-
ブラウザを閉じた後もセッショ...
-
Sessionの上限について
-
$_SESSIONと、POSTやGETの違い
-
ログインしたら他からログイン...
-
複数のサーバで運営する場合の...
-
セッションのスコープ(有効範...
-
301リダイレクトはセッション引...
-
「戻る」ボタンで値の保持
-
セッション ID とセッション名...
-
ログイン画面をはさんだ後、自...
-
session_start()で生成されるセ...
-
管理者としてログイン
-
セッション変数にパスワードを...
-
セッションを維持したまま、サ...
-
PHP cookieの値が更新されない...
-
セッションが正しく更新されな...
-
$_SESSION = array() と sessio...
おすすめ情報