- ベストアンサー
【PHP初心者】入力フォームから名前を表示するサンプル
- 入力フォームから名前を入力して送信後、その名前を表示させるサンプルコードです。
- 名前が未入力の場合にはエラーメッセージを表示します。
- 最初に考えた解法で使用したisset関数では、名前が未入力の場合にエラーメッセージが表示されない問題がありました。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>「isset」は変数が存在しているかどうかの判別をすると 書いてある通り「変数」が存在しているかどうかなので 変数の中身が存在しているかどうかではありません プログラムの中で考えれば <?PHP if(isset($a)) print 1; $a=""; if(isset($a)) print 2; ?> みたいに、とにかく中身が空でも宣言がされていれば変数は存在します。 また今回のように外部からデータを送り込む場合 $_POST["name"]が空だろうがなんだろうが、フォームのポスト中に nameという要素があってそこから送られてくれば「空」でも $_POST["name"]は存在します。 中身があるかどうかはisset()ではなくempty()などでチェックしてください
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
var_dump($_POST["name"]) してみればわかりますが、長さが0の文字列がセットされている場合は issetでは「セットされている」と判断されます。 if(isset($_POST["name"]) and $_POST["name"]!==""){・・・} でチェックしてください 表記が冗長で気に入らない場合は $name=isset($_POST["name"])?$_POST["name"]:""; if($name!==""){・・・} と、一回変数に受けてもいいかもしれません
補足
早速の回答ありがとうございます。 「isset」は変数が存在しているかどうかの判別をすると マニュアルに書いてあるのですが、 値が有るか無いかの判断ではないのでしょうか? var_dump($_POST["name"])をしてみると「string(0) ""」 になり何も値がないと表示されます。 ということでfalseになりelseのほうが実行されるのでは? と思ってしまいます。 issetを使わなければシンプルにif($_POST["name"])ですむようですが issetの使い方をはっきり知るためにも なにか具体的な解釈があればと思っています。
お礼
変数が存在しているのと、その中身が存在しているのかというのは 違う解釈なのですね。 issetが使われる過去の見本を再度見直して勉強します。 ありがとうございました!