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