Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как написать скрипт для проверки несколько логинов и паролей в одном input ? (https://javascript.ru/forum/misc/67262-kak-napisat-skript-dlya-proverki-neskolko-loginov-i-parolejj-v-odnom-input.html)

Vitalik2301 06.02.2017 19:47

Как написать скрипт для проверки несколько логинов и паролей в одном input ?
 
Ребята, скажите возможно ли написать скрипт (Javasript DOM) чтобы в одном окне input реализовать проверку ввода несколько логинов и паролей к ним ?
Без использования модальных окон, метода prompt !
Только одно окно input и две кнопки.
Это в обще реально ?
:help:


<form name="shad">
<input type="text" name="txt" id="put" size="10"/>
<span id="tim"> </span>

<p>
<input type="button" value="Войти" onclick=""/>
</p>
<input type="reset" id="tom" onclick=""/>
</form>

laimas 06.02.2017 19:53

Цитата:

Сообщение от Vitalik2301
реализовать проверку ввода несколько логинов и паролей к ним

Это опять ради "учится" или же для реального применения?

Vitalik2301 06.02.2017 19:58

Реального применения . У меня есть некоторые наброски скрипта, но все эти попытки не рабочие, получается только один логин и пароль.
Следуя по схеме if else не получается реализовать.

Но как добавить еще нескольких логинов и паролей к ним, вот это "теорема ферма" ?

function doCheck() {
if(document.shad.txt.value == "admin") {
document.getElementById("tim").innerHTML='<font color="green"> Введите пароль ? </font>';
document.getElementById("put").value='';
document.getElementsByTagName("input")[0].setAttribute("type", "password");
}
else if(document.shad.txt.value == "123"){
document.getElementById("tim").innerHTML='<font color="#54948E"> ДОСТУП РАЗРЕШЕН ! </font>'
document.getElementById("put").value='';
document.getElementsByTagName("input")[0].setAttribute("type", "text");

}
else if(document.shad.txt.value == ""){
document.getElementById("tim").innerHTML='<font color="#54948E"> Вы ничего не заполнили </font>'
}
else {
document.getElementById("tim").innerHTML='<font color="red"> ДОСТУПА НЕТ !</font>'
}
}

function hido(){
document.getElementById("tim").innerHTML=""
document.getElementsByTagName("input")[0].setAttribute("type", "text")

}
</script>

Rise 06.02.2017 20:22

Vitalik2301, зачем несколько логинов?

laimas 06.02.2017 20:28

Цитата:

Сообщение от Vitalik2301
Реального применения .

А если для реального, то раз и навсегда - клиент не проверяет пароли! И слава богу по коду не видно его проверки, а проверить надо если ввод?

ksa 07.02.2017 09:23

Цитата:

Сообщение от Vitalik2301
Реального применения

Для реального, пароли лучше проверять на сервере...

laimas 07.02.2017 09:57

Цитата:

Сообщение от ksa
Для реального, пароли лучше проверять на сервере

Не лучше, а обязательно на нем.

ksa 07.02.2017 11:05

Цитата:

Сообщение от laimas
Не лучше, а обязательно на нем.

Я не так категоричен в высказываниях... :D Меня много за это критиковали и я перековался.

Vitalik2301 07.02.2017 14:12

Скажите одно это в обще реально сделать на javascript ?
 
Вот почти готовый рабочий скрипт, суть скрипта:
Вводим в окошке логин - adm1, жмем кнопку, получаем запрос prompt с подтверждением пароля, вводим пароль и получаем результат.. Всё!

Вся сложность заключается в том, что мне надо заменить окно prompt на input, т.есть в окошке input я ввожу логин, нажимаю кнопку, (окошко очистилось) и затем в этом же окошке , ввожу пароль и получаю результат.

Как это сделать ?

Поменять значения в input, подменить input ? Пробывал, ни фига..

1)Input.value=""
1)Input.value="Adm1"
2)submit
3)Input.value="" - Введите пароль?
4)Input.value="123"
5)submit
6)document.innerHTML="ВХОД ВЫПОЛНЕН - ADM1" - Результат!


<head>
<meta http-equiv="Content-Type" content="text/html"/>
</head>
<body>
<script type="text/javascript">

function doCheck(){

var userName =  document.shad.txt.value;

if (userName == 'adm1') {
document.getElementById("tim").innerHTML='<font color="green"> Введите пароль ? </font>';
document.getElementById("put").value='';


var pass = +prompt('Введите пароль?', '');
  if (pass == '123') {
    document.getElementById("tim").innerHTML='<font color="green">ВХОД ВЫПОЛНЕН - ADM1</font>';
    document.getElementById("put").value=''
  } else if (pass == null) { // (*)
    alert( 'Вход отменён' );
  } else {
    document.getElementById("tim").innerHTML='<font color="red">ОШИБКА №10 Неверная команда </font>';
  document.getElementById("put").value=''
  }

}
else if (userName == null) { // (**)
  alert( 'Вход отменён' );

}
else if (userName == '') {

   document.getElementById("tim").innerHTML='<font color="#B0BC79"> Вы не ввели команду </font>';
}

else if (userName == 'adm2') {
    document.getElementById("tim").innerHTML='<font color="green"> Введите пароль ? </font>';
document.getElementById("put").value='';

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

      if (pass == '123') {
        document.getElementById("tim").innerHTML='<font color="green"> ВХОД ВЫПОЛНЕН - ADM2</font>';
      } else if (pass == null) { // (*)
        alert( 'Вход отменён' );
      } else {
        alert( 'ОШИБКА №10 \n Неверная команда' );
        document.getElementById("tim").innerHTML=''
      }
    }

   else if (userName == 'adm3') {
    document.getElementById("tim").innerHTML='<font color="green"> Введите пароль ? </font>';
document.getElementById("put").value='';

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

      if (pass == '123') {
        document.getElementById("tim").innerHTML='<font color="green"> ВХОД ВЫПОЛНЕН - ADM3 </font>';
      } else if (pass == null) { // (*)
        alert( 'Вход отменён' );
      } else {
        alert( 'ПОМИЛКА №10 \n Неверная команда' );
        document.getElementById("tim").innerHTML=''
      }
    }

else {
document.getElementById("tim").innerHTML='<font color="red">ОШИБКА №10 Неверная команда  </font>';
document.getElementById("put").value=''
}
}
	 function hido(){
document.getElementById("tim").innerHTML=""
}
</script>

<form name="shad">
<p> Т400 (команда)</p>
<input type="text"  name="txt" id="put" size="10"/> &nbsp; <span id="tim"> </span>
<p>
<input type="button" value="Проверить" onclick="doCheck()"/>
</p>
<input type="reset"  id="tom" onclick="hido()"/>
</form>
</body>

laimas 07.02.2017 14:19

Цитата:

Сообщение от Vitalik2301
if (pass == '123') {

До вас что до сих пор не дошло, что if (pass == '123') ВХОД ВЫПОЛНЕН - ADM1, это бред, ибо это дыра?

ksa 08.02.2017 09:04

Цитата:

Сообщение от Vitalik2301
в окошке input я ввожу логин, нажимаю submit, (окошко очистилось) и затем в этом же окошке , ввожу пароль и получаю результат

Не совсем понятна такая надобность... :blink:
Почему нельзя вводить сразу два поля логин и пароль?
Куда и зачем ты отправляешь логин? Если вся проверка у тебя на клиенте... :)

Vitalik2301 08.02.2017 17:36

Знаешь, критика конечно нужна, но "зачем" , "почему" не решит проблему.
Я и сам знаю что лучше пароли хранить на сервере, но, поставлена задача с такими условиями и её надо решить.
"Одно окно и две кнопки"
И даже не имеет значения ради чего или для кого применения.
Поделюсь, не секрет, я пишу логику для виртуального кассового аппарата, оболочку, интерфейс я уже сделал.
Пока что я делаю первые наброски, разбивая один большой скрипт по модулям, я столкнулся с такой проблемой, могу ли я её решить силами Javascript, это я и хочу узнать здесь.
Весь проект свой я не буду выкладывать здесь.
Я расписал свою проблему максимально доступно, чтобы понятно было всем.

Rise 08.02.2017 17:53

Vitalik2301, а несколько логинов здесь при чем?

laimas 08.02.2017 17:55

Цитата:

Сообщение от Vitalik2301
кассового аппарата

Прощайте деньги :)

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

Если есть условие ввода множества, то есть пара полей - для логина и пароля, надо еще ввести, жмем кнопку добавить, в форму добавляется еще пара полей для логина и пароля, и т.д. А скрипт обрабатывает элементы массива (пары полей) проверяя в каждом наборе логин и пароль. И пароли с логинами также должны тогда хранится в как массив данных.

Vitalik2301 08.02.2017 18:09

Логин это просто к примеру я написал, вместо них будут команды которые выполняют отчет, но перед вводом команды будет запрос с условным паролем.
Конечно, было бы здорово где нибудь содрать исходники на языке С, с реальных торговых программ и перевести в Яваскрипт, но , где же такое взять?

ksa 09.02.2017 09:22

Цитата:

Сообщение от Vitalik2301
но "зачем" , "почему" не решит проблему

Впоследствии ты может поймешь, что без них не обойтись...

Paguo-86PK 11.02.2017 16:29

Бывaли случаи, когда "Логин@мыло.им п4р0л6" удобно было в одном поле иметь для экономии времени (ни tab, ни клик мышкой).
Что-то типа этого:
<body>
<a href='#'>Продукция</a>
<a href='#'>О нас…</a>
<input
    id=Login
    type=text
    placeholder='Логин@почтовый'
    value=''
    onkeyup='
        var s = this.value.replace(/\s+/, "");
        if(s != this.value)
            this.value = s,
            document.getElementById("PassWord").focus();
    ' />
