header()使って確認画面にすっ飛ばす理由が分からん。
<form>のターゲットを確認画面にすればいいのに。

>セッションが消えたり、古いセッション値が表示されたりします。
$_POST[hoge']が空の時の動作がないからでしょ。