• 締切済み

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

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

noname#106877
noname#106877

みんなの回答

回答No.1

>プログラムを終了させたいのですがどのようにすればいいのでしょうか という事ですが、どのようなプログラムを終了させたいのですか? ・ASPから、別DLLを呼んでいる? ・単純にオブジェクトをプログラムと表現していて、オブジェクトの破棄が行われない事を言っている? それと、セッション管理設定はどのようにおこなっていますか? ・Inproc? ・ステートサーバー? ・クッキー? 少し情報が足りませんが 漠然と・・・・ Inprocであれば、Global.asaxのSession_Endイベント当たりをこねくりまわせばいけるかと。

参考URL:
http://www.atmarkit.co.jp/fdotnet/dotnettips/127asplogasx/asplogasx.html

関連するQ&A

  • 思うように セッションの破棄 ができない

    ASPを使ったログイン機能を持ったページを作っています。 ログインしたときにセッションIDを使って直リンクを避けるような 機能を持たせたのですが、サーバーの負荷を避けるために、ログアウト ボタンを作って ログアウトボタンを押したらセッション情報を破棄 するようにしたら、どうもページを読み込んだときに すぐに破棄してしているようで うまくできません ソースは <%@ Language = "VBScript" %> 以下HTMLヘッダー類 <script language="JavaScript"> <!-- function owari(){ <% Session.Abandon %>//セッション破棄 parent.location.replace('../login/login.asp?stn=2');//ページ移動 } //--> </script> 以下HTMLのボディー <INPUT type="button" value="ログアウト" onclick="owari()"> 以下色々なソース ボタンを押したら JavaScriptを呼び出し 破棄してページ移動するように作ったのですが これ自体は問題なく作動するのですが、 <% Session.Abandon %>//セッション破棄 がはいると、なぜかページを開いたときに 呼び出してもいないのに 破棄されてしまっているようで、通常のページ移動もできなくなります セッション破棄の1行を抜くと 全てきちんと作動しますが これではサーバーのセッションタイムアウトまでメモリが残るから良くないのです。 また、VBScript内に Sub haki() Session.Abandon .. .. End sub として <script language="JavaScript"> <!-- function owari(){ <% haki %> } //--> </script> と言うようにしても、同じ不具合になります JavaScriptはfunctionにすると呼び出されるまでは実行されないと思います。 またVBScriptのSubプロシージャも呼ばれるまでは実行しないと思っています。 ただ、今の状態を見る限り、このあたりの認識が間違っているのかなと思っているのですが、 根本的な原因とその解決策が分からず困っています。 どなたかご教授くださいますと幸いです。 よろしくお願いします

  • セッションの破棄

    お世話になります。 現在セッションを使用してのPHPプログラムのコーディングに取り組んでおりますが、 なんとなくですがセッションのことはつかめつつあります。 そこで、基本的な質問になるのですが教えてください。 1.セッションは必ず破棄しないといけないのか。 私の想像としては、一定時間(20分くらいだったような…)またはブラウザを閉じたときにセッションが破棄されるものと思っていました。 ですが、ある掲示板で 「セッションが不要になった段階でセッションを破棄してください。  これをしないとサーバ上にセッションデータ(ファイル)がたまっていきます。」 という記述を見つけました。 必ずセッションというものは破棄しないといけないのでしょうか。

    • ベストアンサー
    • PHP
  • セッションの破棄

    いろいろとセッションの破棄を試みているのですがうまくいきません。 最初のページで setcookie("order",session_id()); として数ページこの情報を確認する形でページ遷移させています。 最終ページの処理の末端で session_start(); $_SESSION = array(); if (isset($_COOKIE[session_name()])) {   setcookie(session_name(), '', time()-42000, '/'); } session_destroy(); としています。 ところがセッション情報が消えていないためリロードするとメールが再送信されたり完了ページが表示されたりします。 なぜでしょうか?いろいろな情報を参考にしているのですが上手くいきません。 よろしくお願いします。

    • 締切済み
    • PHP
  • [PHP]セッション破棄について

    はじめまして。 phpを始めて1週間の初心者です。 現在、ホームページでログイン処理とログアウト処理をphpのセッションを使って作成しています。 今回質問させて頂くのはログアウト処理についてです。 ログアウト処理をでセッションを破棄する際に http://oshiete1.goo.ne.jp/qa3224862.html を参考にして下記の処理を行わせています。 -------------------- logout01.php -------------------- <?php session_start(); $_SESSION = array(); if(isset($_COOKIE[session_name()])){setcookie(session_name(),'',time()-4200,'/');} session_destroy(); header("location: http://~トップページのURL~/"); ?> -------------------- 確認をしたところ、ログインしたユーザの情報は削除されているようでした。 また、http://oshiete1.goo.ne.jp/qa3224862.htmlを参考に下記のようなログアウト処理も行わせてみました。 -------------------- logout02.php -------------------- <?php session_start(); unset($_SESSION['access']); header("location: http://~トップページのURL~/"); ?> -------------------- 同じく確認したところ、ログインしたユーザ情報は削除されているようでした。 -------------------- 環境 -------------------- <サーバ> 【OS】 windows XP(テスト環境)、CentOS 5.2(公開環境) 【PHP】 5.2.6 【Apache】 2.2 <クライアント> 【OS】 windows XP 【ブラウザ】 Firefox 3.0.8 IE 7 -------------------- -------------------- 質問 -------------------- (1)logout01.phpとlogout02.phpの違いは何でしょうか。 (2)「unset($_SESSION);」は使用すると「$_SESSION」が使えなくなるとのことですが、  それはphpを再インストールしない限りは使えなくなるということでしょうか。  それとも、ブラウザを再起動すれば使えるという意味でしょうか。 (3)「unset($_SESSION);」と「unset($_SESSION['access']);」では何が違うのでしょうか。 (3)セッションを使用するとサーバ側にセッションIDを保存したファイルが保存され、  クッキーがクライアント側に保存されるとのことですが、logout01.phpとlogout02.phpを  実行した場合、サーバ側のセッションIDを保存したファイルとクライアント側のクッキーを  保存したファイルは削除されているのでしょうか。 (4)セッションの有効期限を指定していないため、logout01.phpとlogout02.phpを実行せずに  ブラウザを終了させた時もログインしたユーザ情報は削除されているようでしたが、  この場合もサーバ側のセッションIDを保存したファイルとクライアント側のクッキーを  保存したファイルは削除されているのでしょうか。 初歩的な質問で申し訳御座いませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • ブラウザの戻るボタン

    いつもお世話になっております。 今回は戻るボタンについてお聞きしたいです。 ある認証が必要なページにログインし、作業終了後ログアウトを選択すると、ログイン認証画面に戻るものがあります。 このログイン認証画面に戻ってきた際、ブラウザの左上(IE,Firefoxの場合)にある戻るボタンを押下すると、ログアウト前の画面に戻ってしまいます。 そこで設定を変更したりなどはできませんが、できればその操作を無効にしたいのですが、ブラウザのボタンの操作を禁止したり、他の場所に飛ばしたりすることはできるのでしょうか? ご教授願います。

    • ベストアンサー
    • HTML
  • ブラウザを閉じてもセッションを残す方法

    質問させてください。 サーブレットを使用してWebアプリケーションを開発しています。 現在の設定では、ブラウザを閉じるとセッションが破棄されています。 これを変更して、ブラウザを閉じてもセッションをしばらくの間残しておくことはできないでしょうか。 以上よろしくお願いします。

  • セッション変数の破棄について、いまひとつスッキリしない部分があります。

    セッション変数の破棄について、いまひとつスッキリしない部分があります。どなたか詳しい方是非ご教授お願いいたします。会員サイトからログアウトするときは、$_SESSION=array(),session_destroy(),そしてクッキーの削除で処理をしてきました。特に問題なく動作をしておりますが、もしログアウト でunset($_SESSION[hogehoge])のように変数を破棄した場合、他のuserの$_SESSION[hogehoge]も削除されてしまうのでしょうか?この部分が、ず~っと疑問に残り解決できませんでした。PCが複数 台あれば、実験してたりかめることもできるのですが1台しかないのでそれができません。ネット上で ずいぶん検索して調べましたが、そこら辺のところをスッキリと理解できるように説明されたページも 見当たらないようでした。もしよいWEBがありましたら、そちらのWEBを紹介していただく形でも結構です。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 完全なセッション破棄をしたい

    現在運営中のアンケートフォームを改善したいと思い、質問させていただきます。 現在のアンケートフォームは、入力画面.php→確認画面.php→メール送信.php→完了画面.htmlの4ファイルで構成していて、画面としては3画面です。 また、入力値についてはセッション管理をしています。 メール送信後は、以下の命令でセッション破棄・完了画面.htmlの呼び出しを行っております。 $_SESSION = array(); session_destroy(); header("Location: 完了画面.html"); ところが、セッションが完全に破棄されておりません。 具体的にあげますと、完了画面でブラウザの戻るをクリックして確認画面.phpへ戻り、「ページの有効期限が切れています」と表示されるためリロードを行うと値が入った確認画面が表示されてしまうのです。 ページの有効期限が切れていますうんぬんはかまわないのですが、リロードした時に破棄したはずの値がなぜ表示されてしまうのでしょうか。 また、最終的に求めている「同じ内容が二重送信されないようにする」のために、どのように修正すればよいでしょうか。 アドバイス、お願いいたします。

    • ベストアンサー
    • PHP
  • phpでのログアウトについて

    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を使用した場合、どうやったらそのような仕組みになるのか考えた上で、 今のへんてこなログアウト処理プログラムに至りました。 ごちゃごちゃしていないもっと良いログアウト処理プログラムはないでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • Webブラウザの閉じるボタン無効化についての質問

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

専門家に質問してみよう