カテゴリ | |
---|---|
サマリ | #comment、 でIEの更新(再描画)ボタンを押すと二重投稿される |
バージョン | 1.4.x |
投稿者 | kahata |
状態 | 完了 |
投稿日 | 2007-07-03 (火) 10:44:00 |
拙作、自作プラグイン/include_module.inc.phpの使い方を模索しているkahataです。
プラグイン、#commentについて質問させていただきます。
コメントを投稿(挿入)した直後に、インターネットエクスプローラ等の更新(再描画)ボタンを押すと、情報の再送信を警告するポップアップが出て、再送信を強行すると以下のメッセージが出て二重投稿されてます。
練習ページ で【更新の衝突】が起きました あなたがこのページを編集している間に、他の人が同じページを更新してしまったようです。 コメントを追加しましたが、違う位置に挿入されているかもしれません。
#articleでも同様の現象が起きますが、編集画面が出て二重投稿はされないようです。
投稿のときのpostをそのまま再送信しているためこの現象が起きると思うのですが、この二重投稿を防止する方法はないでしょうか? #commentなら二重投稿を削除すれば済みますが、一般的な掲示板等のアプリケーションでpukiwikiのpost,getを使う場合、更新ボタンを押す度に多重投稿になっては困ります。
色々コードをいじりましたが解決できません。
以下のコードが関係していると思いますが、ifの条件文の中身がよく理解できません。
$title = $_title_updated; $body = ''; if (md5(@join('', get_source($vars['refer']))) != $vars['digest']) { $title = $_title_comment_collided; $body = $_msg_comment_collided . make_pagelink($vars['refer']); } page_write($vars['refer'], $postdata);
このコードの意味も併せてご教授下さい。宜しくお願いします。
(a)ページを開く (b)ページを読んでコメントを入力する (c)コメント挿入ボタンを押すで、(b)の間に他にコメントが入ったりページが更新されても、プラグインは(c)でソース読み直すので、衝突はあってもコメントが書き込まれ、ユーザーの期待する動作になっているので良いでしょう。けれど、強制的に書き込まずに、差し戻す、もしくは確認画面を噛ませる、という案も受け入れられると思います。(書き込み後にページを更新して、同じコメントが追加されなくなる。) -- ぃぉぃぉ 2007-07-03 (火) 13:03:25