問題
フォームでの必須項目の入力チェックで「isset」を使うと通過してしまう。
解決策
必須項目の入力チェック
フォームでの必須項目の入力チェックをphpで行う時、「isset」ではテキストフィールドが通過してしまいます。
なので代わりで「empty」を使うことを推奨します。
「isset」ではなく「empty」でチェックを行います。
フォームから受け取ったPOSTの値がちゃんと入っているかどうかを「isset」ではなく「empty」でチェックを行うことで問題なくチェックすることができます。
「isset」によるチェック
if( isset( $_POST["name"] ) ){
return true;
}else{
return false;
}
結果:未入力でも「true」
「empty」によるチェック
if( !empty( $_POST["name"] ) ){
return true;
}else{
return false;
}
結果:未入力だと「false」
ここに注意!
- 「isset」は変数が存在するかどうかを判定するため、POSTで取得する値は未入力でも空の状態で存在するため、trueを返してしまいます。
「empty」は変数が空であるかどうかを判定するので、未入力ならfalseを返してくれます。
参考ページ
以下のサイトが、より詳しく解説してくれています。
【PHPの入力値確認ではなぜisset関数ではなくempty関数を使うのか – nicson (@_@) IT漂流記】
http://ohde-eulab.hatenablog.com/entry/2015/01/13/224004
【PHPのisset関数で変数が存在するか確認する方法 | TechAcademyマガジン】
https://techacademy.jp/magazine/11410
コメント