Хотите знать, будет ли это работать как один оператор if () [closed]

0

Я работаю над регистрационной формой и работаю над оператором if, где он проверяет, соответствует ли пароль паролю подтверждения.

Мне интересно, могу ли я совместить проверку двух паролей друг с другом с помощью проверки длины пароля и вернуть ошибку или продолжить вставку пользователя в базу данных, если оба пройдут.

Является ли это логичным или возможным комбинировать сравнение паролей с функцией strlen() в том же операторе if(), разделенном с || или он должен быть && между ними?

        if ($password != $password_confirm || strlen($password) < 8) {
$error_register = 'Passwords do not match or is under less that 8 characters';
        } else {
      //finish inserting user into database statement
          }

Или я должен просто сделать два разных заявления?

  • 6
    Выглядит хорошо. У вас была конкретная проблема? Оставить то, что у вас есть, или сделать два разных утверждения, в первую очередь основано на мнении. По сути, ваш вопрос «Должны ли мои два потенциальных недействительных результата иметь свое собственное соответствующее сообщение» (возможно, вопрос для User Experience ).
  • 2
    Я делаю два разных заявления
Показать ещё 4 комментария
Теги:
if-statement
strlen

4 ответа

4
Лучший ответ

Вы должны сделать два разных оператора, если хотите показать два разных сообщения об ошибках, например:

if ($password != $password_confirm) {
   $error_register = 'Passwords do not match';
} elseif (strlen($password) < 8) {
   $error_register = 'Password is under less than 8 characters';
} else {
   //finish inserting user into database statement
}

В противном случае код, который вы предоставляете, в порядке.

  • 0
    Спасибо за часть elseif (), я даже не думал об этом!
  • 0
    Это то, что я отправил, я также могу использовать это, чтобы проверить, является ли формат электронной почты правильным, и был ли он уже принят другим пользователем.
3

То, что у вас там, должно работать отлично.

Основное различие между этими двумя параметрами заключается в том, что если у вас есть отдельные инструкции, вы можете дать пользователю немного больше информации, сообщив им, что они не соответствуют, или что они слишком короткие. Как есть, пользователь будет знать только то, что один или другой (или оба) ошибочны.

Если вы не чувствуете необходимости проводить различие между двумя случаями, одно утверждение несколько более компактно.

3

Это хорошо с точки зрения программирования, но не с точки зрения пользовательского интерфейса. Гораздо приятнее вернуть определенное сообщение об ошибке как для ошибки "пароли не совпадают", так и с ошибкой "слишком короткий пароль".

  • 1
    Ты прав! Я превращу его в два разных утверждения, разделенных elseif ()
2

Это, наверное, прекрасно, как одно утверждение. Логика здесь не занимает много времени, чтобы понять. Стилистически лучше проверить первый поток (т.е. Совпадение паролей и правильную длину). Это всего лишь тонкий способ помочь любым будущим читателям кода легче понять, что ожидается здесь:

if ($password == $password_confirm && strlen($password) >= 8) {
//finish inserting user into database statement
} else {
    $error_register = 'Passwords do not match or is under less that 8 characters';
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню