ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

再読み込みボタンを押されたときにPOSTメソッドを再処理させない方法

POSTメソッドで渡された値を使って登録処理を行う画面で、処理が終わった後にブラウザの再読み込みボタンを押されると、同一処理が繰り返されて、2重登録が発生しました。
開発中のデータベースへの反映やメール送信の動作確認をするには便利ですが、本番では都合が悪いので対処することにしました。

対処方法

データベースへの反映やメール送信の処理が終わった後に、ブラウザのURL欄に表示されているURLへ遷移するGETメソッドを発生させました。
PHPでの開発なので、ソースコードは以下のようになりました。

$location = 'Location: ' . (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
header($location);
exit(0);

単純な方法で対処ができました。