【问题标题】:PHP isset not working in POST methodPHP isset 在 POST 方法中不起作用
【发布时间】:2023-03-28 13:37:01
【问题描述】:

我尝试使用 post 方法制作表单,并且我想检查字段是否填充有 isset()。但即使字段为空,isset 也会返回 true。

这里是一个简化的代码:(页面名称:test.php,post方法指向自己)

if (isset($_POST['test'])) {
    echo 'field set';
}   

?>

<form method="post" action="test.php">
    <input type="text" name="test"/>
    <input type="submit" value="Submit"/>
</form>

当您提交时,它总是回显“字段集”,即使您没有在“测试”输入中输入任何内容。

感谢您的回答!

【问题讨论】:

  • 字段已设置,但为空()
  • var_dump() 是您整个 PHP 职业生涯中最好的朋友之一。尝试在 $_POST 超全局上使用它,您会发现自己出了什么问题。
  • 是的,当您提交表单时,该字段已设置,即使其值为空字符串。
  • 只是为了让您知道将始终为 post 变量设置该值。您将始终需要检查 empty
  • 好吧,对不起,我认为 isset() 也在查看变量是否为空。我的坏

标签: php post isset


【解决方案1】:

所以检查$_POST['test']是否为空并尝试这样

if (isset($_POST['test']) && trim($_POST['test']) != '') {
    echo 'field set';
} 

您也可以使用empty,但Note that "0" is also "empty" 和它一起使用trim 输入以删除空格。另一种方法是使用strlen检查输入的长度

if (isset($_POST['test']) && trim(strlen($_POST['test'])) > 0) {
    echo 'field set';
}

【讨论】:

    【解决方案2】:

    尝试使用empty() 来检查在提交表单$_POST['test'] 后总是在isset() 中找到空白原因,即使它是空白的。所以需要检查empty()

    if (!empty($_POST['test'])) {
        echo 'field set';
    } 
    

    0 将是空的/空白检查empty()

    【讨论】:

    • 注意“0”也是“空”。
    • 谢谢!我只是把웃웃웃웃웃的评论作为答案,但你的也很有效!
    【解决方案3】:

    您可以使用empty() method.try 使用此代码来执行此操作。

    例如:echo !empty($_POST['test']) ? "field set" : "";

    【讨论】:

      【解决方案4】:

      它将回显您的字段已设置,因为您要检查的只是数组键 test 是否与 isset() 一起存在。只要您的表单中有一个名为 test 的字段,它就会创建一个空键,从而导致它被设置。

      你更喜欢看key是否被设置,key是否也为空。

      你可以这样做:

      if( isset( $key['test'] ) && $key['test'] !== "" ){
          //Do something
      }
      

      【讨论】:

        猜你喜欢
        • 2020-09-23
        • 1970-01-01
        • 1970-01-01
        • 2018-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多