• 締切済み

同一セッションIDのブラウザを複数開かせたくない

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

みんなの回答

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.2

・ウィンドウタイトル以外表示させない ・右クリック、ショートカットキーを動作できないようなスクリプトを埋め込む。 しかない。

kenthy
質問者

お礼

回答ありがとうございます。 スクリプトを探してみます。

  • LemonT
  • ベストアンサー率49% (39/79)
回答No.1

はじめまして。 >多数のプログラムでワークテーブルを使用しており、ワークテーブルの名前を変更することは時間的に無理があるので、同一セッションで複数画面を開かせないようにしたいと思っているのですが、なんとか実現できませんでしょうか? 同一セッションで複数画面を開かせないようにする、これは無理だと思います。 時間が許すのであれば、「IPアドレス+セッションID+元テーブル名」に、時間(通算秒など)の概念を追加するとかで対応するしかないのでは。。。

kenthy
質問者

お礼

回答ありがとうございます。 もう少し他の手を考えてみます。

関連するQ&A

  • セッションIDの桁数

    WebサーバーはWindows2003サーバーです。 VBScriptのaspファイルで画面と処理を作成しています。 セッションIDを取得してみたら 9けたの数字が返ってきました。 この"9桁"という設定はどこにあるのでしょうか。

  • セッションIDについて

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

  • セッションIDについて

    セッション管理について、まったく経験がないので、アドバイスお願いいたします! 現在のWEBシステムですが、なぜかIPアドレスのみでしかアクセスできない作りになっています。 それでは困るので、ドメイン名でアクセスできるようにと改修をお願いしたところ、 今度はドメイン名のみでしかアクセスできないがいいか?・・・と質問が届きました。 普通、WEBシステムを使うほうから考えますと、 IPでアクセスしようが、ドメインでアクセスしようが どちらでも動くのが当たり前のように思うのですが。 プログラムの作りでそうなってるのかもしれませんが これって変ですよね? それともよくあることなのでしょうか? 理由を確認したところ、 サーバ名を用いたURLでの構築を行っていないため、ページ遷移を行うとログインエラーが発生する箇所があるとの事。 システムは管理者の機能と一般の機能があり、当然別々の動きをしなければならないのですが 推測するに、IPアクセスだったら管理者、ドメイン名だったら一般というような判断をしているのでは?と思われます。 IPアクセスのみというのを知らずに、ドメイン名でアクセスして試験をしていたら 途中でURLがIPに変わり(cgiでphpが動いて)、エラーになったのです。 session情報は同ドメイン上で有効であるため、 IPでアクセスした場合とドメイン名でアクセスした場合ではセッション情報を引き継げないため、 ログイン情報無しと判断されるため・・・ が原因ということなのですが 実際、SESSIONIDにはどんな内容が入ってくるのでしょうか? 管理者と一般のふたつの機能をセッションIDを使って、切り分けるのはできないことなのでしょうか? セッションIDは使ったこともないので問題外かもしれませんが 自分だったら、今は管理者、今は一般・・・というような情報をhiddenに持つとか、 リンクできる情報をテーブルに持つとかするかな... なんて思いながら、セッションID ってこんな時、どうやって使うのかな? と疑問だらけです。 セッションIDを使って、ふたつの機能を使い分けることはできないのでしょうか? または、ふたつの機能を切り分けできる他の方法などありましたらアドバイスいただけないでしょうか?

    • ベストアンサー
    • CGI
  • JSP内で、アクションによってセッションをクリアする方法

    はじめまして。 Java(struts)とJavaScriptを使用し、プログラムを作成しています。 サーバー側の処理で、セッション領域に必要な情報をセットし、その情報を画面表示の際に使用しています。 ひとつの画面から、複数のアクションを飛ばす画面で それぞれは、JavaScriptによって分岐しアクションを選択する形になっています。 表示された画面から、指定したアクション以外のアクションで、別の画面に遷移しようとした際に、 セッション領域をクリアする処理が必要なため、色々と探しているんですが、なかなか思うように情報が集まりません。 JavaScriptでセッションを操作する。 又は、指定された画面以外に遷移する場合に、 セッション内容をクリアする方法、どうかご教授お願いいたします。 環境: Java1.4.2_09 struts 1.2.7 tomcat 4.1.33

    • ベストアンサー
    • Java
  • 複数のセッションを同時に発行できますか?

    要点:: PHPで複数のセッションを同時に発行できるのでしょうか?? もしできるのであればその方法が知りたいです。 説明:: http://q.hatena.ne.jp/1135082837 のような感じでメール認証を行うために 固有のキーをつけたURLを同時に複数のユーザーに発行したいです。 コレだけだとリンク先の方法で可能だったのですが、以下の条件があります。 ・同時に複数のユーザーに発行する(←コレも上記リンクで可能) ・SID(session_id)をつけてPHPのセッション機能を利用する(←コレは一人分だけなら可能でした*後述) ・ユーザーごとに別のセッションを発行する(←ここが問題になっています...) セッションを利用しての登録は ●セッションID付のURLをメール送信  ↓ ●新しいsession_idを古い物を削除せずに発行(session_regenerate_id()) とすることで可能だったのですが、 複数のユーザーに同時発行しようとしてloopさせてもセッションIDがひとつしか発行されません。 (同一スクリプト内だとsession_destroyなどを行っても同じsession_idが発行される) セッションがらみで参考にしているのは以下のサイトです http://search.net-newbie.com/php/ref.session.html セッションはそういう使い方はできない (原則的に1つしか発行できない)のでしょうか? よろしくおねがいいたします。

    • 締切済み
    • PHP
  • セッションが正しく更新されない??

    セッションが正しく更新されない?? 1.2つの画面(どちらか)を表示するphpファイルのところでセッションを1に設定する。 2.ある画面を表示しボタンを押すとある処理を行うと同時にセッションを99にする。 3.1.の画面のどちらかに遷移する。(この時点でセッションは1) 4.2の画面を表示する。(処理は行わないのでセッションは99にならず1のままのはず) …なのにセッションが99になっている。。なぜなのでしょうか? どなたかご回答をお願い致します。

    • 締切済み
    • PHP
  • ログ書込機能を追加したいが、効率的に行いたい

    現在、ASPで作成しているシステムがあります。 ・最初にログインページがある ・ログイン後の画面はフレームで別れている ・メニューからの画面遷移はJavaScriptにより  frame src を変更することにより実現している。 ・メニューから遷移できる画面数は200画面ほど このシステムにログ機能をつけることになりました。 ログはメニュークリック時(画面表示しただけ)で良く、ログにはセッションIDやそれぞれの画面に設けているプログラムIDを記録します。 ログ出力はDBに、ActiveXDLLにて実現 (ASPからは必要情報を引数で渡して関数呼び出しするだけ) この条件で、各画面ごとにログ出力関数呼び出しをいれずにシンプルな変更で済ませたいと思っています。 いい方法はないでしょうか? global.asaではログインの時のみしか記録できないですよね?

  • perlにおけるセッションIDについて

    sessionIDがページを更新するたびに変わってしまいます。 その結果、前回セッションに保存した値を読み込めません。 my $cgi = new CGI; CGI::Session->name("SESSION_ID"); my $session = new CGI::Session("driver:File", $cgi, {Directory=>'./session'}); print $session->header(-charset=>'UTF-8'); print $session->id(); print $session->param("name"); #表示されず。 というようにしてセッションIDを表示すると、毎回変化します。 どうしたらIDを変わらないように出来るでしょうか? ちなみに、セッションに書き込むのは、 my $cgi = new CGI; CGI::Session->name("SESSION_ID"); my $session = new CGI::Session("driver:File", $cgi, {Directory=>'./session'}); $session->header(-charset=>'UTF-8'); $session->param("name", "abc"); $session->flush(); undef($session); こんな処理をしてます。

    • ベストアンサー
    • Perl
  • JAVAのセッション変数の上書きについて

    JAVAのセッション変数の上書きについて ある画面からセッションに"Data1"というキー名でデータを保存しています。 操作1、画面1で"Data1"をgetし、Data1の中身を変更後、処理の最後にこの"Data1"をセッションに保存 操作2、画面2で画面1の最後に保存したData1を使用して画面表示 操作3、画面2でボタン押下すると再度、Data1を取得して処理を行う。 上記のように別の複数の画面(同一Window)でこの"Data1"を使用するのですが 操作1の処理中(長時間かかる)に画面をCloseして、 まったく関係ない情報に対して画面2を表示すると画面表示時は画面とData1は同期が取れているのですが 操作1の終了後に"Data1"が上書きされてしまい、画面表示内容とセッション変数Data1の内容が 不一致を起こしてしまいます。 なにか良い対策方法がございましたら、ご指導お願い致します。 もうひとつ、session.getAttributeで変数取得後にセッション変数が上書きされた場合 、取得したデータには影響ありませんか?

  • 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を表示しなくなる方法がありましたら 教えてください。よろしくお願いします。

専門家に質問してみよう