• ベストアンサー

セッション使用で戻るボタンが利用不可

IDやパスワードで読み込んだ後、 こちらのサイトの様に 色々な権限や処理があるのですが、 ブラウザ(IE)の戻るボタンを押すと 「ページが表示できません」ページになります。 各ページにIDやパスワードの セッションを保持しているのですが、 回避策はありますでしょうか。 自分でページ移動ボタンも作成してありますが、 やはり戻るボタン押下出来るようになりたいです。

  • kaiu
  • お礼率70% (194/274)
  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • dokumori
  • ベストアンサー率83% (5/6)
回答No.1

セッション情報を各ページに保持するのではなく、グローバル変数で管理しては如何でしょう。 1.各ページではなく、ログイン情報をグローバル変数に格納する //ログイン時: $_SESSION['login']=true; //各ページでの判定 if ($_SESSION['login']){ //ページ内容書出 }else{ header("Location: [ログインページ]"); } //ログアウト時: $_SESSION['login']=false; //を忘れずに。 あとは、オブジェクトを使ってのセッション管理もあります(参考URL)。説明は英語ですが、英語が達者でなくてもコードを読めば大体どういう処理が行われているか分かると思います。

参考URL:
http://www.evolt.org/article/comment/17/60265/index.html
kaiu
質問者

お礼

お返事遅くなり申し訳ありません。 該当URL、大変参考になりました。ありがとうございました。

