• 締切済み

IE8で2つのタブで同じサイトのアクセスを防止する

ASPサービスでシステムを運営しています。 ユーザーはログイン後、画面入力した情報を送信し、データベースに登録します。 1人のユーザーが2回ログインして、2つの画面(タブ)を表示して、操作すると、データベースアクセスエラーが発生することがあります。これを防止するために、2つの対応を考えています。 (1)現在ログイン中のユーザーが、再ログインしてきたとき、警告メッセージを表示する。 (2)警告メッセージを無視してログインした場合、  ユーザーがログインするごとに異なる「ログイン番号」を付与して、ユーザー情報DBに保存し、  画面情報の中にも「ログイン番号」をもたせてPCに送る。(hiddenで)  Submitするときは「ログイン番号」を一緒に送信する。  サーバーに送られてきたデータのユーザーIDと「ログイン番号」を、  保存してあるユーザー情報DBの内容と照合し、不一致の時は、  「ログインしている画面と異なるので画面を閉してください。」とメッセージを表示する。 教えていただきたいこと。 (1)もっと簡単な方法をご存知であれば教えてください。 (2)この方法ではこのような場合にうまくいかない(欠点)、考え不足の点、注意点 などありましたら教えてください。 よろしくご教授のほどお願いします。

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

クライアントにブラウザを使う以上、1ユーザ1端末限定というのは無理があります。 専用のクライアントを使うシステムであれば ウィンドウが閉じられたタイミングで ユーザのログインを自動切断するとかの処理とかいろいろできますが ブラウザでは 難しいです。 ログアウトせず その後PC再起動して ログインすると警告されてログインできないとかの トラブルが発生しそうです。 多人数が同時使用するシステムであれば そもそもスレッドセーフで設計されているはずです。 同じユーザが同時操作して発生するエラーが何か判りません(デッドロックやデータ不整合?) がそのエラーが発生しないよう 排他処理やデータの整合チェック等の設計を見直された方が よろしいのではと考えますがいかがでしょうか。

Horirin39
質問者

お礼

ご丁寧なご回答ありがとうございます。 実は、データの不整合が発生し、その設計を見直してきた結果、最後に一番難しい1ユーザー2重ログイン(タブで2画面出した場合)の対応をしなければ解決できないことがわかったのです。 よろしくお願いします。