<input
    id=PassWord
    type=password
    placeholder='В4ш_П4р0л6'
    value=''
    onkeyup='
        if(this.value == "")
            document.getElementById("Login").focus();
    ' />
</body>
P.S.: Пример, конечно, тупой.:yes:
Но, креативный и использовался (тут я его упростил)…

Vitalik2301 14.02.2017 18:18

Спасибо конечно что пытаешься мне помочь.
Я почти добился чего хотел, но скрипт как карточный домик, чихнешь и он рассыпется.
Думаю что либо серьёзное решается только через алгоритмы и ООП.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="windows-1251"/>
<title>344</title>
</head>
<body>
<script type="text/javascript">

	function doCheck() 
 
if(document.shad.txt.value == "101") {
document.getElementById("tim").innerHTML='<font color="green"> Введите пароль ? </font>';
document.shad.txt.value='';
document.getElementsByTagName("input")[0].setAttribute("type", "password");
document.getElementsByTagName("input")[0].setAttribute("id", "xxx");
}
 else if(document.getElementById("xxx").value == "12321"){
document.getElementById("tim").innerHTML='<font color="#54948E"> X ОТЧЕТ  </font>'
document.shad.txt.value='';
document.getElementsByTagName("input")[0].setAttribute("type", "text");
document.getElementsByTagName("input")[0].setAttribute("id", "");
//document.getElementsByTagName("input")[0].setAttribute("name", "txt");
}
else if(document.shad.txt.value == ""){
document.getElementById("tim").innerHTML='<font color="#54948E"> Вы ничего не заполнили  </font>'
}
else {
document.getElementById("tim").innerHTML='<font color="red"> Не правильно !</font>'}
}

function hido(){
document.getElementById("tim").innerHTML=""
document.shad.txt.value='';
document.getElementsByTagName("input")[0].setAttribute("type", "text");
document.getElementById("xxx").value=""
document.getElementsByTagName("input")[0].setAttribute("name", "txt");
}
</script>

<form name="shad">
<p>Т400 (команда)</p>
<input type="text"  name="txt" id="" size="10"/> &nbsp; 
<span id="tim"> </span>
<br />
<p>
<input type="button" value="Проверить" onclick="doCheck()"/>
</p>
<input type="reset"  id="tom" onclick="hido()"/>
</form>
</body>
</html>

laimas 14.02.2017 20:01

Vitalik2301,
так что все-таки надо вводить, команды как команда=>значение, или же все таки кучу паролей? Зачем вам геморрой с кучей в одном поле. Можно например так:

<html>
<head>
<style>
.terminal, #command {
    width: 250px;
    height: 100px;
    padding: 15px;
    border: 1px solid #ccc;
    float: left;
}

#terminal {
    width: 200px;
    margin-right: 10px;
}

#command {
    overflow: auto;
}
ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
</style> 
<script>
document.addEventListener("DOMContentLoaded", function() {
    var com = {},
        list = document.querySelector('#command');
    document.querySelector('form').onkeypress = function (e) {
        var o = e.target || e.srcElement, v, u = '', p;
       if(e.keyCode == 13) {
            e.preventDefault();
            if(o.tagName == 'INPUT' && (v = o.value.split(' ')).length==3) {
                o.value = '';
                com[v[0]] =  [v[1], v[2]];
                for(p in com) u += '<li><span>' + p + '</span> <span>' + com[p][0] + '</span> <span>' + com[p][1] + '</span>';
                list.innerHTML = '<ul>' + u + '</ul>';
            }
       }
    }
});
</script> 
</head>
<body>
<div class="terminal">
<form>
    <label>Command Parameter</label>
    <input type="text"  name="txt"/>
</form>
</div>
<div id="command"></div>
</body>
</html>
</body>
</html>


Здесь просто для примера. А суть в том, что контролируется ввод двух параметров разделенных пробелом по нажатию клавиши Enter, и если это условие выполняется, то оно сохраняется в объект. Содержимое объекта выводится списком рядом, и можно по выбору в нем удалить из набранного любую позицию. Естественно при вводе по Enter можно и организовать любую проверку и выполнять заданные действия. А уже готовый набор для отправки можно объединить как душе угодно.

Vitalik2301 16.02.2017 13:41

1) Команда
2) Запрос с подтверждением пароля для этой команды
3) Значение

Спасибо, интересный скрипт, я поработаю над ним.

laimas 16.02.2017 15:39

Не проблема и группу по три разрешить. Кстати забыл в коде проверку источника события сделать. Изменил и сделал группой по три.


Часовой пояс GMT +3, время: 13:42.