• ベストアンサー

ASP セッション無効時でのDB操作方法

過去の投稿で多重ログイン制御の延長で、ログイン制御をDBにて管理することになりました。 問題はログアウトせずにブラウザを落とされた場合ですが、とりあえずはセッションの有効時間が経過した場合にDBから削除する仕組みにしようかと思っています。 現在その仕組みをサイトなどで調査していますが、それにふさわしいサイトがみつからず、悩んでいます。 セッション落ちのイベントなどはどのようにして取得するのでしょうか。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

マニュアルによると次のように書いてあります。 Session_OnEnd イベントは、セッションが破棄されたとき、またはタイムアウトになったときに発生します。サーバー組み込みオブジェクトのうち、Application オブジェクト、Server オブジェクト、および Session オブジェクトだけが利用できます。 構文 <SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Session_OnEnd . . . End Sub </SCRIPT>

soushi_ni
質問者

お礼

ありがとうございます。 自身もう少しサイトの調べ方を考えて対応します。 多用されている工程なだけに勉強や調査の方法を考えます。すみませんでした。

その他の回答 (2)

  • sam_inoue
  • ベストアンサー率47% (27/57)
回答No.3

>Global.asaのSession_OnEnd 答えは出ているようですね。 このイベントに入った時点ではSession変数は生きているので ユーザーIDなどを受け取ってログアウト判定に戻せば良いです。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

Global.asaのSession_OnEnd

参考URL:
http://www5a.biglobe.ne.jp/~n_rieko/asp/14.htm

関連するQ&A

  • 多重ログイン防止するための開発について

    ASPの社内システムで、多重ログインを防止をするのですが、社内環境によってDHCP(ランダムのIP)を採用している場合があり、DBなどでIPを管理するマスタでは対応しきれません。 この手の開発の実例は当然あるかと思われますが、 上記のようなシステム構築においてどのようなシステム設計が妥当でしょうか。 ご教授をお願いいたします。 ルール) ・ログイン状況をDBで持たせるのは可能 ・Sessionでのログイン状況を持たせるのは可能 ・cookieでのログイン状況を持たせるのは不可 ・ログイン状況の有効が切れる条件としては以下の3点  1:ログアウトをした場合  2:放置された状態で30分経過された場合  3:ブラウザを閉じられた場合 以上です。 大変お手数をおかけしますが、宜しくお願いします。 なお、情報不足の場合は随時補足いたします。

  • セッションの有効期限の設定方法とログアウト方法

    会員システムをPHPのセッション管理を使って作っているのですが、 1.セッションの有効期限の時間を変更するためにはsession_cache_expireを使うんだと思うんですが、これは全ページのsession_start()の前に書かないといけないのでしょうか? それとも、ログインするときに必ず通るPHPファイルに書いておけば大丈夫なのでしょうか? 2.会員ログアウトをする場合は、 unset($_SESSION['****']); でログインするときに入れた変数をunsetするだけで大丈夫なのでしょうか? もっと他に一般的な方法があったりするのでしょうか? どちらかだけでもお分かりの方がいれば教えていただければうれしいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 多重ログインを禁止にしたいのですが…。

    多重ログインを禁止にしたいのですが…。 C♯、ASP.NET、DBはPostgresSQLという環境です。 WEBを作っているのですが、ログイン周りで悩んでいるので教えてください。 要件としては、多重ログインは許可しない、同一IDでログインに成功した場合、 先に入ったほうは強制ログアウトという話です。 たとえば、ユーザAがログインした後、別の端末からまたユーザAでログインすると、 最初にログインしたほうはログアウト状態になります。 ログイン情報を管理するテーブルを用意して、ログイン成功時に、そのユーザが ログイン中のステータスだったら…とか考えてみたんですが、強制ログアウトへ もって行く仕組みが思いつかず…。 何か手がかりや、参考サイト、またはサンプルなどアドバイスいただけないでしょうか。 宜しくお願いします。

  • PHP 不要なセッションファイルの対応方法について

    セッションファイルの管理方法について、どなたかご教授願います。 現在セッションファイルを生成し、ログアウト処理時に、 session_destroy()関数を使用しています。 通常にログアウト処理が行われれば、良いのですがブラウザ事態を 閉じた場合、セッションファイルは残ったままになります。 PHPやApacheの設定などで簡単に管理できる方法は無いものでしょうか? なるべく、バッチやモジュールを追加しない形で進めていきたいと思っています。 以上です。

    • 締切済み
    • PHP
  • ログインしたら他からログインできないようにしたい

    PHP+MySQLで会員サイトを作っています。 1. 誰か一人がログインしていたら、そのログイン会員と同じIDとパスワードでログインしようとするとログインできないようにするか、元のログインしていた人が強制的にログアウトするようにしたい。 2. 一人のユーザーが複数アカウントを作って会員サイトを使いたい放題にするのを阻止したい。 そのため、「PC1台からは必ず1ユーザーのみしかログインできないようにしたい」です。 (複数PCを使われたら仕方ないかもしれません・・・) よく銀行サイトのようにログイン中に他のブラウザや端末からログインしようとすると「すでにログイン中です。ログインし直しますか?」のようになりますが、1.はこんな感じを考えています。 仕組みとしてはどのようにするのが良いのでしょうか? 1. ログイン時にセッションIDを作り、データベースにそのセッションIDとIPアドレスを記憶しておいて、Web上で何か操作するたびにブラウザ側のセッションIDとデータベース側のセッションIDを比べて同じなら操作を実行し、違うなら操作できないようにする。 2. ログイン中に別のブラウザからログインしようとすると、データベース側に保存されているセッションIDが違うのでログインできないようにする。 3. 同じIPアドレスですでにログイン中の場合、同じPCからは他のアカウントでログインできないようにする。 こんな感じでしょうか? 何か問題点やそもそもこの仕組は間違っていて常套手段があるなどありましたらお教えください。 なんとなく、IPアドレスのチェックはWiMAXなどは時間とともに変わったりするのであまり良くはないかもしれません。 どうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • Perlでのセッション管理と不要セッション削除について

    いつもお世話になっています。 Perlにてセッション管理(ログインして、サイト内はユーザーIDなどを持ちまわるような)を行おうとしています。 CGI::Sessionを使用して実現できると思っているのですが、 疑問があります。 セッション情報の持ち方は、サーバー内にファイルか、DBに格納する ことになると思いますが、不要になったファイルやレコードは、 みなさんどうされているのでしょうか? (ログアウトボタンがあっても、ブラウザの閉じるボタンを押される ケースが多いと思いますので、必ずdelete()はできないですよね?) 削除バッチなどで定期的に削除することを考えていますが、 もっとスマートなやり方があればご教示いただければと思います。 よろしくおねがいします。

  • PHPのセッション変数の無効化について

    ウェブアプリケションでPHPのセッション変数を使って、ログイン時のユーザ名を保持させ、ページ切替の際のログインチェック処理に利用をしているのですが、特にこの制御で問題はないのですが、会員さんの一人の方なのですが、ログイン後に、会員メニューが全て利用できない症状が起こったのです。 参考までに、その方のパソコンの環境ですが、 OS:WindowsXp(SP2) ブラウザ:Internet Explorer 6.0 ウイルスチェックソフト:ソースネクスト社のウイルスセキュリティZERO です。会員さんの話では、上記のウイルスセキュリティZEROを入れる前はウイルスバスターをインストールして利用していてそのときには問題なく利用できていたとのことです。 確認の意味で、一度そのソフトをアンインストールして再起動させて確認しましたが、症状は同じです。 原因はログイン後にそのパソコンだけセッション変数が無効になっているか、もしくはその症状を引き起こす設定がOS上になされているか、その辺に原因があるとみています。ログインできないのであれば、HTTPS(443ポート)が閉じられている可能性もあるわけなのですが、そのあたりは全て問題がありませんでした。 そのパソコン以外で、同じ事務所内の同じソフトを入れているパソコンで同様なテストをしましたが、問題ありませんでした。 ウイルスバスターをアンインストールして、現在のウイルスセキュリティZEROをインストールするあたりでなにかの設定が変わったのか、故意に会員さんの方で変えてしまったのかはこちらでは判断できないので、セッションを無効にしている原因さえ分かればなんとかなるのですが、同じような症状に遭われた方はいらっしゃいませんか? 一番早いのはリカバリさせて新規にウイルスセキュリティZEROをインストールして確かめるに越したことはないのですが、会員さんの方からはそれだけは勘弁してくれと言われまして、いきづまっている状況です。 それでは、アドバイスの方、何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • F5でリロードしないとセッションがきれない

    ログイン画面を作成しており、ログイン画面を表示した時点でセッションを値なしにしています。 各処理画面にはglobal.asaにおいてセッション値の有無を確認し値なしの場合にはログイン画面にリダイレクトするようにしています。 またメニューバーにログアウトのハイパーリンクを設置しログイン画面を呼び出しています。 通常の処理ならば (1)ログイン画面→(2)各処理画面→(3)ログアウトといった感じで最終的にセッションを切り、(2)各処理画面に移動しようとしてもログインしない限りは処理画面に移動できません。 ブラウザをたちあげてから(1)(2)(3)の処理を動かす分には問題ありません。しかし、(3)ログアウト後に再度ログインしごちょごちょした後、(3)ログアウトしても(2)各処理画面に移動できてしまいます。これはセッションを切るロジックを通っていないようです。条件で通っていないとかではなく、何故か通っていないのです。何故でしょう?? ためしに既に画面を表示している状態で適当な文字をログイン画面のロジック内に記入し、ログアウトのハイパーリンクを押しても表示されません。F5キーを押した時のみ表示されます。※Ctrl+N で新規ウィンドウを表示してもでません。 よろしくお願いします。 最悪、解決できない場合はハイパーリンクを押した時にF5キーを押したようなイベントを使用したいのですが、もしこういう処理があるのなら教えてください。 よろしくお願いします。

  • wikipedia

    数日前からwikipediaでログイン後にページを移動すると 勝手にログアウトしてしまいます。 ログインしてログイン完了のページが出て 何か一つでも次のリンクを踏むとログアウトしてます。 ログイン・セッションに問題が発生しました。 セッションハイジャックを防ぐために操作は取り消されました。 ブラウザの「戻る」を押して直前のページを再度読み込んだ後に、 もう一度操作を行ってください。 と表示されます。指示通りやっても再度ログアウトします。 ブラウザの情報やらをオールクリアすると 1度だけ正しくログインできるのですが、自分でログアウトすると また同じように最初の勝手にログアウトする状態に戻ります。 原因がわかりません・・・。

  • PHPのプロセス滞留について

    PHPで会員用ページにPostgresを通してログイン後、DB検索ができる システムを作っています。 ログイン後、会員の方がログアウトせずにブラウザを 閉じた際にプロセスが滞留し続けDBの処理が重くなっていきます。 ブラウザを閉じた時点でログアウトとみなすコードはありますでしょうか。

    • ベストアンサー
    • PHP