Доброго времени суток, подскажите, пожалуйста, почему в этом коде: Код (PHP): //Проверка пароля $pass_false = 0; if (isset($_POST["pass"])){ if ($_POST["pass"] == "" and $_POST["pass"] == " "){ $pass_false = 1; } if ($pass_false != 1 and strlen($POST["pass"]) < 6){ $pass_false = 2; } if ($_POST["pass"] != "" and $_POST["pass"] != " " and !preg_match("#^[A-Za-z0-9+_+-+ ]+$#",$_POST["pass"])){ $pass_false = 3; } pass_false возвращает "2" даже когда пароль больше шести? Добавлено спустя 12 минут 57 секунд: P.S. Он выдаёт 2 всегда кроме третьего условия. То есть даже когда отправляю пустую форму или пробел
Код (PHP): $POST["pass"]) < 6 тут ошибка Добавлено спустя 23 секунды: IDE Должна была тебе подсветить ошибку.
В смысле? Там написано $POST... а надо $_POST Добавлено спустя 22 секунды: Когда исправил - всё заработало.
SamyRed, ты знаешь разницу между and и && ? тут эффект одинаковый, но вообще, чтобы не словить нежданчик, лучше ставь везде &&
Я знал что разница есть и то изменение and на && иногда помогает, но не знал в чём разница. Спасибо, буду знать.
блин не понимаю, зачем вы ограничиваете пользователей в воде пароля? Раз все равно он хешится. Какая вообще разница, что они там впишут, их проблемы, нас это не должно заботить.
Прикольный код. Это условие никогда не выполнится. Нельзя одновременно быть и пустой строкой и пробелом Даже если and заменить на && или ещё что-то. Кстати, я просто никогда не пишу and, поэтому меня не заботит, какой у него приоритет
Притом, что в набранном виде его никто не хранит. Принято шифровать/криптовать пароль. Да вот только перебрать у тебя не получится.
@mkramer, никогда не говори "никогда": Код (PHP): <?php $arr = [null, '', ' ', '0', '00', '1', 0, 1]; foreach ($arr as $a) { var_dump($a, ($a == '' and $a == ' ')); } NULL bool(false) string(0) "" bool(false) string(1) " " bool(false) string(1) "0" bool(false) string(2) "00" bool(false) string(1) "1" bool(false) int(0) bool(true) int(1) bool(false) Да, все в курсе, что в $_POST не бывает настоящих целых. Никогда…
Стоп. Вы хотите сказать, что || имеет приоритет выше, чем and, но ниже, чем &&? +1. Сишных ||и && - с головой. И ни разу не было вооооооообще никаких проблем и не очевидного поведения.
кто это хочет сказать? Добавлено спустя 6 минут 22 секунды: || и && имеют приоритет выше, чем or и and. В то же время в PHP || имеет равный приоритет с &&. Или я неправ? В других языках, где только одна пара логических "И" и "ИЛИ", у "И" приоритет больше, чем у "ИЛИ": SQL, C, Java, Pascal…
Не, && конечно выше. Иначе бы пользоваться невозможно было. https://php.net/manual/ru/language.operators.precedence.php