如果是设置$ _POST

时间:2012-10-24 08:16:57

标签: php isset

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

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:

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

16 个答案:

答案 0 :(得分:207)

将其更改为:

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

因此始终设置$_POST,但其内容可能为空。

由于!empty()已经检查了值是否已设置,因此您也可以使用此版本:

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

答案 1 :(得分:21)

使用!empty代替isset。 isset对$_POST返回true,因为$_POST数组是超全局的并且始终存在(设置)。

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

答案 2 :(得分:5)

From php.net,isset

  

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

空白空间被视为已设置。您需要使用empty()来检查所有空选项。

答案 3 :(得分:2)

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

if(isset($_POST["mail"]) && trim($_POST["mail"]) != "") { .. }

答案 4 :(得分:2)

将以下属性添加到输入文本表单: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";    
}

答案 5 :(得分: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'];
}

答案 6 :(得分:2)

使用!empty()代替isset()。因为isset()在您的情况下将始终返回true。

if (!empty($_POST["mail"])) {
    echo "Yes, mail is entered";    
} else {  
    echo "No, mail is not entered";
}

答案 7 :(得分:1)

也许你可以尝试这个:

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

答案 8 :(得分:1)

<?php
    if(isset($_POST['mail']) && $_POST['mail']!='') {
        echo "Yes, mail is set";
    }else{
        echo "N0, mail is not set";
    }
?>

答案 9 :(得分:0)

回答已发布的问题:isset和empty一起给出了三个条件。这也可以由带有ajax命令的Javascript使用。

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

答案 10 :(得分:0)

你可以试试这个:

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

你可以尝试,

 <?php

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

答案 13 :(得分: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 Variable,现在您可以使用Real Escape String,并且下面必须是您的

  

step2_check.php

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

$ db是您的数据库连接。

答案 14 :(得分:0)

先检查表单是否已提交,然后再检查该字段。您还应该清理现场以防止黑客入侵。

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

答案 15 :(得分:-1)

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

if (retrievedDate.Date.Equals(DateTime.Today))
{
    // Do this.
}