[pgsql-jp: 27205] Re: pg_execが2 度実行されてしまう現象

Yasuo Ohgaki yohgaki @ ohgaki.net
2002年 8月 29日 (木) 20:09:25 JST


大垣です。

本題からそれていきますが、、

Naofumi Kondoh wrote:
> 本題の方ですが、SUBMIT 2度押しや、戻る・RELOAD
> などのブラウザ操作でも2重挿入が発生します。
> 
> これらの防止策はいろいろあると思いますが、私は、
> HTML 送出毎に連番を付けて識別するようにしています。
> セッションID+HTML頁ごとの連番が同一ならば、
> SUBMIT 2度押しと判定してエラーにしています。
> 

近藤さんの方法も同じような方法のようですが、多少違う
ので私の方法もご紹介します。

私はフォームを表示する度に、ランダムなフォームIDを
隠しフィールドとして付加しています。PostgreSQLに
フォームIDと状態を保存して、状態がデータベースの未
登録の場合データベースの保存する様にしています。

# フォームIDと状態を保存するテーブルは適当に掃除し
# ています。

セッションがなくても状態管理ができる事が利点です。

良くない所は(私の実装方法の問題ですが、、)は大き
なフォームクラスで実装していて重い、DB余計な負荷が
必要で重くなる、難しい訳ではありませんが、実装に比
較的手間がかかるなどがあります。可能性は低いですが
フォームIDがコリージョンを起こす可能性もあります。

--
Yasuo Ohgaki




pgsql-jp メーリングリストの案内