表单提交导致PHP中的空白页

时间:2019-04-15 19:17:55

标签: php isset

我正在尝试创建一个登录系统,我想创建一个条件语句来检查是否设置了全局变量$ _POST ['submit-form']。

如果设置了全局变量$ _POST ['submit-form'],那么我想回显所提交表单的字段。效果很好。

当我要检查全局变量$ _POST ['submit-form']是否为空时,问题就来了,当我不提交任何表单时,我得到一个空白页。应该会发出类似“您未输入任何内容,请重试”的信息。

我不知道怎么了。

这是表格的代码。

fns.reduce(
  (acc, fn) => acc.pipe( switchMap(fn) ) // switchMap to next fn result
  , of(undefined)                        // initial value to pass to the first fn
)
  .subscribe(result=>{
    console.log(result);
  })

..这是表单处理程序的代码。

  <form action="test-form2.php" method="POST">


      Name: <input type="text" name="name"><br>
      E-mail: <input type="text" name="email"><br>


    <input type="submit" name="submit-form" value="submit">


  </form>

3 个答案:

答案 0 :(得分:3)

您的$_POST始终具有submit-form(并且它始终不为空),因此if语句始终返回true。尝试仅检查(例如)$_POST['name']$_POST['email']是否为空。

答案 1 :(得分:2)

您的代码存在的问题是,检查设置是否足够..因为可能将其设置为为空-实际上,您想要的是同时检查 strong> isset以及是否为empty IE:

if (isset($_POST['submit-form'] && $_POST['submit-form'] != '' && $_POST['submit-form'] != null)  

如果上述if语句失败,您极有可能未提交$_POST['submit-form']

更新 检查空白字段

if ($_POST['name'] != '' && $_POST['email'] != ''){
   // Do stuff
}else{
    if ($_POST['name'] == ''){
       echo "name is empty";
    }
    if ($_POST['email'] == ''){
       echo "email is empty";
    }
}

答案 2 :(得分:1)

这是因为isset($_POST['submit-form'])会返回true,即使您没有在 Name Email 字段中输入任何内容,其值也将是按下 submit 按钮提交表单时,submit字符串。这就是以下代码块的else部分未得到执行的原因。

if(isset($_POST['submit-form'])) {

} else {
      echo "You have entered nothing or your username and/or password is incorrect, please try again.";
}

使用var_dump($_POST);查看完整的数组结构。讲完这些后,您可以使用以下代码段来获得所需的结果,

if(isset($_POST['submit-form'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];

    if(($_POST['name'] != "") && ($_POST['email']!= "")) {    
        echo "This is your name: ".$name."<br>";
        echo "This is your email: ".$email;
        // header('refresh=3;url = ../leden/index.php');
   }else{
       echo "You have entered nothing or your username and/or password is incorrect, please try again.";
   }
}

验证和仔细检查用户输入应是列表中的下一个操作项。