【php】同ページ$_POST使用時の再送信対策
formをPOSTで送信後、ページをリロードするとform再送信の確認メッセージがでる問題。
メッセージを出さないため&再送信を防ぐための方法を考える。
formを送信
↓
POSTを受け取ったら$_SESSIONに格納。同ページに移動。
↓
$_SESSIONを使って処理。処理後に破棄する。
という方法をとる。
<?php
session_start(); //セッション開始
session_start(); //セッション開始
if(!empty($_POST)){//ポストが空でなければ
$keys = array_keys($_POST);//ポストのキーを取得
foreach($keys as $key){//$_POSTの要素を全て$_SESSIONに移す
$_SESSION[$key] = $_POST[$key];
}
$_SESSION["array_post_keys"] = $keys;//キー配列も格納
http_response_code(301);
header("Location: ".(empty($_SERVER["HTTPS"]) ? "http://" : "https://").$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]);
exit;//処理を中止する
}
?>
これを<html>前に設置して、後は処理していく。