Если isset $ _POST

У меня есть форма на одной странице, которая отправляется на другую страницу. Там он проверяет, заполнена ли входная почта. Если это так, сделайте что-нибудь, и если оно не заполнено, сделайте что-нибудь еще. Я не понимаю, почему он всегда говорит, что он установлен, даже если я отправляю пустую форму. Что не хватает или не так?

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 возвращает true для $_POST потому что массив $_POST суперглобальный и всегда существует (задан).

Или лучше использовать $_SERVER['REQUEST_METHOD'] == 'POST'

От php.net , isset

Возвращает TRUE, если var существует и имеет значение, отличное от NULL, FALSE в противном случае.

пустое пространство считается установленным. Для проверки всех нулевых параметров вам нужно использовать empty ().

Если вы отправите пустую форму, $ _POST ['mail'] по-прежнему будет отправляться, но значение пусто. Чтобы проверить, пусто ли поле, вам необходимо проверить

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

Добавьте следующий текст в текстовую форму ввода: 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"; } 

Вы можете просто использовать:

 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']; } 

Используйте !empty() вместо isset() . Потому что isset() всегда возвращает true в вашем случае.

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

Чтобы ответить на поставленный вопрос: 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."!"; 

Вы можете попробовать следующее:

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