関連するQ&A

  • ログイン画面作成

    ASP.NETの初心者ですが、ログイン画面の作成取り掛かっています。 しかし、プログラミングの部分まったく進みません。。 機能としては、 初回起動のときデータベースとの接続を行う。 接続成功の場合はログイン画面を表示する。 失敗の場合はエラーメッセージを表示する。 ログインボタン押下 ユーザID入力あり チェック:半角や桁数チェック(false) エラーメッセージ パスワード入力あり チェック:半角や桁数チェック(false) エラーメッセージ DBに登録されているユーザIDとパスワードと一致するとき セッション変数に ユーザIDの値を設定する。 次の画面(メニュー)に遷移する。 一致しなかった場合 ログイン画面に最遷移 環境は.NET2003 DB: Access 言語VB 大体でいいですが、どういうふうにやるのか教えていただけませんか よろしくお願いします。

  • サイトアクセスで暗証番号が認証されません。

    お世話になります。 最近XPから7へPCを変え、IE9を使用する事になりました。  しかし、サイトアクセスにおいて暗証番号が必要な特別サイトのいくつかが、 暗証番号を認証されず入室出来ません。 セキュリティか何かが邪魔をしていると思うのですが・・・。 Windowsセキュリティ 警告:このサーバーは、ユーザー名とパスワードを安全ではない 方法で送信することを要求しています。 (安全な接続を使わない基本的な認証) と言うメッセージが表示されます。 ※誰か対策をお教え下さい。

  • Access2000データベースのロックについて

    実は少し前ASPのところで質問した内容に似ているのですが いまだ解決できず困っています。 内容は社員番号入力し表示された詳細を編集させる 処理なのですが、既に別のマシンから開かれている(表示されている) 社員番号の情報を取得する方法はないのでしょうか? 「既に別の人が編集中です。」のようなメッセージや 開く事はできてもなんらかのメッセージが画面上のどこかに表示 されて保存ボタンを押せなくなる等の処理をさせたいのですが。 社員番号等のデータをロック情報として別テーブルにもつ方法が あると思うのですが異常終了時に情報が残ってしまうような気がして 気がすすみません。(データベースの構造はなるべく変更したくない) 参考になるホームページやキーワードだけでも構いませんので よろしくお願いします。 Windows2000sp2 VB6sp5 ADO2.5 DAO3.6

  • wp-config.phpで保存するのでしょうか?

    // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define('DB_NAME', 'wordpress'); /** MySQL データベースのユーザー名 */ define('DB_USER', 'kouzou'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', 'rhythmkt0'); /** MySQL のホスト名 */ define('DB_HOST', 'localhost'); /** データベースのテーブルを作成する際のデータベースの文字セット */ define('DB_CHARSET', 'utf8'); /** データベースの照合順序 (ほとんどの場合変更する必要はありません) */ define('DB_COLLATE', ''); 以下にデータベース接続のための詳細を入力してください。これらのデータについて分からない点があれば、ホストに連絡を取ってください。 データベース名 wordpress WordPress で使用したいデータベース名。 ユーザー名 kouzou データベースのユーザー名。 パスワード rhythmkt0 データベースのパスワード。 データベースのホスト名 localhost localhost が動作しない場合には Web ホストからこの情報を取得することができます。 テーブル接頭辞 wp_1 ひとつのデータベースに複数の WordPress をインストールしたい場合、これを変えてください。 wp-config-sample.phpを上記のように入力してwp-config.phpで保存するのでしょうか? LinuxMintを使っています。 いつも、マグレでここをパスしてたのですが理屈を分かっていません。 どなたかアドバイスをください。 宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • 特権ユーザ情報の復元につきまして

    MySQL4.1+CentOS4.4+Apache2.0にてデータベース(12データベース)運用をしています(root nonpass)。 今回、誤って以下のオペレーションをしてしまいました。 ------------------------------------------------------------- phpMyAdminにて、 [特権]--->[ユーザをすべてチェック]--->[グローバル特権をすべて削除]--->実行 ------------------------------------------------------------- すると、phpMyAdminiのデータベースが表示されなくなり、赤字で「特権無し」の表示がされました。 コマンドラインにて、ログイン(root)したところ、 show databases; にて、DBが表示されなくなり、Grantコマンド、Create Userコマンドを実施してみたのですが、rootユーザ自体の権限がないもので、すべてのコマンドが弾かれてしまいます。 /var/lib/mysqlディレクトリにDBファイル(.MYD形式等)を保存しているのですが、こちらのDBファイルは、存在しています。 この状態からrootユーザ情報を復元するにはどうすればよいでしょうか。

  • 大量データの受け渡し

    DBより検索したデータを一覧表示し、そのデータをcsvファイルへ保存しています。 DBの検索時間が結構かかってしまうため、保存する際に、再度検索を行うのは避けたいと考えています。 そこで、<input type=hidden name=data>に、データをセットして送信していたのですが、 件数が多すぎるとエラーとなってしまいます。 画面上に、送信データが見えなければどんな方法でもかまいません。 どなたかいい方法を教えて下さい。 宜しくお願い致します。

  • Accessでアンケート集計を構築-作成ヒントをください

    Accessでアンケート集計を行うデータベースの構築を考えています。 しかし、データベースの構築知識に浅く上手く目的のものを作れないので少しお力添えいただけないでしょうか? このデータベースは200人のユーザーに対して行うのを目的にしています。 具体的な集計作業については結果をExcelにインポートすれば事足りると考えていますので具体的にはどのユーザーがどの問いに対して3択でどの回答をしたかが判断できればよいという風に思い次のようなテーブルを作りました。 ・T_ユーザーマスタ(ユーザーコード,ログイン名,部署ID,etc) ・T_部署マスタ(部署ID,部署名) ・T_ユーザー回答マスタ(ユーザーコード,問1回答~問10回答) これらに対して参照整合性を設定しています。 あとはフォームをつくり、WindowsのログインIDを取得して一致するログイン名のフォームが表示されドロップダウンでアンケートの回答を選択、送信ボタンで入力完了という風に出来ればいいのですが・・・ まずフォームに回答群を表示させるために、以下テーブルをつくりました。 ・T_問題回答群マスタ(問題番号,選択番号,回答) *一つの問題に対して選択が3つあるので問題番号と選択番号を主キーに設定しています。 実際、アンケートフォーム上でなんとかこれらの回答群を上手く読んでくることは確認できましたが、送信ボタンを作りマクロでデータの入力を設定してもリレーションシップを設定していないので目的のテーブルに対して入力が反映されません。 そこでリレーションを設定しようと思うのですが・・・どうしても・T_問題回答群マスタと既存のテーブルとの間のリレーションシップがの関係が頭でもPCでも作れなくて困っています。 そもそも作り方がまずいのか、はたまた発想の転換で解消できるのか、それすらも浅すぎてわかりません。 そこで以下についてお聞かせください。 (1) そもそもこういう作り方で問題ないのか、このデータベースのテーブル作成(正規化)についてのヒントをください。 (2) 「WindowsのログインIDを取得して一致するログイン名のフォームが表示されドロップダウンでアンケートの回答を選択、送信ボタンで入力完了」このイメージは現実的でしょうか?ExcelではVBAでなんとか出来ましたが、Accessでやる場合の注意点や作成のヒントをお願いします。 何しろデータベース慣れしていません。足りない知識は努力でカバーしますので、ここはこれを使うとか、これをググったらわかるとかヒントをください。お願いします。

  • 色んなサイトにアクセスしたときに

    携帯電話情報を送信しますか?という表示がされる時があるんですが、携帯電話情報とはメールアドレスや電話番号のことでは無いんですかね?携帯電話情報とは何ですか?携帯電話

  • ACCESS2000、データベース破損?修復可能?

    ACCESS2000を使用しています。セキュリティ設定したデータベースファイルを社内で共有し、使用していたのですが、突然開けなくなりました。開こうとした時に起こった現象は次のとおりです。 (1)警告メッセージ「、Micrsoft ACCESS データベースが開いている時に、いずれかのユーザーがMicrsoft ACCESSを終了しました。修復しますか?」が表示され、はいと答える。 (2)警告メッセージ「オブジェクト’Databases’が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。」と表示され、OKと答える。 (3)エラーメッセージ「データベース’(パス名.ファイル名)’は修復できないか、Micrsoft ACCESS データベースファイルではありません。」と表示され結局開けない。 エクスプローラーからデータベースファイルを見たところ、ファイルサイズが1/10くらいになっていました(!)この状況から修復は可能でしょうか?バックアップはここのところとっておらず、四苦八苦している状況です。どなたかご存知の方、宜しくお願い致します。

  • StrutsでDataSourceの切り替え

    Tomcat4 + Struts1.1にて、ログインした人の種別により接続するDataSourceの切り替えを行いたいのですが、このようなことは出来るのでしょうか? -------------------------------------------- 例:ユーザA、ユーザBで接続するDBを変更する。 -------------------------------------------- 1.データベースに2つのDataSourceを用意する。   ※以降DB1,DB2とする。    中のテーブル設定は全く同じとする。 2.ユーザAがログインした場合はDB1のhogeTableを、   ユーザBがログインした場合はDB2のhogeTableを   参照してデータを取得する。 -------------------------------------------- 要は、1つのシステムでユーザ毎にデータベースが分かれている為、ログイン情報によってどのデータベースを参照するかを切り替えたいのです。 (こうすればテーブル名は同じの為、データアクセス部分は共用できると考えています。) Struts-configには複数のDataSourceが設定できますが、こちらをどうやって切り替えれば良いのかが分からずに困っています。 (また切り替え以外での対応方法はあるのでしょうか?) こちらの件で、どなたかご存知の方、もしくは詳細な説明が記載されたHPを知っている方がおられましたら、教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう