• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「PHP初心者」入力フォームの件)

【PHP初心者】入力フォームから名前を表示するサンプル

このQ&Aのポイント
  • 入力フォームから名前を入力して送信後、その名前を表示させるサンプルコードです。
  • 名前が未入力の場合にはエラーメッセージを表示します。
  • 最初に考えた解法で使用したisset関数では、名前が未入力の場合にエラーメッセージが表示されない問題がありました。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>「isset」は変数が存在しているかどうかの判別をすると 書いてある通り「変数」が存在しているかどうかなので 変数の中身が存在しているかどうかではありません プログラムの中で考えれば <?PHP if(isset($a)) print 1; $a=""; if(isset($a)) print 2; ?> みたいに、とにかく中身が空でも宣言がされていれば変数は存在します。 また今回のように外部からデータを送り込む場合 $_POST["name"]が空だろうがなんだろうが、フォームのポスト中に nameという要素があってそこから送られてくれば「空」でも $_POST["name"]は存在します。 中身があるかどうかはisset()ではなくempty()などでチェックしてください

okdayook
質問者

お礼

変数が存在しているのと、その中身が存在しているのかというのは 違う解釈なのですね。 issetが使われる過去の見本を再度見直して勉強します。 ありがとうございました!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

var_dump($_POST["name"]) してみればわかりますが、長さが0の文字列がセットされている場合は issetでは「セットされている」と判断されます。 if(isset($_POST["name"]) and $_POST["name"]!==""){・・・} でチェックしてください 表記が冗長で気に入らない場合は $name=isset($_POST["name"])?$_POST["name"]:""; if($name!==""){・・・} と、一回変数に受けてもいいかもしれません

okdayook
質問者

補足

早速の回答ありがとうございます。 「isset」は変数が存在しているかどうかの判別をすると マニュアルに書いてあるのですが、 値が有るか無いかの判断ではないのでしょうか? var_dump($_POST["name"])をしてみると「string(0) ""」 になり何も値がないと表示されます。 ということでfalseになりelseのほうが実行されるのでは? と思ってしまいます。 issetを使わなければシンプルにif($_POST["name"])ですむようですが issetの使い方をはっきり知るためにも なにか具体的な解釈があればと思っています。

関連するQ&A