使用isset()验证表单字段

Den*_*one 0 php

验证我的表单字段不为空时遇到问题.我以为我过去曾使用过isset但我在下面遇到问题.我知道我可以用==""做到这一点,但想以这种方式弄明白.

if(isset($_POST['submit'])){
$error= false;
 if (isset($_POST['name'])){$name=$_POST['name'];}else{$error=true; $error_message="enter a name"; echo "no name";};

     if(!$error){
                //SUBMIT TO DATABASE
      }else{  echo $error_message;
      }

}
Run Code Online (Sandbox Code Playgroud)

但我不断收到error_message未设置的错误.

Cro*_*osS 6

Isset()只测试变量是否存在.在POST表单中几乎总是如此(即使变量为空).为了确保它们不是,请使用empty()测试.这是代码:

if(count($_POST) > 0){
    $error = false;
    if (!empty($_POST['name']))
        $name = $_POST['name'];
    else{
        $error = true;
        $error_message = "enter a name";
        echo "no name";
    }
    if(!$error)
        //SUBMIT TO DATABASE
    else
        echo $error_message;
}
Run Code Online (Sandbox Code Playgroud)

在你的第一个后面你也有分号的语法错误.注意,设置为0的变量被检测为空.检查http://php.net/manual/en/function.empty.php