ゲストブックのリロードで二重送信

2015年9月8日 at 13:30

初めて質問させていただきます。

標準のゲストブックブロックを使って掲示板もどきのページを作ろうとしています。
しかし、コメントを送信したあとでページをリロードするとコメントが二重に送信されてしまいます。ただのコメント欄なら構わないのですが、掲示板風に使いたいのでコメントしたあと(他者のコメントを見るため)リロードする機会が多いので、これを防ぎたいのですがPHP、concrete5の知識が全く無いために方法が分かりません。

試しに調べてみて、ページ(使ってるページタイプのphp)の冒頭に
if (!empty($_POST)) {
header("Location: {$_SERVER['REQUEST_URI']}");
exit();
}
と挿入してポストがあるときはGETでリダイレクト(?)するようにしてみたのですが
そうしますとリロードした時に未記入送信したとみなされるようで「コメントを入力してください」のような文章がゲストブックブロックに表示されます。ゲストブックブロックをいじってエラーコメントを出さないようになら出来ますが本質的な解決ではありませんし...
また{$_SERVER['REQUEST_URI']}の代わりに絶対パスで掲示板ページのURLを指定すればそれっぽく動きましたが、掲示板ページをいくつも作りたいので固定で書いてしまうことはできません...

php等の知識が本当に無いためとんちんかんなことを言っているかもしれませんがうまくいきそうな方法などありましたら是非ご教授願います。
よろしくお願いします。

concrete5 5.6.3.1

タグ:

Re: ゲストブックのリロードで二重送信

2015年9月11日 at 18:36
送信後にブラウザを再読み込みすると、再送信してしまうのはある程度仕方ないかな…と思います。キャプチャ画像を出せば、コードが違うエラーになって二重投稿自体は防げます。簡易な回避策としては、

<a href="./">再読み込み</a>

というリンクを置いておいてそちらのリンクを押すようユーザーを誘導するのはどうでしょうか
 

Re: ゲストブックのリロードで二重送信

2015年9月14日 at 20:49
ご返事ありがとうございます。

なるほど、リンクを貼る方法で解決させようと思います。

登録ユーザーのみ見られるページで、活発な発言のためキャプチャはためらっていました。
頭が硬かったな...汗

どうもありがとうございました。