Скрипт для проверки логина и пароля
Добрый день, уважаемые коллеги!
Прошу Вас помочь начинающему. Изучаю самостоятельно JS. Попалась такая задача, простая для знающего человека, над которой я давно уже бьюсь. Есть массив logins с логинами пользователей. Нужно написать скрипт добавления логина в массив logins. Добавляемый логин должен: - проходить проверку на длину от 4 до 16-ти символов включительно - быть уникален, то есть отсутствовать в массиве logins Вот мой скрипт. Но идут ошибки. Что-то где-то не то: "use strict"; const logins = ["Mango", "robotGoogles", "Poly", "Aj4x1sBozz", "qwerty123"]; //массив по-условию let login = prompt("Введите новый логин", ""); //запрос на ввод нового логина //проверка на количество символов const isLoginValid = function (login) { if (login.length < 4 || login.length > 16) { alert('Ошибка! Логин должен быть от 4 до 16 символов'); return false; } return true; }; //проверка на совпадения const isLoginUnique = function (login, allLogins) { if (allLogins.includes(login)) { alert('Такой логин уже используется!'); return false; } return true; }; // добавление логина в массив const addLogin = function (login) { if (isLoginValid(true) && isLoginUnique(true)) { alert('Логин успешно добавлен!'); logins.push(login); } }; //вызов функций isLoginValid(login); isLoginUnique(login, logins); addLogin(login); Алерты ниже, я хочу использовать в последней функции addLogin, которая получит на вход результаты первых двух. //(isLoginValid(true) || isLoginUnique(true)) // alert('Логин успешно добавлен!'); //(isLoginValid(true) || isLoginUnique(false)) // alert('Такой логин уже используется!'); //(isLoginValid(false) || isLoginUnique(true)) // alert('Ошибка! Логин должен быть от 4 до 16 символов'); |
<script> "use strict"; const logins = ["Mango", "robotGoogles", "Poly", "Aj4x1sBozz", "qwerty123"]; //массив по-условию let login = prompt("Введите новый логин", ""); //запрос на ввод нового логина //проверка на количество символов const isLoginValid = function (login) { if (login.length < 4 || login.length > 16) { alert('Ошибка! Логин должен быть от 4 до 16 символов'); return false; } return true; }; //проверка на совпадения const isLoginUnique = function (login, allLogins) { if (allLogins.includes(login)) { alert('Такой логин уже используется!'); return false; } return true; }; // добавление логина в массив const addLogin = function (login) { if (isLoginValid(login) && isLoginUnique(login, logins)) { alert('Логин успешно добавлен!'); logins.push(login); } }; //вызов функций addLogin(login); </script> |
AndriiS, а наряду с логинами еще и массив паролей в задаче?
|
Цитата:
|
Dilettante_Pro,
Вам большое спасибо! Теперь искать свои ошибки будет веселей. :-) |
Цитата:
Смысла в задачах, которые не имеют практического применения никакого нет. |
Всем доброй ночи!
Я дал неверное название темы. Нужно просто Скрипт для проверки логина. Без пароля. Погорячился и теперь как честный человек должен сюда привести скрипт по проверке пароля. :-) По теме, я хотел уточнить вот что: изначально я хотел реализовать другой алгоритм проверки логина. Менее оптимальный, чем привел Dilettante_Pro, но теперь для тренировки хочу сам его сделать. Идея была в том, что первая и вторая функции проверяющие длину и наличие того, что ввел юзер возвращают в результате true или false. Потом, есть третья функция, которая принимает в себя одну из комбинаций (true/true, false/true, false/false, true/false) от двух первых и в зависимости от того, что подходит, потом она выдает return и соответствующий alert. Это я попробую через if else. Главный мой вопрос, - как передать на вход третьей функции булевы значения? Как взять були из первых двух и отдать их третьей функции для обработки? Передать ей их в виде аргументов как-то? Я запутался. Заранее благодарен за помощь. |
AndriiS, единственная возможная и нужная проверка логина на клиенте, это его длина мин/макс, разрешенные символы, если есть. Это все, ни какой проверки уникальности не должно быть, хотя бы уже потому, что пока пользователь А чесал репу и выбрал не занятый "abc", пользователь В в это время занял его.
Занятость логина проверяется запросом на сервер по запросу пользователя или же автоматически при смене фокуса заполненного поля. Она также проверяется при отправлении формы, и даже после этого прежде чем добавить в базу, сервер проверяет занятость, не допуская записи не уникальных значений. Решайте задачи, которые действительно вам предстоит решать на практике. |
Цитата:
Запуск функций isLoginValid(login) и isLoginUnique(login, logins) в функции addLogin возвращает в нее результаты выполнения этих функций Если очень хочется запускать их не в функции addLogin, а передавать в нее их результаты, то можно так: <script> "use strict"; const logins = ["Mango", "robotGoogles", "Poly", "Aj4x1sBozz", "qwerty123"]; //массив по-условию let login = prompt("Введите новый логин", ""); //запрос на ввод нового логина //проверка на количество символов const isLoginValid = function (login) { if (login.length < 4 || login.length > 16) { alert('Ошибка! Логин должен быть от 4 до 16 символов'); return false; } return true; }; //проверка на совпадения const isLoginUnique = function (login, allLogins) { if (allLogins.includes(login)) { alert('Такой логин уже используется!'); return false; } return true; }; // добавление логина в массив const addLogin = function (login, parValid, parUniq) { if (parValid && parUniq) { alert('Логин успешно добавлен!'); logins.push(login); } }; //вызов функций addLogin(login, isLoginValid(login), isLoginUnique(login, logins)); </script> |
Часовой пояс GMT +3, время: 12:44. |