【问题标题】:Form submission results in a blank page in PHP表单提交导致PHP中的空白页面
【发布时间】:2019-04-15 19:17:54
【问题描述】:

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

如果设置了全局变量 $_POST['submit-form'],那么我想回显提交表单的字段。这工作正常..

当我想检查全局变量 $_POST['submit-form'] 是否为空时,问题就来了,当我提交表单时,我得到一个空白页。它应该回显类似“您没有输入任何内容,请重试”之类的内容。

我不知道怎么了。

这是表单的代码。

  <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>

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

<?php


    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.";

      // header('refresh=3;url = /test-form1.php');

 }

?>

【问题讨论】:

    标签: php isset


    【解决方案1】:

    你的$_POST 总是有submit-form(而且它总是不为空),所以if 语句总是返回true。尝试仅检查(例如)$_POST['name']$_POST['email'] 是否不为空。

    【讨论】:

    • 哦,是的……我明白了。谢谢你,我现在就试试这个。
    【解决方案2】:

    您的代码的问题在于检查它是否已设置是不够的 .. 因为它可能设置为 并且 为空 -- 实际上您想要检查 both 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";
        }
    }
    

    【讨论】:

    • 感谢您的解释,我会尝试看看是否可以成功。
    • 嗨 Zak,它不工作,表单仍在提交,尽管字段为空。至少现在我没有得到空白页,但它没有检查提交表单时表单字段是否为空。
    • 是的,这行得通,我每次都在检查提交按钮.. 这是错误的。我必须检查特定表单字段的值。谢谢你,你摇滚!!
    【解决方案3】:

    这是因为isset($_POST['submit-form']) 会返回true,即使您没有在NameE-mail 字段中输入任何内容,它的值也会是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); 查看完整的数组结构。说了这些,就可以使用下面的sn -p来达到想要的效果了,

    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.";
       }
    }
    

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

    【讨论】:

    • 是的,你做到了!现在可以了。所以我必须检查是否设置了表单字段而不是提交按钮?我想我现在开始明白了。非常感谢@Rajdeep!
    • @JhonattanRapprecht 很高兴我能帮上忙!快乐编码! :-)