ここから本文です

htmlからphpに送られてきた値が不足していた場合、自動で入力フォームに戻したいの...

a21********さん

2019/10/1821:04:51

htmlからphpに送られてきた値が不足していた場合、自動で入力フォームに戻したいのですがheader("Location:")でリダイレクトする方法は正しいですか?

初心者でマニュアルを調べながら勉強しています。
他に良い方法があったらご教授下さい。




<?php
if ($_POST['name']){
$name=filter_input(INPUT_POST, 'name');
} else {
header("Location: ./URL");
exit ;
}
?>

補足お二方ご回答本当にありがとうございます。

試しに自分でコードを書いてみたのですが、間違っている点などあれば教えていただきたいです。
もとの質問から少しそれてしまっているので、ご迷惑でしたらすみません。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q102152145...

閲覧数:
18
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tezcelloさん

2019/10/1821:53:34

> 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 を使って「何がいけなかったか」を表示すればしっかりと伝わるでしょう。

その様に作りたいので、僕は入力フォームとそのフォームデータの受け取りを同じスクリプトで処理したいです。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/10/21 23:46:44

詳しい説明ありがとうございました。
かなり勉強になりました。また機会があったらご教授下さい。

ヒアドキュメントなどは今回始めた知ったので、簡単な本などを使ってもう少し基礎的な部分を勉強してみようと思います。

ベストアンサー以外の回答

1〜1件/1件中

gen********さん

2019/10/2003:46:22

ファイルを跨ごうとするから処理が煩雑になってしまうんですよね。
一つのファイルで全てを処理してはいかがでしょうか。

例えばこんな感じです。

/*チェックフラグ*/
if($_POST['submit'] = '送信する'){
$page = 1;
//送信OKフラグ
}elseif($_POST['submit'] = '確認する'){
//エラーチェック
//エラーフラグ
////OKなら$page = 2;
////NGなら$page = 3;
}else{
//フォームページフラグ
$page = 3;
}

/*HTMLテンプレートの呼び出し*/
if($page == 1){
//送信処理
//送信完了ページテンプレート呼び出し
}elseif($page == 2){
//送信前情報確認ページテンプレート呼び出し
}else{
//フォームページテンプレート呼び出し
}

処理系とテンプレートを分け、状況に合わせて必要なページを表示させる。
以前、この仕組みで組んだことがありますが、メインテナンスも楽です。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる