Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2018, 15:42
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

Скрипт для проверки логина и пароля
Добрый день, уважаемые коллеги!

Прошу Вас помочь начинающему. Изучаю самостоятельно 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 символов');
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2018, 16:05
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<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>

Последний раз редактировалось Dilettante_Pro, 05.09.2018 в 16:07.
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2018, 16:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

AndriiS, а наряду с логинами еще и массив паролей в задаче?
Ответить с цитированием
  #4 (permalink)  
Старый 05.09.2018, 16:31
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

Сообщение от laimas Посмотреть сообщение
AndriiS, а наряду с логинами еще и массив паролей в задаче?
Да, это в условии исходный массив. Для того, чтобы проверять функцию которая сравнивает на совпадения. Потом в него добавлять новые.
Ответить с цитированием
  #5 (permalink)  
Старый 05.09.2018, 16:42
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

Dilettante_Pro,
Вам большое спасибо! Теперь искать свои ошибки будет веселей. :-)
Ответить с цитированием
  #6 (permalink)  
Старый 05.09.2018, 16:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от AndriiS
Да, это в условии исходный массив.
Пароли никогда и не под каким предлогом не проверяются на клиенте, ибо это не просто дыра в безопасности будет, а целый портал. Да и логины, коих на сайте может быть множество, вываливать на клиента нет никакого смысла. Такие проверки делаются на сервере, клиент только запрашивает его используя для облегчения жизни пользователю асинхронный запрос.

Смысла в задачах, которые не имеют практического применения никакого нет.
Ответить с цитированием
  #7 (permalink)  
Старый 06.09.2018, 00:41
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

Всем доброй ночи!

Я дал неверное название темы. Нужно просто Скрипт для проверки логина. Без пароля. Погорячился и теперь как честный человек должен сюда привести скрипт по проверке пароля. :-)

По теме, я хотел уточнить вот что: изначально я хотел реализовать другой алгоритм проверки логина. Менее оптимальный, чем привел Dilettante_Pro, но теперь для тренировки хочу сам его сделать. Идея была в том, что первая и вторая функции проверяющие длину и наличие того, что ввел юзер возвращают в результате true или false. Потом, есть третья функция, которая принимает в себя одну из комбинаций (true/true, false/true, false/false, true/false) от двух первых и в зависимости от того, что подходит, потом она выдает return и соответствующий alert. Это я попробую через if else.

Главный мой вопрос, - как передать на вход третьей функции булевы значения? Как взять були из первых двух и отдать их третьей функции для обработки? Передать ей их в виде аргументов как-то? Я запутался.

Заранее благодарен за помощь.
Ответить с цитированием
  #8 (permalink)  
Старый 06.09.2018, 05:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

AndriiS, единственная возможная и нужная проверка логина на клиенте, это его длина мин/макс, разрешенные символы, если есть. Это все, ни какой проверки уникальности не должно быть, хотя бы уже потому, что пока пользователь А чесал репу и выбрал не занятый "abc", пользователь В в это время занял его.

Занятость логина проверяется запросом на сервер по запросу пользователя или же автоматически при смене фокуса заполненного поля. Она также проверяется при отправлении формы, и даже после этого прежде чем добавить в базу, сервер проверяет занятость, не допуская записи не уникальных значений.

Решайте задачи, которые действительно вам предстоит решать на практике.
Ответить с цитированием
  #9 (permalink)  
Старый 06.09.2018, 10:56
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от AndriiS
Идея была в том, что первая и вторая функции проверяющие длину и наличие того, что ввел юзер возвращают в результате true или false. Потом, есть третья функция, которая принимает в себя одну из комбинаций (true/true, false/true, false/false, true/false) от двух первых и в зависимости от того, что подходит, потом она выдает return и соответствующий alert.
Именно так и работает пример в пост 2.
Запуск функций 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>

Последний раз редактировалось Dilettante_Pro, 06.09.2018 в 11:08.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставить остановку в скрипт для фотошопа aarisham Общие вопросы Javascript 2 21.03.2016 13:18
Требуется помощ написать скрипт для ВК Jove Работа 1 03.11.2015 00:04
Где найти скрипт - Социальный Замок для html ? klimentino Общие вопросы Javascript 1 25.10.2013 06:39
скрипт для браузерки ванка Общие вопросы Javascript 11 11.10.2013 12:20
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00