PHP POST送信 input text入力値の有無判定はissetよりempty

web制作

PHPの書籍では、たまにこんな書き方を見かけます。



//↓ HTMLファイルのinput textデータの送信を受けて…

if (isset($_POST["hoge"])){
  // hogeがある時の処理
}else{
  // hogeがない時の処理
}

これは、実際に動かしてみるとわかりますが、html側で、"hoge"に対応するinputの中身が空っぽでも、"hoge"がある時の処理とされてしまいます。

issetは、その変数が定義されているかどうかをチェックするためです。また、input textは、中身を空っぽの状態で送信した時、中身は空っぽだけど変数自体の定義情報を送ります。(inputのradioとかであれば、定義情報は送られない。ややこしいところです。)

なので、定義された変数の中身が空っぽかどうかをチェックする場合は、emptyによる判定をしないといけません。



if (isset($_POST["hoge"])){
  if ($_POST["hoge"] == ""){
    // hogeがない時の処理
  }else{
    // hogeがある時の処理
  }
}

または、

if (isset($_POST["hoge"])){
  if (empty($_POST["hoge"])){
    // hogeがない時の処理
  }else{
    // hogeがある時の処理
  }
}

issetだけの判別だと、変数中身の空っぽかどうかチェックはできないので、気をつけましょう。

最後に一言

issetで可能と書いている書籍については、コード確認してないんだろうなって思ってしまいます。手作業することが、やはり大事です。

この記事をSNSでシェアする?

PHP POST送信 input text入力値の有無判定はissetよりempty


  • 0
    このエントリーをはてなブックマークに追加
  • Pocket

PROFILE

yoshi

KIYOTATSU(キヨタツ)を運営しているウェブ制作者のYoshiです。得意な分野はディレクションとコーディングです。デザインはシンプルなものだけ可能です。他、色々と随時習得中です。