質問: htmlからphpに送られてきた値が不足していた場合、自動で入力フォームに戻したいのですがheader("Location:")でリダイレクトする方法は正しいですか?
回答: > htmlからphpに送られてきた値が不足していた場合、自動で入力フォームに戻したいのですがheader("Location:")でリダイレクトする方法は正しいですか? リダイレクトで飛ばされたページが元の入力フォームだとすると、入力者はなぜ元に戻ってしまったのかを理解できないのではありませんか? それではあまりに不親切だと思うので「何がいけなかったか(=ページの制作者は何を期待しているのか)」を明示すべきだろうなぁと思います。 > if ($_POST['name']){ > $name=filter_input(INPUT_POST, 'name'); これでは順序が逆です。 変数はそれが存在するかを確かめてから使うのが基本です。 存在するかが確定していないうちに if ($_POST['name']) の様に使うのではなく、filter_input() で存在を確認しつつ値を取得し、その値について調べるのが安全です。 例えば $errors = array(); (略) $name = filter_input(INPUT_POST, 'name', FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_LOW); // フィルタやフラグは例 if (empty($name)) { $errors['name'] = '名前が空欄です'; // エラーメッセージ } の様に入力をチェックしていって、最終的に $errors が空であれば「入力エラーなし」なので、本来の処理を。 そうでなければ、$errors を使って「何がいけなかったか」を表示すればしっかりと伝わるでしょう。 その様に作りたいので、僕は入力フォームとそのフォームデータの受け取りを同じスクリプトで処理したいです。