関連するQ&A

  • Webブラウザの閉じるボタン無効化についての質問

    お世話になります。 現在、ASP.NET(C#)にてIEブラウザの閉じる(×)ボタンを 非表示にするあるいは無効にする処理を加えようとしています。 現行では、JavaScriptのonbeforeunloadにて閉じるボタン 押下時の処理を加えています。 しかしながら、処理を加えた後閉じるボタンを押下した際に 「このページからほかのページに移動しますか?」確認MSG が表示されてしまいまして、「OK」を押下すると画面が閉じて しまいます。 IEの閉じるボタン無効化の機能が成立しません。 そこで質問としまして、 ・IEブラウザの閉じるボタン無効化 ・IEブラウザの閉じるボタン押下時に表示される  「このページからほかのページに移動しますか?」確認MSG  を非表示にする 方法がございましたら、ご教授お願い致します。

  • ブラウザ閉じるボタンの押下後もセッションを破棄させてプログラムを終了させたい

    開発環境 Visual Studio 2008 Professional Edition Visual Basic 2008 .NET Framework 3.5 SP1 ASP.NETを利用してWebページを作成しています。 現在、Webページにログアウトボタンを配置し、そのボタンを押して ログインページへ遷移する前にセッションの破棄をさせています。 ブラウザ閉じる(×)ボタンの押下後もセッションを破棄させ、 その後、プログラムを終了させたいのですがどのようにすればいいのでしょうか? 尚、現在はブラウザ閉じる(×)ボタンの押下後、セッションの破棄がされずプログラムも終了しません。 よろしくお願いします。

  • 携帯サイトでsessionは使用可能か

    HTML・PHPで3キャリア対応携帯サイトを作成しているのですが、session_id()などのセッション関連は携帯サイトでも使用できるのでしょうか? 例えば、ログインページで入力フォームの値(IDとパスワード)をsesession_id()で次のページに渡す際(header("Loca"))、PCのブラウザ(IE)では値を渡せ、かつ、次のページに進んだのですが、i-modeのエミュレータ(imodetool)では、次のページに移らず、ログイン画面に戻ってしまいます。 なお、ソースは以下のように記述しています。 if($_POST["name"] == XXXX) { session_start(); $_SESSION["user_id"] = $_POST["name"]; header("Location: http://xxxxxxxx.php?id=". session_id()); exit(); } お手数ですが、回答頂けると幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • セッションを使用したページ遷移

    こんにちは、質問です。 現在趣味で制作しているPHPを利用したシステムで フォームからDBへ多くのデータを登録する処理を記述しています。 計4Pのページをフォームにより遷移しながら最終ページでデータ挿入をする風に考えているのですが セッションとPOSTメソッドを使用してデータの引継ぎを行っていると、ブラウザの「戻る」ボタンを押した時に以前のページが有効期限切れとなってしまい、データを戻って入力しなおしたい時に最初からやり直さなければならない状態になっています。 こういった状況を回避するにはどのような手段がスタンダードなのでしょうか? 確かセッションを使用せずにPOSTメソッドのみで行った場合はブラウザの「戻る」ボタンを使用してもデータが保持されていました よろしくおねがいします 環境はPHP4 MySQL3です!

    • 締切済み
    • PHP
  • セッションIDについて

    セッションIDについて ASP.NETで開発しています。 セッションフィクセーション対策でログイン画面で初期表示のみセッションを削除しています。 「ログイン」ボタンを押して、Postbackされる時にセッションIDが再発行されます。 ここまでの流れはいいのですが、もう一度「ログイン」ボタンを押下すると 一回目の「ログイン」ボタン押下時に再発行したセッションIDが、二回目の「ログイン」ボタン 押下時にも再発行してしまいます。 私は一回目のPostback時にセッションIDが再発行されたら、 それ以降のPostback時は既存のセッションIDを使用する動きを予想していました。 なぜ二回目以降のPostback時にもセッションIDが再発行されてしまうのでしょうか? ご存知の方がいましたら教えていただけないでしょうか。

  • sessionうまくいかない

    sessionの勉強のためにphpで簡単なページを作ってみたのですが、 sessionIDが次のページに送れてないみたいで、うまくいきません。 1ページ目 @session_start(); print session_id(); $_SESSION["ID"]=session_id(); 2ページ目 @session_start(); print session_id(); sessionの記述はこのようにしています。 環境は Windows Vista IE7 PHP5 Apache2.2 です。 よろしくお願いします。

    • 締切済み
    • PHP
  • Weblogicのセッションについて

    Weblogic10.0.3にてWebアプリケーションの 開発を行っていますが、解決しない問題があり 質問させていただきます。 現在、ログイン画面にてユーザーIDとパスワードを 入力してログイン後各処理を行うアプリを開発していますが、 ログイン時のユーザー情報をセッションに保持する作りに していますが、ログイン時にjsessionidがURLに 表示されてしまいます。 (例:http://testserver:9000/TestApp/Test.do;jsessionid=vFqyK3xMrJ9QCLJnW0X0r2w17ylBVhhD2VQT4qGwdMsGvhnZHdJQ!-425034523) 一度ログインするとそのブラウザを閉じるまでは、画面遷移をしても 何度ログイン・ログアウト処理(セッションの生成・削除)を 行っても二度と表示されません。 (画面遷移はStrutsで制御しています) セッションIDをCookieに保持する方法もあるようですが、 なるべくCookieを使いたくないので、セッションに保持するように したいのです。 web.xml、weblogic.xml、Weblogicサーバーの設定などで セッションIDを表示しなくなる方法がありましたら 教えてください。よろしくお願いします。

  • Cookieを利用したログインについて

    http://tenderfeel.xsrv.jp/php/628/ に、Cookieを利用したサンプルが掲載されているのですが、 このサンプルでは、セッションIDを発行せずに、セッション管理をすべてCookieで行なっている、のでしょうか? また、処理としては、サーバー側にはデータを何も保持せずに、 アクセスする度にブラウザから、(ハッシュ化したパスワードを含む)Cookie情報を送信して、 その一致を確認している、ということになるのでしょうか? セキュリティ的には、問題とかないのでしょうか? 次に、セッション版についてですが、 セッションIDは、スクリプトのどの部分で発行しているのでしょうか? また、処理としては、セッションIDはブラウザに、 それ以外のセッション変数は、サーバ側のセッション(?)に保存、 ということになるのでしょうか?

    • ベストアンサー
    • PHP
  • 初歩的な質問 セッション管理について

    セッション処理をしたいと考えていますが、 分からない点が多く困っています。 したいと思っていることは、「ログイン」的な処理です。 訪問者がブラウザを閉じても、サイト設計者が設定した「期間」、 ログイン状態をキープさせておけるような仕様です。 ※よくあるタイプです。 (特段、難しいことや変わったことをしようとしてはいません。) ただ、ちょっと変わっている点は、ログインはパスワード無しで行います。 フォーム(POST)でボタンをクリックしたら、誰でもログインできるようなものです。 で、上記処理をする方法として、大きく分けて、 (1)クッキー($_COOKIE)を使う方法と、 (2)セッション($_SESSION)を使う方法とがあるように思っています。 (1)の方法だと、 データそのものをクライアント側に保存させるのでセキュリティ上、やや難があり、 (2)の方法だと、「キー(セッションID)」だけをやりとりするので比較的安全、 ということをよく耳にします。 ただ、パスワードを扱うわけではないので、この場合には、 (1)の方法でもアリな気がしています。 しかし、今後、パスワード形式に移行しないとも限らないので、 (2)を使った方法で話を進めたいと思います。 パスワードのやりとりがないのなら、(1)の方が断然楽でいいよ~ ということであれば、話は変わってきます。 その場合には教えて下さい。 (※質問文の中で、私は随所に変なことを言っている可能性がありますので、 適宜、ご指摘頂けると嬉しく思います。) 話を戻しまして、 ここからは、前述の(2)の方法で話を続けさせて頂きます。 セッション処理の流れについてですが、 セッションIDをクライアントに送りつけ、保存させる方法は、 session_start()をスクリプト先頭に書き、 $_SESSION['login'] = 'おまえはもう、ログインしてる…。'; と、どこかに書くことで、 この$_SESSION['login']値を保持している間、訪問者は、 サイト内のページを、ログインされた状態として閲覧できる と、私は考えています。 何か変なことを言っていましたら、ご指摘下さい。(★ポイント1) //----------------------------------- 次に、セッション保持期間の設定の方法についてですが、 ネット上で調べた所、 ini_set("session.gc_maxlifetime", "1440"); のように設定できると書いてありました。 このini_set()による設定が、どう作用するのか、 この点もよく分からずにいます。(★ポイント2) session.gc_maxlifetimeの設定自体は、スクリプト終了とともに、 Master Valueに戻されるようですが(PHPマニュアルより)、 私が気になっているのは、 そのスクリプトで生成したセッションの保持期間は、どうなっているのか? ということです。 ちょっと乱暴な書き方をしますが、 例えば、 php.ini上(つまり、Master Valueの設定値)では、 session.gc_maxlifetime:1440 というような設定 の場合に、 スクリプトAの中で、 ini_set("session.gc_maxlifetime", "~仮に24時間としておきます~"); のように書き、 そのあとに、 $_SESSION['login'] = 'おまえはもう、ログインしてる…。'; と書いた場合、 クライアントには、$_SESSION['login']のデータは24時間保持される、 ということでしょうか。 つまり、 スクリプト内に書いた、 ini_set("session.gc_maxlifetime", "~仮に24時間としておきます~"); という記述は、 そのスクリプトでセッションIDをクライアントに与える場合の「そのセッションIDの保持期間」のみ を設定できる、という理解でよろしいでしょうか。 当たり前のことをお聞きしているかもしれませんが、 どなたか、どうか、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • Ajaxにおけるセッション

    会社の先輩から 「Ajaxを使ったWebページはセッション(※セッションIDのことを短縮して言ったのかは不明)を持ち続けてしまうことが問題」 と言われたのですが、これは正しいのでしょうか? XMLHttpRequestのオブジェクトから常にopen、sendし続けているのであれば セッションを持ち続けるかもしれませんが、 例えばopen、sendをページのロード時にたった一回しかつかわないページであれば、 最初のreadystateの値が4になった時点で(もう二度とXMLHttpRequestのオブジェクトからはリクエストしないので)コネクションは切れて 放っておくとセッションIDは切れるのではないでしょうか? それともクライアント(ブラウザ)にXMLHttpRequestのオブジェクトが存在している限り、 セッションは切れずに保持されるのでしょうか? よろしくお願いします。

専門家に質問してみよう