Если isset $ POST
у меня есть форма на одной странице, которая отправляет на другую страницу. Там он проверяет, заполнена ли входная почта. Если это так, то сделайте что-нибудь, а если оно не заполнено, сделайте что-нибудь еще. Я не понимаю, почему он всегда говорит, что он установлен, даже если я отправляю пустую форму. Чего не хватает или что не так?
Шаг2.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";
}
13 ответов:
измените его на это:
if (isset($_POST["mail"]) && !empty($_POST["mail"])) { echo "Yes, mail is set"; }else{ echo "N0, mail is not set"; }
поэтому $_POST всегда установлен, но его содержимое может быть пустым.
С тех пор !пустой() проверяет, является ли значение, вы также можете использовать эту версию:
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'
From php.net, иссет
возвращает TRUE, если var существует и имеет значение, отличное от NULL, FALSE иначе.
пустое пространство считается установленным. Вы должны использовать empty () для проверки всех параметров null.
Если вы отправляете форму пустой, $_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($_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"; }
может быть, вы можете попробовать это:
if (isset($_POST['mail']) && ($_POST['mail'] !=0)) { echo "Yes, mail is set"; } else { echo "No, mail is not set"; }
<?php if(isset($_POST['mail']) && $_POST['mail']!='') { echo "Yes, mail is set"; }else{ echo "N0, mail is not set"; } ?>
чтобы ответить на опубликованный вопрос: 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"; } ?>