109

我在一个页面上有一个提交到另一个页面的表单。在那里,它检查输入mail是否已填充。如果是这样,那么做一些事情,如果没有填满,做其他事情。我不明白为什么它总是说它已设置,即使我发送了一个空表单。有什么遗漏或错误?

step2.php

<form name="new user" method="post" action="step2_check.php"> 
    <input type="text" name="mail"/> <br />
    <input type="password" name="password"/><br />
    <input type="submit"  value="continue"/>
</form>

step2_check.php

if (isset($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {    
    echo "N0, mail is not set";
}
4

15 回答 15

230

大多数表单输入总是被设置,即使没有填满,所以你也必须检查是否为空。

由于!empty()is 已经检查了两者,您可以使用它:

if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {  
    echo "No, mail is not set";
}
于 2012-10-24T08:19:23.060 回答
25

使用!empty而不是isset. isset 返回 true$_POST因为$_POST数组是超全局的并且总是存在(设置)。

或者更好的使用$_SERVER['REQUEST_METHOD'] == 'POST'

于 2012-10-24T08:18:43.240 回答
5

来自 php.net, isset

如果 var 存在并且值不是 NULL,则返回 TRUE,否则返回 FALSE。

空白空间被认为是集合。您需要使用 empty() 检查所有空选项。

于 2012-10-24T08:20:25.710 回答
3

如果您发送的表单为空,$_POST['mail']仍会发送,但值为空。要检查该字段是否为空,您需要检查

if(isset($_POST["mail"]) && trim($_POST["mail"]) != "") { .. }
于 2012-10-24T08:19:20.927 回答
2

您可以简单地使用:

if($_POST['username'] and $_POST['password']){
  $username = $_POST['username'];
  $password = $_POST['password'];
}

或者,使用empty()

if(!empty($_POST['username']) and !empty($_POST['password'])){
  $username = $_POST['username'];
  $password = $_POST['password'];
}
于 2015-04-30T14:26:30.017 回答
1

将以下属性添加到输入文本表单:required="required". 如果表单未填写,则不允许用户提交表单。

您的新代码将是:

<form name="new user" method="post" action="step2_check.php"> 
<input type="text" name="mail" required="required"/> <br />
<input type="password" name="password" required="required"/><br />
<input type="submit"  value="continue"/>
if (isset($_POST["mail"])) {
    echo "Yes, mail is set";    
}
于 2014-10-09T17:08:38.760 回答
0

也许你可以试试这个:

if (isset($_POST['mail']) && ($_POST['mail'] !=0)) { echo "Yes, mail is set"; } else { echo "No, mail is not set"; }

于 2014-10-01T03:34:12.413 回答
0
<?php
    if(isset($_POST['mail']) && $_POST['mail']!='') {
        echo "Yes, mail is set";
    }else{
        echo "N0, mail is not set";
    }
?>
于 2017-11-10T07:23:43.850 回答
0

让我们认为这是您在 step2.php 中的 HTML 表单

step2.php

<form name="new user" method="post" action="step2_check.php"> 
    <input type="text" name="mail"/> <br />
    <input type="password" name="password"/><br />
    <input type="submit"  value="continue"/>
</form>

我认为您的数据库需要它,因此您可以将 HTML 表单值分配给 php 变量,现在您可以使用 Real Escape String 并且下面必须是您的

step2_check.php

if(isset($_POST['mail']) && !empty($_POST['mail']))
{
$mail = mysqli_real_escape_string($db, $_POST['mail']);
}

其中 $db 是您的数据库连接。

于 2019-04-04T19:09:40.383 回答
0

先检查是否已经提交了 FORM,然后是字段。您还应该对该字段进行消毒以防止黑客入侵。

form name="new user" method="post" action="step2_check.php"> 
    <input type="text" name="mail"/> <br />
    <input type="password" name="password"/><br />
    <input type="submit"  id="SubmitForm" name= "SubmitForm" value="continue"/>
</form>

step2_check:


if (isset($_POST["SubmitForm"]))
   {
   $Email =  sanitize_text_field(stripslashes($_POST["SubmitForm"]));
   if(!empty($Email))
     echo "Yes, mail is set"; 
   else
     echo "N0, mail is not set";
   } 
}

于 2019-10-25T21:26:09.687 回答
-1

要回答发布的问题:isset 和 empty 一起给出了三个条件。Javascript 也可以通过 ajax 命令使用它。

$errMess="Didn't test";   // This message should not show
if(isset($_POST["foo"])){ // does it exist or not
    $foo = $_POST["foo"]; // save $foo from POST made by HTTP request
    if(empty($foo)){      // exist but it's null
        $errMess="Empty"; // #1 Nothing in $foo it's emtpy

    } else {              // exist and has data
        $errMess="None";  // #2 Something in $foo use it now
      }
} else {                  // couldn't find ?foo=dataHere
     $errMess="Missing";  // #3 There's no foo in request data
  }

echo "Was there a problem: ".$errMess."!";
于 2015-04-05T15:49:13.427 回答
-1

你可以试试这个:

if (isset($_POST["mail"]) !== false) {
    echo "Yes, mail is set";    
}else{  
    echo "N0, mail is not set";
}
于 2015-09-26T20:21:36.500 回答
-1
<form name="new user" method="post" action="step2_check.php"> 
  <input type="text" name="mail" required="required"/> <br />
  <input type="password" name="password" required="required"/><br />
  <input type="submit"  value="continue"/>
</form>

<?php
if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
}else{  
    echo "N0, mail is not set";
}
?>
于 2016-07-11T07:31:18.167 回答
-1

你可以试试,

 <?php

     if (isset($_POST["mail"])) {
            echo "Yes, mail is set";    
        }else{  
            echo "N0, mail is not set";
        }
  ?>
于 2017-05-10T13:36:25.033 回答
-1

$-POST METHOD:如果我们在表单标签中使用 POST 方法来传递数据,我们可以使用 $_POST 数组在服务器中查找数据。使用这个数组名我们从服务器获取数据。($_POST['name'])信息使用 POST 方法从表单发送的内容对其他人是不可见的(所有名称/值都嵌入在 HTTP 请求的正文中),并且对要发送的信息量没有限制。示例代码:

<html>
<head>
</head>
<body>
<?php
if(isset($_POST['submit']))
{if(isset($_POST['name']) && isset($_POST['roll']))
{echo"<h1>form submitted</h1>";echo"your name is". $_POST['name']."<br>";
echo "your roll number is". $_POST['roll']."<br>";}}
else{?>
<form action="" method="POST">
Name:<input type="text" name="name"><br><br>
Roll:<input type="text" name="roll"><br>
<br><input type="submit" value="submit" name="submit">
</form>
<?php}?>
</body>
</html>
于 2021-01-16T17:22:17.990 回答