У меня есть форма на одной странице, которая отправляется на другую страницу. Там он проверяет, заполнена ли входная почта. Если это так, сделайте что-нибудь, и если оно не заполнено, сделайте что-нибудь еще. Я не понимаю, почему он всегда говорит, что он установлен, даже если я отправляю пустую форму. Что не хватает или не так?
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"; } ?>