2013-05-03 2 views
0

У меня есть форма с именем пользователя и паролем, и значение будет отправлено на check.php , когда у меня нет ввода имени пользователя и пароля (слева) isset ($ _ POST ["username"]) и isset ($ _ POST ["password"]) возвращает true, что не должно быть так, как я ничего не установил. Но пустые ($ _ POST [ "имя пользователя"] возвращает истину, как ожидается. может кто-нибудь объяснить это поведение IsSet.не может понять поведение isset и пустое в следующем виде

Благодаря

+0

http://kunststube.net/isset/ объяснит все это для вас. – vascowhite

ответ

2

Если представить элементы формы ...

<input name='username'... 

... но они пустые, он заполнит массив $_POST пустыми значениями по умолчанию. Таким образом, переменные установлены, но они пусты ("").

Что я обычно делаю в этом случае это что-то вроде

if (isset($_POST['username'] && $_POST['username']) { ... } 

В этом случае он будет проверять, если он установлен (то есть, форма представляется) и, если значения не пусты. Если они пусты (""), PHP будет интерпретироваться как false, и условие не будет выполнено.

1

Это может быть потому, что ваш $ _POST [ «имя пользователя»] установлено и может быть пустым, поэтому преодолеть проверить, как этот

if ((isset($_POST["username"]) && ($_POST["username"]!="")) 
0

isset — Determine if a variable is set and is not NULL, Если переменная была отменена с unset(), она больше не будет установлена. isset() вернет FALSE, если тестирует переменную, которая была установлена ​​в NULL. Также обратите внимание, что NULL-байт («\ 0») не эквивалентен константе PHP NULL.

Если задано несколько параметров, isset() вернет TRUE только в том случае, если установлены все параметры. Оценка идет слева направо и останавливается, как только встречается неустановленная переменная. : http://php.net/manual/en/function.isset.php

Смежные вопросы