フォームで重複登録させない方法は?


htmlのフォームで送信ボタンを押して、データを登録するようなページでの重複登録防止方法を教えてください。

JSで送信をクリックした瞬間にボタンを消して、押せなくするようなことも以前試しましたが、
tabでフォーカスをあわせて、Enterボタンを押しっぱなしにしたりすると、複数回ポストされます。

できれば、フォームを開いたときなどにキーのやり取りをして、登録時にチェックするような方法はとらずに、楽に実装できる方法が希望です。

また、登録後の遷移した画面から、ブラウザの戻るボタンで戻って、再度登録したりすることもあわせて防ぎたいと思います。

回答の条件
  • 1人2回まで
  • 登録:2008/01/20 19:31:58
  • 終了:2008/01/27 19:35:02

回答(4件)

id:koujirou6218 No.1

koujirou回答回数597ベストアンサー獲得回数472008/01/20 21:37:41

ポイント23pt

書き込み時にUA(User Agent)を取得し一時的に記憶します。

その際に指定の時間(10秒など)差がないと書き込めなくしているところが多いですね。

id:dingding

詳しく分けると、

・UAで、IP、ブラウザなどすべての値をシリアライズ

・登録するデータ+UAシリアライズ+登録時間を登録

・登録するときにUAシリアライズが同じで、登録時間が今より指定時間以内のものがないかチェックする

ということでいいでしょうか?

ちなみにこの場合、同じ企業や、同じ携帯会社からのアクセスの場合、実際は同じ人でなくてもはじいてしまうことはないのでしょうか?

登録する内容も含めてシリアライズしたりして、違う人をはじいてしまう確率を下げるなどの方法でいいでしょうか?

2008/01/20 23:58:03
id:tsux88 No.2

tsux88回答回数61ベストアンサー獲得回数42008/01/21 00:23:03

ポイント23pt

フォームでonsubmit=を使うと送信時に必ずJavaScriptが呼ばれ(送信ボタンを押す、テキストフィールドでEnterを押すに関わらず)、ここでreturn false;とすれば送信をキャンセルできます。なのでここでチェックしてみてはいかがでしょうか。

http://www.openspc2.org/JavaScript/ref/event/onSubmit.htm

id:dingding

すみませんが、もう少し詳しく教えてください。

また、この方法は、ブラウザの戻るボタンの対応も可能でしょうか?

2008/01/21 01:21:03
id:Marine-Blue No.3

Marine-Blue回答回数237ベストアンサー獲得回数122008/01/21 00:46:26

ポイント22pt

ボタンを消すっつってdisplay=noneとかかましてるように見えますが気のせい?これだと見た目上は消えますがソース上はボタンが存在する状態なので消したことにはなりません。

フォームにdisabledかましてコントロールを無効化したりlocation.replaceで戻れなくする手法でどうにかなるんじゃないかと思うんですけどダメなんでしょうか。

id:dingding

すみませんが、location.replaceで戻れなくする手法というのをもう少し詳しく教えてください。

2008/01/21 01:22:32
id:iww No.4

いわわ回答回数101ベストアンサー獲得回数102008/01/21 02:05:13

ポイント22pt

最初の1回だけSUBMITできるようにするサンプルです。

<script>
var done=0;
</script>
<FORM ACTION="hoge.cgi" ONSUBMIT="return !done++;" TARGET=_blank>
<INPUT NAME=a>
<INPUT TYPE=SUBMIT>
</FORM>

doneという変数を使って、ONSUBMITで最初の1回目はtrueを、2回目からはfalseを返します。

falseが返るとSUBMITしなくなるので、これでいけると思います。


IE6で動作確認しました。とりあえず適当ですのでこれはヒント程度に改造とかしてください。

id:dingding

ありがとうございます

2008/01/21 04:41:38

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません