だれかのなにかに役立てるウェブ制作者YoTaの趣味ブログ

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

PHPでPOST送信をする時、input text入力値の有無を判定するにはissetよりemptyが推奨です、というのも、issetだけの判別だと、変数中身の空っぽかどうかチェックはできないからです。

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だけの判別だと、変数中身の空っぽかどうかチェックはできないので、気をつけましょう。

ページ上部に戻る