
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
管理者としてログイン
-
複数ページでセッションを使わ...
-
ブラウザを閉じた後もセッショ...
-
ログイン画面をはさんだ後、自...
-
Dosブロンプトでtabを出力したい
-
VBScriptでのWEBページのソース...
-
VB.NETでボリュームを取得・設...
-
PHPでの画像の形式の変換
-
ウイルスもどき
-
電話番号のフォーマットについて
-
WordでExcelデータを差込...
-
昨日の日付を取得するVBscript
-
オブジェクトの中身の判定(PHP)
-
データベースから出力したデー...
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
PHP 指定した期間だけ表示した...
-
VBブラウザに表示されているテ...
-
Mysqlで2つのtable間のデータ移...
-
php修正について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
セッションのスコープ(有効範...
-
ログイン画面をはさんだ後、自...
-
PHPのセッション有効期限について
-
Cookieを利用したユーザ管理
-
sessioncookieをではなくcookie...
-
Sessionの上限について
-
■(ログイン)セッションの有効期...
-
!issetの冒頭の!ビックリマー...
-
session_unsetを使う利点
-
セッション変数にパスワードを...
-
複数のサーバで運営する場合の...
-
セッション変数で定数を宣言す...
-
セッションファイルの有効期限...
-
ブラウザを閉じた後もセッショ...
-
セッション ID とセッション名...
-
別ブラウザ間でセッションの値...
-
SESSION情報は、ブラウザを起動...
-
複数ページでセッションを使わ...
-
"セッションハンドラ"とは
おすすめ情報