
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ランキング
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
phpの問い合わせフォームを作っ...
-
配列の値の更新方法について
-
PHPの構文で間違えが分からない
-
SFTPなどは使わないホームペー...
-
$_SESSIONに渡した後はそのまま...
-
($_POST['email']??"", ・・・...
-
phpのエラーについて
-
PHP MySql 画像を取得
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpの問い合わせフォームを作っ...
-
composerをインストールしたい...
-
PHP8でWarning:Undefined varia...
-
marginの値でマイナス値を設定...
-
phpでcookieがうまく保存されない
-
SplFileObject を利用したとき...
-
PHPSpreadsheetを使って関数を...
-
PHPSpreadsheetによる書き出し...
-
PHP8を使うと、大量のWarningが...
-
フォームで戻った際に入力済み...
-
PostgreSQLからCSV形式でエクス...
-
PHPを使って、別サイトの一部を...
-
BASIC認証のフォームをデザイン...
-
入力した部分を表示させたまま...
-
【初心者】XAMPPのapacheの(恐...
-
ログイン機の付きの掲示板サイ...
-
ワードプレスサイト PHP8.0.25...
-
Postgresの特定のカラムからス...
-
PHPで画像の渡しが上手く行きま...
-
PHPの勉強してます。 配列のと...
おすすめ情報