У меня есть форма на одной странице, которая отправляется на другую страницу. Там он проверяет, заполнено ли входящее письмо. Если да, то сделайте что-нибудь, а если он не заполнен, сделайте что-нибудь еще. Я не понимаю, почему он всегда говорит, что установлен, даже если я отправляю пустую форму. Что не так?
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";
}
Ответы:
Большинство полей формы всегда заданы, даже если они не заполнены, поэтому вы также должны проверить пустоту.
Поскольку
!empty()
он уже проверяет оба, вы можете использовать это:источник
!
оператора (легче читать, меньше вероятность ошибки и т. Д.) И изменить логику ...if (empty()) {/* No */} else {/* Yes */}
Используйте
!empty
вместоisset
. isset return true,$_POST
поскольку$_POST
массив является суперглобальным и всегда существует (установлен).Или лучше использовать
$_SERVER['REQUEST_METHOD'] == 'POST'
источник
isset
и!empty
во избежание ошибки. РЕДАКТИРОВАТЬ: Упс, он, по-видимому, учится каждый день, а затем Ref$_SERVER['REQUEST_METHOD']
гарантирует, что пользователь отправил форму.$_POST
может быть пустым даже в этом случае. Рассмотрим эту форму:<form method="post"></form>
отправка ничего не отправит действию, но тип запроса будетpost
. Или это может быть сделано с завитком:curl -X POST http://example.com/processor.php
. Если процессор содержит такой кодecho $_SERVER['REQUEST_METHOD']. ' '.var_export(empty($_POST),1);
, вы увидитеPOST true
С php.net isset
пустое пространство считается установленным. Вам нужно использовать empty () для проверки всех нулевых параметров.
источник
Если вы отправите форму пустой, $ _POST ['mail'] все равно будет отправлен, но значение будет пустым. Чтобы проверить, пусто ли поле, вам нужно проверить
источник
Добавьте следующий атрибут в текстовой форме ввода:
required="required"
. Если форма не заполнена, это не позволит пользователю отправить форму.Ваш новый код будет:
источник
Вы можете просто использовать:
В качестве альтернативы используйте empty ()
источник
@
, то есть:@$_POST['username']
. Спасибо, что заметили это.Используйте
!empty()
вместоisset()
. Потомуisset()
что в вашем случае всегда будет возвращать истину.источник
Может быть, вы можете попробовать это:
источник
источник
Давайте подумаем, что это ваша HTML-форма на step2.php
Я думаю, он вам нужен для вашей базы данных, поэтому вы можете присвоить значение HTML-формы переменной php, теперь вы можете использовать Real Escape String, а ниже должен быть ваш
Где $ db - ваше соединение с базой данных.
источник
Убедитесь, что сначала была отправлена ФОРМА, а затем поле. Вы также должны продезинфицировать поле, чтобы предотвратить взломы.
step2_check:
источник
Чтобы ответить на поставленный вопрос: isset и empty вместе дают три условия. Это также может использоваться Javascript с командой ajax.
источник
Вы можете попробовать это:
источник
источник
Можешь попробовать,
источник