CJ_Junyor
29.09.2009 - 17:52
Привет народ, не могу разобраться почему эта проверка не работает
Все данные заведомо ввожу такими чтобы добраться до строки
PHP |
$password=trim($_POST['password']); |
После этой строки стояла проверка
PHP |
if($status && ((empty($password)) || (strlen($password)<6))) |
, но она тоже не работала правильно...
Вот кусок кода....
PHP |
$status=1; if(!isset($_POST['password'])) { $_SESSION['form']=0; $status=0; $str="Вы должны указать пароль!<br/>Пожалуйста вернитесь на форму смены пароля и укажите Пароль.<br/> <a href=\"change_pass.php\" target=\"_self\">Вернуться к форме смены пароля</a><br/>"; }else { $password=trim($_POST['password']);//Вот эта проверка даже с заведомо успешными данными не проходит! if($status && ($password=="" || (strlen($password)<6))) { $_SESSION['form']=0; $status=0; $str="Вы должны указать пароль!<br/>Пароль должен состоять не менее чем из 6-ти знаков. <br/> Пожалуйста вернитесь на форму восстановления пароля и укажите Пароль.<br/> <a href=\"change_pass.php\" target=\"_self\">Вернуться к форме смены пароля</a><br/>"; }else |
Короче по каким-то не объяснимым причинам проверка на длину пароля и непустоту не проходит, даже когда должна....
Не знаю че делать, подскажите где я туплю...
Спустя 26 минут, 5 секунд (29.09.2009 - 17:18) Gabriel написал(а):
PHP |
if($status && ((empty($password)) || (strlen($password)<6))) |
жачем такое количество скобок?
PHP |
if($status && empty( $password ) || strlen( $password ) < 6 ) |
Спустя 1 минута, 11 секунд (29.09.2009 - 17:19) Michael написал(а):
Цитата |
Вот эта проверка даже с заведомо успешными данными не проходит! |
Да? А у меня почему то проходит.
PHP |
$status=1; $password='yrittttt'; if($status && ($password=="" || (strlen($password)<6))) { echo '1'; // не проходит }else{ echo '2'; // проходит } |
Выводит: 2.
Спустя 5 минут, 4 секунды (29.09.2009 - 17:25) CJ_Junyor написал(а):
Gabriel
Цитата |
if($status && empty( $password ) || strlen( $password ) < 6 )
|
В этой конструкции проверка empty - полностью игнорируется ... в php на сколько я понял, как в c++ если первое условие ложь, то второе даже не проверяется при логическом И?
Ну так это не объясняет почему этот цикл проверок игнорируется,
- первое услови $status - на момент проверки равен 1 => истина
- второе empty - не пуст (таким передаю)
- третье должно попросту не играть роли, т.к. второе уже истина
Я пока только понял что empty($password) - не работает как надо, но пойму почему, толи из-за обрезания trim()?
Спустя 6 минут, 18 секунд (29.09.2009 - 17:31) CJ_Junyor написал(а):
Michael
Так что ты думаешь со скриптом?
Может че-то с серваком?
Передаю пустую строку и проверка полностью на игноре...
Спустя 6 минут, 18 секунд (29.09.2009 - 17:37) Michael написал(а):
Цитата (CJ_Junyor @ 29.09.2009 - 14:31) |
Передаю пустую строку и проверка полностью на игноре... |
Проверь что пришло в $_POST.
Спустя 7 минут, 28 секунд (29.09.2009 - 17:45) CJ_Junyor написал(а):
Цитата |
Проверь что пришло в $_POST. |
Проверил - данные доходят в правильном виде (т.е. если пустое поле - то пусто)
но проверка все равно считает что там не пусто или чето еще, не могу разобраться...
Может это из-за функции trim() до условия проверки?
Спустя 14 минут, 40 секунд (29.09.2009 - 17:59) glock18 написал(а):
Цитата |
if($status && empty( $password ) || strlen( $password ) < 6 ) |
переведи слово empty с английского на русский.
Спустя 5 минут, 29 секунд (29.09.2009 - 18:05) twin написал(а):
Спустя 6 минут, 10 секунд (29.09.2009 - 18:11) CJ_Junyor написал(а):
Цитата |
переведи слово empty с английского на русский. |
В каком смысле, функция же на анг.?
Спустя 3 минуты, 35 секунд (29.09.2009 - 18:15) CJ_Junyor написал(а):
twin
Кодировка чего, входящих данных?
Я полагаю, что пустая переменная в любой кодировке будет пустой.