如果isset $ _POST

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

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

将其更改为:

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

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

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

从php.net ,isset

如果var存在并且具有非NULL值,则返回TRUE;否则返回FALSE。

空的空间被认为是集合。 你需要使用empty()来检查所有的null选项。

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

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

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

也许你可以试试这个:

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

使用!empty()而不是isset() 。 因为isset()将总是在你的情况下返回true。

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

要回答发布的问题:isset和空一起给出三个条件。 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."!"; 

你可以简单地使用:

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

另外,使用空()

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

你可以试试这个:

 if (isset($_POST["mail"]) !== false) { echo "Yes, mail is set"; }else{ echo "N0, mail is not set"; } 
 <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"; } ?> 

你可以试试,

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