2007年12月19日

[PHP-users 33057] Re:「 enter 」キーの連打について

こんばんは

> Enterキーの二度打ちですが、私もこの部分でかなり悩んだことがあります。
> この部分についてはサーバーの部分で制御するのではなく、クライアント
> スクリプトでの制御でので解決することができました。

クライアント側での対応もあったほうがいいと思いますが、普通はサーバ側で
対応するものじゃないでしょうか。


二重登録を防止したい場合、よくやるやり方はトランザクションを使い、すでに
同じデータが存在しないかチェックするやり方でしょうか。
必ず更新されるカラムにUNIQUE制約をつけておき、DBからこのエラーが返って
きたら二重送信とみなすっていうちょっと乱暴な気もする方法もあるかな。

UPDATEやDELETEの場合は、あらかじめ更新時刻のカラムを保持しておき、
入力フォームにこの時刻をhiddenパラメータなどで埋め込んでおいて渡し、
UPDATEやDELETEのWHERE句に利用する手もあります。

CRSF対策とやることが似てるので、両方いっぺんにやっちゃった方がいいかも。

クライアントからの入力は信用してはいけないので、クライアント側の対策のみで
解決って言っちゃうのはまずいと思います。


掲題のDBエラーはそもそも二重送信した際にエラーが出ること自体が問題な
気もする(UNIQUE制約のせいなら別ですが)ので、二重送信を抑制する前に
エラーの原因を調べた方がよいとおもいますけれども。
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

投稿者 xml-rpc : 2007年12月19日 00:36
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/67776
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。