Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.05.2016, 02:31
Аватар для WhoAm7i7
Новичок на форуме
Отправить личное сообщение для WhoAm7i7 Посмотреть профиль Найти все сообщения от WhoAm7i7
 
Регистрация: 16.05.2016
Сообщений: 3

как правильно реализовать ветку для ввода пароля?(начальный уровень)
Доброго дня всем!
В данный момент только начал изучать JavaScript, так что не судите строго.
Суть такова:
Написать код, который будет запрашивать логин пользователя (prompt). - Done

Если посетитель вводит 'admin', то спрашивать пароль, если нажал отмена (escape) — выводить 'Canceled', если вводит что-то другое — 'Access denied'. - Done

Пароль проверять так. Если введён пароль 'passw0rd', то выводить 'Welcome home!', иначе — 'Wrong password', при отмене — 'Canceled'. - Done

Вопрос: как совместить эти два кода, что бы все было логично и последовательно, а не так как сейчас?

Код:
var login = prompt('Введите логин!');
if(login == 'admin'){
prompt('Введите пароль!');
} else if(login == null) {
alert('Отмена');
} else {
alert('В доступе отказано');
}

var pass = prompt('Введите пароль!');

if(pass == 'passw') {
alert('Welcome Home');
} else if(pass == null){
alert('Отмена');
} else {
alert('Неверный пароль');
}

http://jsbin.com/dodokesuje/edit?js,console
Ответить с цитированием
  #2 (permalink)  
Старый 16.05.2016, 11:53
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

WhoAm7i7,
Вообще-то логин-пароль обычно вводятся при помощи html
http://htmlbook.ru/samhtml5/formy/pole-dlya-parolya
а вот проверяться могут уже при помощи скрипта js - хотя обычно на сервере
Кроме того, и сервер сам может запрашивать логин-пароль, например
http://www.vsmirnov.ru/articles/passwords.html
Ответить с цитированием
  #3 (permalink)  
Старый 16.05.2016, 16:40
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Dilettante_Pro, так задача ж учебная, наверно.

Я бы сделал так:
function checkCredentials(loginRequired, passwordRequired) {
	switch (prompt('Введите логин')) {
		case loginRequired:
			break;
		case null:
			alert('Отмена');
			return;
		default:
			alert('В доступе отказано');
			return;
	}

	switch(prompt('Введите пароль')) {
		case passwordRequired:
			break;
		case null:
			alert('Отмена');
			return;
		default:
			alert('Неверный пароль')
			return;
	}

	alert('Welcome home');
}

checkCredentials('admin', 'passw0rd');
Ответить с цитированием
  #4 (permalink)  
Старый 16.05.2016, 17:50
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Erolast,
В таком случае я бы просто сделал так:
var login = prompt('Введите логин!');
   if(login == 'admin'){
      var pass = prompt('Введите пароль!');
      if(pass == 'passw') {
         alert('Welcome Home');
      } else {
         alert('Неверный пароль');
      }
   }  else {
   alert('В доступе отказано');
}

Но, на мой взгляд, начинать надо с html - js вторичное вспомогательное средство для html
Ответить с цитированием
  #5 (permalink)  
Старый 16.05.2016, 18:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Erolast
так задача ж учебная, наверно
Учить надо начинать с того, что веб приложение, это приложение с кучей ворот, и не известно кто в них еще постучит. А посему, надо уяснить сразу - пароль никогда на клиенте не проверялся и проверяться не будет, и тем более клиенту никогда не решать дать доступ или нет. А то так и будет поступать.

Учебная - ну так пусть проверяет верен ли ввод сравнивая введенной с контрольным вводом. Это нужно проверять и можно на клиенте.

Последний раз редактировалось laimas, 16.05.2016 в 18:16.
Ответить с цитированием
  #6 (permalink)  
Старый 16.05.2016, 18:29
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Сообщение от Dilettante_Pro Посмотреть сообщение
Erolast,
В таком случае я бы просто сделал так
А где обработка нулевого значения? По условию должен быть выведен алерт "отмена".

Цитата:
пароль никогда на клиенте не проверялся и проверяться не будет
Да. Потому что у клиента есть доступ ко всему, что происходит на клиентской стороне чисто по определению.
Ответить с цитированием
  #7 (permalink)  
Старый 16.05.2016, 18:46
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Erolast,

Цитата:
А где обработка нулевого значения? По условию должен быть выведен алерт "отмена".
А как вы попадете на case null?
function checkCredentials(loginRequired, passwordRequired) {
	switch (prompt('Введите логин')) {
		case loginRequired:
			break;
		case null:
			alert('Отмена');
			return;
		default:
			alert('В доступе отказано');
			return;
	}

	switch(prompt('Введите пароль')) {
		case passwordRequired:
			break;
		case null:
			alert('Отмена');
			return;
		default:
			alert('Неверный пароль')
			return;
	}

	alert('Welcome home');
}

checkCredentials('admin', 'passw0rd');

Попадете - Esc
Но, кстати, в моем варианте это тоже не проблема:
var login = prompt('Введите логин!');
   if(login == 'admin'){
      var pass = prompt('Введите пароль!');
      if(pass == 'passw') {
         alert('Welcome Home');
      } else if(pass == null){
         alert('Отмена');
      }else {
         alert('Неверный пароль');
      }
   } else if(login == null) {
      alert('Отмена');
   } else {
      alert('В доступе отказано');
}

Последний раз редактировалось Dilettante_Pro, 16.05.2016 в 19:10.
Ответить с цитированием
  #8 (permalink)  
Старый 16.05.2016, 19:28
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
кстати, в моем варианте это тоже не проблема
И чем он теперь проще моего?

Последний раз редактировалось Erolast, 16.05.2016 в 19:34.
Ответить с цитированием
  #9 (permalink)  
Старый 17.05.2016, 06:41
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от Erolast Посмотреть сообщение
И чем он теперь проще моего?
Может, и не проще - это исправленный вариант топикстартера
Ответить с цитированием
  #10 (permalink)  
Старый 18.05.2016, 18:20
Аватар для WhoAm7i7
Новичок на форуме
Отправить личное сообщение для WhoAm7i7 Посмотреть профиль Найти все сообщения от WhoAm7i7
 
Регистрация: 16.05.2016
Сообщений: 3

Ребята благодарю, за готовые решения и варианты, с ваших комментов можно дополнительно обучаться! Все решения взял на заметку + доп.информацию от Laimas "Учить надо начинать с того, что веб приложение, это приложение с кучей ворот, и......."
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Как правильно прописать свой код в .js Всеми_Любимый Элементы интерфейса 6 23.02.2010 21:34
Как правильно реализовать на Java-Script trio Общие вопросы Javascript 2 06.10.2009 19:11
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30