(57)【要約】【課題】クライアントからの２重送信を、より容易に、より効率良く、サーバ側で検出する。【解決手段】情報処理装置２は、端末１から要求を受け付けて、乱数を生成する乱数生成ステップと、生成した乱数を乱数記憶部に設定する設定ステップと、生成した乱数を端末に送信する乱数送信ステップと、乱数送信ステップで送信した乱数を含む送信データを端末から受信する受信ステップと、送信データに含まれる乱数と前記乱数記憶部に設定された乱数とが一致する場合、送信データを初回の送信と判別して乱数記憶部の乱数を削除するとともに、送信データに含まれる乱数と乱数記憶部に設定された乱数とが一致しない場合、送信データを２重送信と判別する判別ステップと、を行う。【選択図】図１
2006260295.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置が行う２重送信判別方法であって、
前記情報処理装置は、乱数を記憶する乱数記憶部と、処理部と、を有し、
前記処理部は、
端末から第１の要求を受け付けて、前記乱数を生成する乱数生成ステップと、
前記生成した乱数を前記乱数記憶部に設定する設定ステップと、
前記生成した乱数を前記端末に送信する乱数送信ステップと、
前記乱数送信ステップで送信した乱数を含む第１の送信データを、前記端末から受信する第１の受信ステップと、
前記第１の送信データに含まれる乱数と前記乱数記憶部に設定された乱数とが一致する場合、前記第１の送信データを初回の送信と判別して前記乱数記憶部の乱数を削除するとともに、
前記第１の送信データに含まれる乱数と前記乱数記憶部に設定された乱数とが一致しない場合、前記第１の送信データを２重送信と判別する判別ステップと、を行うこと
を特徴とする２重送信判別方法。
【請求項２】
請求項１記載の２重送信判別方法であって、
前記乱数送信ステップは、前記第１の要求に対する応答情報の中に、前記生成した乱数を隠しデータとして設定し、前記乱数を設定した応答情報を前記端末に送信すること
を特徴とする２重送信判別方法。
【請求項３】
請求項１記載の２重送信判別方法であって、
前記端末から前画面へ戻る第２の要求を受け付けて、前記第２の要求に対応する前画面の画面情報の中に前記生成した乱数を隠しデータとして設定し、前記乱数を設定した前画面の画面情報を前記端末に送信する前画面送信ステップと、
前記前画面送信ステップで送信した乱数を含む第２の送信データを、前記端末から受信する第２の受信ステップと、をさらに行い、
前記判別ステップは、前記第２の送信データに含まれる乱数と前記乱数記憶部に設定された乱数とが一致するか否かを判別すること
を特徴とする２重送信判別方法。
【請求項４】
請求項１記載の２重送信判別方法であって、
前記情報処理装置は、前記端末毎に前記乱数記憶部を有し、
前記第１の送信データは、株の発注データであること
を特徴とする２重送信判別方法。
【請求項５】
２重送信を判別する２重送信判別装置であって、
乱数を記憶する乱数記憶手段と、
端末からの要求を受け付けて、前記乱数を生成する乱数生成手段と、
前記生成した乱数を前記乱数記憶手段に設定する設定手段と、
前記生成した乱数を前記端末に送信する乱数送信手段と、
前記乱数送信手段が送信した乱数を含む送信データを、前記端末から受信する受信手段と、
前記送信データに含まれる乱数と前記乱数記憶手段に設定された乱数とが一致する場合、前記送信データを初回の送信と判別し、前記送信データに含まれる乱数と前記乱数記憶手段に設定された乱数とが一致しない場合、前記送信データを２重送信と判別する判別手段とを有し、
前記送信データを初回の送信と判別した場合、前記設定手段は、前記乱数記憶手段の乱数を削除すること
を特徴とする２重送信判別装置。
【請求項６】
情報処理装置が実行する２重送信判別プログラムであって、
前記情報処理装置は、乱数を記憶する乱数記憶部と、処理部と、を有し、
前記処理部に、
端末から第１の要求を受け付けて、前記乱数を生成する乱数生成ステップと、
前記生成した乱数を前記乱数記憶部に設定する設定ステップと、
前記生成した乱数を前記端末に送信する乱数送信ステップと、
前記乱数送信ステップで送信した乱数を含む第１の送信データを、前記端末から受信する受信ステップと、
前記第１の送信データに含まれる乱数と前記乱数記憶部に設定された乱数とが一致する場合、前記第１の送信データを初回の送信と判別して前記乱数記憶部の乱数を削除するとともに、
前記第１の送信データに含まれる乱数と前記乱数記憶部に設定された乱数とが一致しない場合、前記第１の送信データを２重送信と判別する判別ステップと、を実行させること
を特徴とする２重送信判別プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２重送信を判別する技術に関する。
【背景技術】
【０００２】
近年、ネットワークを利用した電子商取引（electronic commerce）が行われている。電子商取引においては、取引データ（商品の注文、決済など）の２重送信を防止する必要がある。例えば、特許文献１には、送信データの一方向性関数により定まる値とセッション開始時間とを用いて、２重送信をチェックする２重送信チェックシステムが記載されている。
【特許文献１】特開２００３−２５６２９８
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、特許文献１では、クライアントとサーバとが連携して、２重送信のチェックを行っている。しかしながら、インターネットに接続された不特定多数のクライアントに各種の商品を販売する場合、クライアント各々に２重送信をチェックするため機能を追加することは困難である。
【０００４】
また、複数の画面（Ｗｅｂページ）を用いて１つの処理（商品の注文など）を行う場合や、１つの画面で複数の操作指示が行える場合がある。このような場合、ユーザは、複数の画面を遷移しているうちに、または、複数の操作を行っているいうちに、誤って２重に商品の発注データを送信してしまう場合がある。
【０００５】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、クライアントからの２重送信を、より容易に、より効率良く、サーバ側で検出することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は、例えば、情報処理装置が行う２重送信判別方法であって、情報処理装置は、乱数を記憶する乱数記憶部と、処理部と、を有する。そして、処理部は、端末から第１の要求を受け付けて、乱数を生成する乱数生成ステップと、生成した乱数を乱数記憶部に設定する設定ステップと、生成した乱数を端末に送信する乱数送信ステップと、乱数送信ステップで送信した乱数を含む第１の送信データを端末から受信する第１の受信ステップと、第１の送信データに含まれる乱数と前記乱数記憶部に設定された乱数とが一致する場合、第１の送信データを初回の送信と判別して乱数記憶部の乱数を削除するとともに、第１の送信データに含まれる乱数と乱数記憶部に設定された乱数とが一致しない場合、第１の送信データを２重送信と判別する判別ステップと、を行う。
【発明の効果】
【０００７】
本発明では、クライアントからの２重送信を、より容易に、より効率良く、サーバ側で検出することができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施の形態について説明する。
【０００９】
本実施形態では、オンライントレード（online trade）の場合を例に、以下説明する。オンライントレードは、インターネットなどのネットワークを通じて行う株取引である。個人投資家などのユーザは、ＰＣ（Personal Computer）などのクライアントを用いて、証券会社のＷｅｂサイトにアクセスし、オンラインで株の売買を行う。
【００１０】
図１は、本発明の一実施形態が適用された注文受付システムの全体構成図である。本実施形態の注文受付システムは、図示するように、少なくとも１つのクライアント１と、サーバ２とを有する。そして、各クライアント１とサーバ２とは、インターネットなどのネットワーク３により接続されている。
【００１１】
クライアント１は、ネットワーク３を介してサーバ２にアクセスし、ユーザの指示を受け付けて株の売買を行う装置である。クライアント１は、図示するように、表示部１１と、指示受付部１２とを有する。表示部１１は、一般的なＷｅｂブラウザと同様の機能を有し、サーバ２から受信した画面情報を解析して出力装置（不図示）に表示する。指示受付部１２は、クライアント１を操作するユーザの指示を受け付ける。
【００１２】
サーバ２は、各クライアント１から株の注文を受け付ける装置である。サーバ２は、図示するように、制御部２１と、乱数生成部２２と、テーブル管理部２３と、画面情報生成部２４と、判別部２５と、記憶部２７と、を有する。制御部２１は、他の各部２２〜２５を制御し、クライアント１から株の注文データを受け付ける。乱数生成部２２は、制御部２１の指示により、ランダムな値である乱数を生成する。テーブル管理部２３は、後述する発注テーブル２８を管理する。画面情報生成部２４は、クライアント１に送信する画面情報を記憶部２７に記憶された各画面情報２９に基づいて動的に生成する。判別部２５は、クライアントから送信された送信データが２重送信か否かを判別する。
【００１３】
記憶部２７には、少なくとも１つの発注テーブル２８と、少なくとも１つの画面情報２９とが記憶されている。発注テーブル２８は、クライアント１から受け付けた注文内容および乱数が設定されたテーブルであって、クライアント１毎に作成される。画面情報２９は、サーバ２がクライアント１に提供する画面情報（Ｗｅｂページ）のテンプレート（雛型）である。各画面情報２９は、ＨＴＭＬ（HyperText Markup Language）またはＸＭＬ（eXtensible Markup Language）などのマークアップ言語により記述されている。
【００１４】
上記説明した、クライアント１およびサーバ２は、いずれも、例えば図２に示すようなＣＰＵ９０１と、メモリ９０２と、ＨＤＤ等の外部記憶装置９０３と、キーボードやマウスなどの入力装置９０４と、ディスプレイやプリンタなどの出力装置９０５と、ネットワークと接続するための通信制御装置９０６と、を備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、ＣＰＵ９０１がメモリ９０２上にロードされた所定のプログラムを実行することにより、各装置の各機能が実現される。
【００１５】
例えば、クライアント１およびサーバ２の各機能は、クライアント１用のプログラムの場合はクライアント１のＣＰＵ９０１が、そして、サーバ２用のプログラムの場合はサーバ２のＣＰＵ９０１が、それぞれ実行することにより実現される。なお、サーバ２の記憶部２７には、サーバ２のメモリ９０２または外部記憶装置９０３が用いられるものとする。また、入力装置９０４および出力装置９０５については、各装置が必要に応じて備えるものとする。
【００１６】
次に、サーバ２の記憶部２７に記憶された発注テーブル２８について説明する。
【００１７】
図３は、発注テーブル２８の一例を示した図である。図示する発注テーブル２８は、乱数キー３１と、銘柄３２と、株数３３と、価格３４と、を有する。乱数キー３１には、乱数生成部２２が生成した乱数が設定される。銘柄３２、株数３３および価格３４には、クライアント１から受信した株の発注内容がそれぞれ設定される。なお、テーブル管理部２３は、クライアント１とサーバ２とのセッションが確立されると、当該クライアント１用の発注テーブル２８を記憶部２７に作成する。
【００１８】
次に、クライアント１の出力装置に表示される画面について説明する。なお、本実施形態では、注文入力画面と、注文確認画面と、注文受付完了画面と、注文受付エラー画面と、を用いることとする。
【００１９】
図４（ａ）は、注文入力画面の一例を示す図である。
【００２０】
図示する注文入力画面は、注文（購入）する株の銘柄を入力する銘柄入力欄４１と、株数を入力する株数入力欄４２と、株の購入価格（指値）を入力する価格入力欄４３と、株価表示ボタン４４と、注文確認ボタン４５と、を有する。株価表示ボタン４４は、銘柄入力欄４１に入力した銘柄の現時点の株価を表示する指示を受け付けるボタンである。株価表示ボタン４４がクリックされると、株価が設定されたポップアップウィンドウが注文入力画面に表示される。なお、ポップアップウィンドウは、スクリプトを用いて表示される新しいウィンドウである。注文確認ボタン４５は、各入力欄４１〜４３に入力した内容を確認するための注文確認画面を表示する指示を受け付けるボタンである。注文確認ボタン４５をクリックすると、図４（ｂ）に示す注文確認画面が表示される。
【００２１】
図４（ｂ）は、注文確認画面の一例を示す図である。図示する注文確認画面は、注文内容表示欄４６と、戻るボタン４７と、株価表示ボタン４８と、発注ボタン４９と、を有する。注文内容表示欄４６には、注文入力画面（図４（ａ））で入力された銘柄、株数および価格が表示される。戻るボタン４７は、注文確認画面の１つ前の画面（すなわち、注文入力画面）に戻る指示を受け付けるボタンである。株価表示ボタン４８は、注文入力画面の株価表示ボタン４４と同様である。
【００２２】
発注ボタン４９は、注文内容表示欄４６に表示された株の発注指示を受け付けるボタンである。初回の発注指示の場合、図５（ａ）に示す注文受付完了画面が表示される。また、２重に発注指示が行われた場合、図５（ｂ）に示す注文受付エラー画面が表示される。
【００２３】
なお、図示する注文確認画面の画面情報には、画面上には表示されない隠しデータ５０が設定されているものとする。すなわち、後述する注文受付処理において、サーバ２の乱数生成部２２が生成した乱数が、隠しデータ５０として注文受付画面の画面情報に設定されている。なお、隠しデータについては後述する。
【００２４】
図５（ａ）は、注文受付完了画面の一例を示した図である。図示する注文受付完了画面は、注文を正常に受け付けたことを示すメッセージ５１と、戻るボタン５２とを有する。戻るボタン５２は、注文受付完了画面の１つ前の画面（すなわち、注文確認画面（図４（ｂ））に戻る指示を受け付けるボタンである。なお、図示する注文受付完了画面の画面情報には、注文確認画面と同様に、画面上には表示されない隠しデータ５３が設定されているものとする。
【００２５】
図５（ｂ）は、注文受付エラー画面の一例を示した図である。図示する注文受付エラー画面は、２重に注文が受け付けられたことを示すエラーメッセージ５６と、戻るボタン５７とを有する。戻るボタン５７は、注文受付エラー画面の１つ前の画面（すなわち、注文確認画面（図４（ｂ））に戻る指示を受け付けるボタンである。なお、図示する注文受付エラー画面の画面情報には、注文確認画面と同様に、画面上には表示されない隠しデータ５８が設定されているものとする。
【００２６】
次に、本システムの注文受付処理について、サーバ２の処理を中心に説明する。
【００２７】
図６は、サーバ２の注文受付処理のフローチャートである。
【００２８】
クライアント１の指示受付部１２は、ユーザからの指示を受け付け、サーバ２に注文入力画面を要求する。サーバ２の制御部２１は、クライアント１からの要求を受信し、注文入力画面の画面情報を、要求元のクライアント１に送信する（Ｓ１１）。すなわち、制御部２１は、注文入力画面の画面情報２９を記憶部２７から読み出しクライアント１に送信する。そして、制御部２１は、クライアント１からの指示（要求）を待つ。
【００２９】
そして、クライアント１の表示部１１は、サーバ２から受信した注文入力画面の画面情報を解析し、注文入力画面（図４（ａ））を出力装置に表示する。そして、ユーザは、入力装置を用いて、注文入力画面の各入力欄に銘柄、株数および価格を入力し、いずれかの指示ボタンをクリックする。指示受付部１２は、ユーザが入力した入力情報と、クリックした指示とを受け付け、サーバ２に送信する。
【００３０】
そして、サーバ２の制御部２１は、クライアントから入力情報および指示を受信する。そして、制御部２１は、受信した指示が注文確認指示か否かを判別する（Ｓ１２）。注文確認指示でない場合、すなわち株価表示指示の場合（Ｓ１２：ＮＯ）、制御部２１は、受信した入力情報の銘柄の株価を株価データベース（不図示）から取得し、取得した株価を表示する画面情報を生成してクライアント１に送信する（Ｓ１３）。なお、制御部２１は、ＣＧＩ（Common Gateway Interface）などを用いて所定のプログラムを起動し、株価の検索や株価を示す画面情報の生成を行う。
【００３１】
そして、クライアント１の表示部１１は、株価の画面情報を受信し、現在表示されている注文入力画面上に、株価が設定されたポップアップウィンドウを表示する。これにより、ユーザは、現時点の株価を考慮して、株を購入するか否か、または、株数や購入価格を変更することができる。
【００３２】
一方、注文確認指示の場合（Ｓ１２：ＹＥＳ）、制御部２１は、受信した入力情報各々について、所定のチェック（例えば、銘柄の有無チェックなど）を行った後、乱数生成部２２に乱数の生成を指示する。そして、乱数生成部２２は、乱数を生成する（Ｓ１４）。すなわち、乱数生成部２２は、所定のアルゴリズムまたは専用ハードウェアにより、乱数（または、疑似乱数）を生成する。なお、乱数の生成方法としては、例えば、混合合同法（mixed congruential method）、メルセンヌ・ツイスタ(Mersenne twister)、ハッシュ関数（hash function）などがある。ハッシュ関数については、入力情報から固定長の疑似乱数を生成することが考えられる。
【００３３】
そして、テーブル管理部２３は、乱数生成部２２が生成した乱数と、Ｓ１２で受信した入力情報とを、要求元のクライアント１の発注テーブル２８（図３参照）に設定する（Ｓ１５）。なお、テーブル管理部２３は、各クライアント１とのセッションが確立されたタイミングで、記憶部２７に各クライアント１用の発注テーブル２８をそれぞれ作成する。
【００３４】
そして、画面情報生成部２４は、注文確認画面の画面情報を生成する（Ｓ１６）。すなわち、画面情報生成部２４は、記憶部２７から注文確認画面の画面情報２９（テンプレート）を取得する。そして、画面情報生成部２４は、取得した画面情報２９の所定の部分に受信した入力情報および生成した乱数を設定し、注文確認画面の画面情報を動的に生成する。
【００３５】
なお、画面情報生成部２４は、生成した乱数を、隠しデータとして画面情報に埋め込む。すなわち、ＨＴＭＬを用いて記述された画面情報の場合、画面情報生成部２４は、「ＩＮＰＵＴ」タグを用いて、以下のような記述を画面情報に追加する。
【００３６】
＜ＩＮＰＵＴ  ＴＹＰＥ＝ｈｉｄｄｅｎ  ＮＡＭＥ＝Ｋｅｙ  ＶＡＬＵＥ＝“乱数”＞
「ＴＹＰＥ＝ｈｉｄｄｅｎ」により、クライアント１の出力装置には表示されない隠しデータ（ＶＡＬＵＥに設定された乱数、ＮＥＭＥに設定された項目名）を、クライアント１に送信することができる。
【００３７】
そして、制御部２１は、画面情報生成部２４が生成した注文確認画面の画面情報をクライアント１に送信し、クライアント１からの要求を待つ（Ｓ１７）。
【００３８】
そして、クライアント１の表示部１１は、受信した注文確認画面の画面情報を解析して、注文確認画面（図４（ｂ））を出力装置に出力する。なお、クライアント１の出力装置に表示される注文確認画面上には、前述の通り、隠しデータの乱数は表示されない。そして、ユーザは、注文確認画面で表示された銘柄、株数および価格を確認し、いずれかの指示ボタンをクリックする。指示受付部１２は、いずれかの指示を受け付け、当該指示とともに隠しデータ（乱数とＫｅｙ）をクライアント１の入力情報としてサーバ２に送信する。
【００３９】
そして、サーバ２の制御部２１は、クライアント１から隠しデータおよび指示を受信する。そして、制御部２１は、受信した指示が発注指示か否かを判別する（Ｓ１８）。発注指示でない場合（Ｓ１８：ＮＯ）、制御部２１は、前画面への戻る指示か否かをさらに判別する（Ｓ１９）。前画面への戻る指示の場合（Ｓ１９：ＹＥＳ）、制御部２１は、Ｓ１１へ戻り、注文入力画面の画面情報をクライアント１に送信する。
【００４０】
株価表示指示の場合（Ｓ１９：ＮＯ）、制御部２１は、Ｓ１３と同様に、検索した株価を表示する画面情報をクライアント１に送信する（Ｓ２０）。そして、制御部２１は、Ｓ１８に進み、クライアント１からの要求を待つ。
【００４１】
一方、発注指示の場合（Ｓ１８：ＹＥＳ）、判別部２５は、クライアント１から受信した隠しデータの乱数と、当該クライアント１の発注テーブル２８の乱数キーとが、一致するか否かを判別する（Ｓ２１）。両者が一致する場合（Ｓ２１：ＹＥＳ）、判別部２５は、Ｓ１８で受信した発注指示が、初回の発注指示であると判別する。したがって、制御部２１は、発注テーブル２８に設定された銘柄、株数および価格の株の注文を受け付ける所定の処理を行う。そして、テーブル管理部２３は、発注テーブル２８に設定された各項目の値を初期化する（Ｓ２２）。すなわち、テーブル管理部２３は、Ｓ１５で設定した各項目の値を削除し、ｎｕｌｌ（スペース）を設定する。
【００４２】
そして、画面情報生成部２４は、注文受付完了画面の画面情報を生成する（Ｓ２３）。  すなわち、画面情報生成部２４は、記憶部２７から注文受付完了画面の画面情報２９（テンプレート）を取得する。そして、画面情報生成部２４は、取得した画面情報２９の所定の部分にＳ１８で受信した乱数（すなわち、Ｓ１４で生成した乱数）を設定した注文受付完了画面の画面情報を生成する。なお、画面情報生成部２４は、Ｓ１６と同様に、隠しデータとして乱数を画面情報に設定する。そして、制御部２１は、生成した注文受付完了画面の画面情報を、クライアント１に送信する（Ｓ２４）。
【００４３】
そして、クライアント１の表示部１１は、受信した注文受付完了画面の画面情報を解析し、注文受付完了画面（図５（ａ））を出力装置に出力する。なお、出力装置に表示される注文受付完了画面には、前述の通り、隠しデータである乱数は表示されない。そして、ユーザは、株の注文が正常に受け付けられたことを確認し、注文受付完了画面の戻るボタンをクリックする。指示受付部１２は、１つ前の画面（注文確認画面）への戻る指示を受け付け、当該戻る指示とともに隠しデータ（乱数とＫｅｙ）をクライアント１の入力情報としてサーバ２に送信する。
【００４４】
そして、サーバ２の制御部２１は、戻る指示および隠しデータをクライアント１から受信し、Ｓ１６に戻る（Ｓ２５）。すなわち、画面情報生成部２４は、注文確認画面の画面情報にＳ２５で受信した乱数（Ｓ１４で生成した乱数）を設定する（Ｓ１６）。そして、制御部２１は、Ｓ１６で生成した注文確認画面をクライアント１に送信し（Ｓ１７）、クライアント１からの指示を受け付ける（Ｓ１８）。
【００４５】
戻る指示で表示された注文確認画面において、さらに戻る指示を受け付けた場合（Ｓ１９：ＹＥＳ）、制御部２１は、注文入力画面の画面情報をクライアント１に送信する（Ｓ１１）。これにより、ユーザは、新たな株の注文を入力することができる。しかしながら、戻る指示で表示された注文確認画面において、ユーザが、誤って再度発注指示を入力した場合（Ｓ１８：ＹＥＳ）、判別部２５は、クライアント１から受信した隠しデータの乱数と、当該クライアント１の発注テーブル２８の乱数キーとが一致するか否かを判別する（Ｓ２１）。この場合、初回の発注指示のＳ２２において、発注テーブル２８の各項目は既に初期化されている。したがって、クライアント１から受信した乱数と、発注テーブルの乱数キーとは一致しないため（Ｓ２１：ＮＯ）、判別部２５は、２重の発注指示であると判別する。
【００４６】
この場合、画面情報生成部２４は、注文受付エラー画面の画面情報を生成する（Ｓ２６）。すなわち、画面情報生成部２４は、記憶部２７から注文受付エラー画面の画面情報２９（テンプレート）を取得する。そして、画面情報生成部２４は、取得した画面情報２９の所定の部分にＳ１８で受信した乱数（Ｓ１４で生成した乱数）を設定した注文受付エラー確認画面の画面情報を生成する。なお、画面情報生成部２４は、Ｓ１６と同様に、隠しデータとして乱数を画面情報に設定する。そして、制御部２１は、生成した注文受付エラー画面の画面情報を、クライアント１に送信する（Ｓ２７）。そして、制御部２１は、戻る指示および隠しデータをクライアント１から受信し、Ｓ１６に戻る（Ｓ２５）。
【００４７】
以上説明した注文受付処理では、初回の発注指示を受け付けた後に、発注テーブルを初期化する（Ｓ２２）。一方、クライアント１には、隠しデータの乱数を設定した画面情報を送信する（Ｓ２４、Ｓ２７）。これにより、２回目以降の発注指示では、発注テーブルにはＮＵＬＬが設定されているため、乱数キーは一致しない（Ｓ２１：ＮＯ）。したがって、サーバ２は、重複した発注指示を容易に判別することができる。
【００４８】
なお、発注指示が可能な注文確認画面から抜けた場合、すなわち、注文入力画面に戻った場合（Ｓ１９：ＹＥＳ）、制御部２１は、当該注文入力画面には隠しデータを設定しない（Ｓ１１）。したがって、ユーザは、注文入力画面の各入力欄に、新たな株の注文データを入力し、Ｓ１２以降の処理を繰り返し行うことができる。
【００４９】
以上、本発明の一実施形態を説明した。
【００５０】
本実施形態では、発注テーブル２８の乱数キーと、画面情報に隠しデータとして設定した乱数とが一致するか否かにより、初回の送信データか２重送信か否かを判別する。これにより、クライアントの２重送信を、サーバ側でより容易、より効率よく検出することができる。
【００５１】
また、本実施形態では、戻る指示により注文確認画面が表示され、再度、発注ボタンをクリックした場合であっても、２重送信を判別することができる。また、本実施形態では、注文確認画面において、ユーザの操作ミスにより新たな注文確認画面が表示され（例えば、「Ｃｔｒｌキー」と「Ｎキー」の入力）、それぞれの画面で発注ボタンをクリックした場合であっても、２重送信を判別することができる。
【００５２】
また、本実施形態の注文確認画面では、１つの画面で複数の指示（操作）ボタンを有している。このように複数の指示ボタンを有する画面において、複数の指示が行われた場合であっても、２重送信か否かを適切に判別することができる。例えば、注文受付完了画面から戻る指示により注文確認画面に戻って、一旦、株価表示ボタンをクリックし、株価のポップアップウィンドウを表示した後、再度、発注ボタンをクリックする。このような場合であっても、発注指示の２重送信を適切に判別することができる。すなわち、注文確認画面を変更して新たな指示ボタンを追加（新機能を追加）する場合であっても、２重送信を判別することができる。
【００５３】
また、本実施形態では、２重送信の判別を全てサーバ２側で行っている。これにより、ネットワークに接続された不特定多数のクライアント１からの送信データであっても、２重送信か否かを判別することができる。
【００５４】
また、本実施形態では、サーバ２の画面情報生成部２４は、画面情報に隠しデータとして生成した乱数を設定する。すなわち、クライアント１の出力装置には、乱数は表示されない。そのため、ユーザは画面情報に設定された乱数を意識することなく株の注文を行うことができる。
【００５５】
なお、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。例えば、上記実施形態では、発注テーブル２８をクライアント１毎に作成することとした。しかしながら、本発明はこれに限定されず、例えば、１つの発注テーブルに、セッションが確立した全てのクライアント１のデータを設定することとしてもよい。
【００５６】
また、本実施形態のサーバ２は、２重送信時のエラー処理として、注文受付エラー画面（図５（ｂ）参照）をクライアント１に送信する。しかしながら、本発明はこれに限定されず、２重送信と判別した場合、サーバ２は、２重送信のログ情報を記憶部２７に記録するなどのエラー処理を行うこととしてもよい。
【図面の簡単な説明】
【００５７】
【図１】本発明の一実施形態が適用された注文受付システムの全体構成を示す図である。
【図２】各装置のハードウェア構成例を示す図である。
【図３】発注テーブルの一例を示す図である。
【図４】注文受付画面および注文確認画面の一例を示す図である。
【図５】注文受付完了画面および注文受付エラー画面の一例を示す図である。
【図６】注文受付処理のフローチャートである。
【符号の説明】
【００５８】
１：クライアント、１１：表示部、１２：指示受付部、２：サーバ、２１：制御部、２２：乱数生成部、２３：テーブル管理部、２４：画面情報生成部、２５：判別部、２７：記憶部、２８：発注テーブル、２９：画面情報、３：ネットワーク
【図１】
2006260295.tif 000003
【図２】
2006260295.tif 000004
【図３】
2006260295.tif 000005
【図４】
2006260295.tif 000006
【図５】
2006260295.tif 000007
【図６】
2006260295.tif 000008