• ベストアンサー

Session切れ前にWarningメッセージ

教えてください。 Frameを使ったHTMLページ上で 暫く閲覧したり、操作しなかったりすると Timeoutになってしまいます。(外枠、親側です) SessionがTimeoutになる前にダイアログでWarningメッセージを出すような 参考プログラムがあれば教えていただけないでしょうか? プログラムの環境としては、Vbscript(ASP)です。 宜しくお願いします。

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

  • ベストアンサー
  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.2

考え方が違うような。 >>SessionがTimeoutになる前にダイアログでWarningメッセージを出すような SessionのTimeout時間設定はありますが、 SessionのTimeoutまでの残り時間をどこかで管理してるわけじゃないです。 そのため、どうしてもそれをやりたきゃ、 SessionTimeoutの管理 ページを開いてからの経過時間の管理 の二つをやる必要があるかと思います。 SessionTimeout設定を20分。 ページ開いてからの経過時間が19分になったらアラート表示とする。 とかみたく。 正直、面倒なんでやらない方がいいと思いますが。 http://www.ajaxtower.jp/js/window/index2.html なので、JavaScriptの方で、時間経過管理しといて、別管理してるSessionTimeout時間が来るよりも前にアラート出すようにしておいてやる。 ぐらいですね。 個人的には、Sessionなんて切れて当たり前のものなので、システム仕様として、無操作時に○分で接続情報の保持が切れますよ。 と明言しておいていいだろうと考えてます。 (予約系のシステムとか、よくありますよね。そういうの。 ローカルだから気にしない。とか、接続時間を気にしたくない。とかなら、 クッキーに入れてしまってから使う、SessionTimeout時間をもっとのばす。 あたりが妥当かな。と。 課題、だとか、どうしても必要。とかなら、上のように、時間をそれぞれ別管理して、仕方ないからJavaScriptで「もうじき切れると思うよ?」という メッセージを出すようにする。 もしくは。。。 サーバ上に、アクセス者およびアクセス時間、Session切れ警告時間等のデータを保持するようにし、クライアント側からは定期的に非同期でそのデータを参照させるようにし、 Session切れ警告時間こ超える場合、どうにかしてアラート文を出してやる。とか。 。。。わざわざやるようなことじゃないですね。。。

その他の回答 (1)

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

javascriptで setTimeout("Alert('そろそろ再読み込みしてね')", 29 * 60 * 1000) 普通はこんなことしない。 metaタグで定期的にリロードするとか Ajaxで定期的にリクエストを発行するとか(いわゆるハートビート)

関連する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プロシージャも呼ばれるまでは実行しないと思っています。 ただ、今の状態を見る限り、このあたりの認識が間違っているのかなと思っているのですが、 根本的な原因とその解決策が分からず困っています。 どなたかご教授くださいますと幸いです。 よろしくお願いします

  • 【緊急】セッション変数を別のサーバーに渡すことはできる?

    うまく説明できないかもしれないですが、説明します。 今、WEBサーバ と DBサーバ があります。 ASPはすべてWEBサーバにデータベースはすべてDBサーバにあります。 WEBサーバからDBはODBCを介して参照しています。 ASPで作ったログインページがWEBサーバ上にあります。 ログインした時、セッション変数を使ってログインし、 また、ある程度時間がたつとセッションが切れてログインページに 戻らせるような仕組みにしていて、全ページにその処理をいれています。 今、実現したいことは ログインページだけをWEBサーバに 置いたままにして、ASP(HTML)ファイルをDBサーバ に移動した後でも動かしたいのです。 (1)WEBサーバ上のセッション変数をDBサーバに渡してやりたいのですが、 可能でしょうか?可能ならばどのようにすればよいでしょうか? ASPで使っている言語はVBScriptです。 WEBサーバにはDBに関係ない、メニューなどだけを置いて DBに関係するページはDBサーバに置きたいのです。 OS WINDOWS2000 使用ブラウザ IE 3,4,5,6 (バージョンは特に今はどれでも構いません) どうか、どなたか手がかりだけでも教えて頂けませんでしょうか? よろしくお願い致します。

  • onloadにsessionの値を渡したい

    ページが表示されたときに ポップアップメッセージが表示されるよう考えています。 メッセージはsession変数に入っています。 onloadで表示させるにはどうすればよいでしょうか。 コードはhtmlとjavascriptとvbscriptです。 前の画面からserver.Executeで遷移します。

  • PerlでのSessionの使い方について。。。?

    こんにちは。よろしくお願いします。 ただいま、Perlの経験も無いのに、Perlのシステムを触って改版作業中です(涙(普段はASPで開発を行っています。 調べて、可能であろうことは分かった(?)のですが、技術と知識が足りないようです。力をお貸し願えませんでしょうか? 現状、やりたいことは、Perlのプログラムの中で、Sessionを利用したい。ということです。 もうちょっと前提の条件として。。。ASPのページから、ASPのSessionを保持したまま、Perlで呼び出してそれを使って~。。。とか、やりたいのですが、その前に、PerlでSessionの利用方法がイマイチ分かりません。 既存の、質問掲示板~のようなシステムがPerlで作ってあります。 そのトップページにあたるindex.plプログラム内で、「CGI::Session」を宣言して。。。 と、宣言した時点で、既にページが表示されなく。。。 参考サイトとして http://okilab.jp/project/document/japanate/perldoc/html/CGI-Session-4.14/CGI/Session.htm や http://okilab.jp/project/document/japanate/perldoc/html/CGI-Session-4.14/CGI/Session.htm あたりを見ているのですが、 最初に「use」で呼び出して~。。。が呼び出せない。。。? ということで、環境が。。。正しくない?のかと、いろいろと考えてはいますが、なんともなりません。 CGI::Sessionは、Perlが使える標準の設置状態から、追加で何かいれなくてはいけないのですかね?? 支離滅裂な文章になってしまいましたが、アドバイスいただけると幸いです。(ちなみに、一番の担当者がお休み中なため、自分が対応中です_no

    • ベストアンサー
    • Perl
  • ページを一度更新しないとSession値が渡らない。

    ASPで初めてプログラムしています。 A.asp → Err.inc → Err.asp というように、エラーがあったらErr.aspに 遷移するようにしているのですが、 Err.aspで更新ボタンを押さないとSession値が表示されません。 具体的に *** Err.inc *** <% Sub COMM_USER_ERROR(strMsg)   session("ErrMsg") = strMsg   'システムエラー表示   Response.Redirect("Err.asp")   Response.End End Sub %> *** A.asp *** If Request.ServerVariables("REQUEST_METHOD") <> "POST" Then   Call COMM_USER_ERROR("不正なアクセスをしました") End If *** Err.asp *** <HTML>   (中略)   <%=session("ErrMsg")%> どうしたらよいか全くわかりません。 どなたか教えていただけないでしょうか? よろしくお願いいたします。

  • セッションを利用するとフォームがクリアされる

    PHP 4.0.6 を使って HTML の FORMタグ を利用して、 登録ページ -> 確認ページ -> 登録完了 というようなページを作るとき、 登録ページでセッションを使っています。 すると、確認ページからブラウザの「戻る」を押すと、 入力した内容が全て初期化されてしまいます。 これでは、閲覧者が何度も入力しなければいけないので、困っています。 そこで質問なのですが、 これは、なぜセッションを使うとなるのでしょうか? また、これに対する何かよい解決方法はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Apacheでセッション管理

    スクリプトなどではなく、Apacheにセッション管理させる方法を探しています。 具体的には、たとえばログインしたユーザーだけアクセス可能なページを作る場合、通常ならスクリプトにてセッションIDをログオン時に発行、その後はセッションIDをチェックしてページを表示させますよね。 ところが、この「アクセス可能なページ」をスクリプトではなく通常のHTMLにしたいのです。 イメージとしては、Apache側でリクエストを受けた際にセッションID(CookieなりURLパラメーターなり)をチェックするような機能または外部プログラムを呼び出し、チェックOKなら何もしない、つまりリクエストどおりのHTMLを返す、チェックNGならログオンページにリダイレクトさせる、というようなものです。 mod_ext_filterを使って「セッションチェックプログラム」を呼び出すようにすればできそうに思うのですが、問題はApacheのバージョンが2.0.46のため、ExtFilterDefineにてmode=inputが使えないのです…。 代わりになるようなモジュール、あるいは代替案、というより一般的にこのようなケースではどういった方法がとられるのでしょう。 御教授のほどよろしくお願いいたします。

  • セッションの破棄

    セッションについて質問です。 $_SESSION['username']を複数ページで使用した後、破棄しようと思うのですが、エラーが出てしまいます。 セッション自体は破棄できていると思うのですが、これはどういったエラーなのでしょうか? ソースコード <?php session_start(); ?> <!DOCTYPE html> <head> <meta charset="utf-8" /> <title>セッション破棄</title> </head> <body> <?php //セッション変数を全て解除 $_SESSION = array(); //セッションクッキーの削除 if (isset($_COOKIE["PHPSESSID"])) { setcookie("PHPSESSID", '', time() - 1800, '/'); } //セッションを破棄する session_destroy(); if(empty($_SESSION['username'])){ echo "<p>セッション終了</p>"; echo "<a href='session.php'>はじめのページへ</a>"; echo "<a href='index.php'>top</a>"; } ?> </body> </html> エラーメッセージ Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/session3.php:1) in /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/session3.php on line 2 Warning: Cannot modify header information - headers already sent by (output started at /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/session3.php:1) in /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/session3.php on line 16 Warning: session_destroy(): Trying to destroy uninitialized session in /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/session3.php on line 20

    • ベストアンサー
    • PHP
  • 同一セッションIDのブラウザを複数開かせたくない

    ASP、ActiveXDLL、JavaScriptで作られているシステムのメンテナンスをしています。 DBはOracle9iです。 一部の大変複雑な処理をしているところや、画面遷移時に仮保存状態として処理するためにASPプログラム内でワークテーブルを作成し、そこに保存しております。 ワークテーブルは「IPアドレス+セッションID+元テーブル名」としており、IEで ・「Shiftキー+リンククリック」 ・「Ctrl+N」 ・「リンクを新しいウィンドウで開く」 などで、同一セッションIDでブラウザを複数画面操作できるので、その複数画面で同じプログラムで操作すると同じワークテーブルを扱い、おかしなデータができてしまいます。 多数のプログラムでワークテーブルを使用しており、ワークテーブルの名前を変更することは時間的に無理があるので、同一セッションで複数画面を開かせないようにしたいと思っているのですが、なんとか実現できませんでしょうか? よろしくお願いします

  • 1つの作業の制限時間を増やしたい

    ASPで1つの作業の制限時間を増やしたいと考えています. 具体的には,あるMs-ExcelファイルのデータをMs-Accessのデータベースへインポートしたいのですが,MS-Excelのデータ数が多い場合,「制限時間が超えたため・・・・(以下省略)」というメッセージが出てしまいます. Session.Timeoutの数値を増やしたのですが,やはり時間間隔で同じエラーメッセージが出ます. 質問として 1.Session.timeout数値を宣言する場所に決まりはあるのでしょうか? 2.Session.Timeoutで数値を設定することによって,ASP上でどのような変化が起こるのでしょうか? 宜しくお願いします. 開発環境 Windows2000 Server+SP3 MS-Access2000,Ms-Excel 2000