29.01.2017, 02:04
|
Новичок на форуме
|
|
Регистрация: 14.08.2016
Сообщений: 6
|
|
Проверка заполнения формы
Абсолютный новичок в JS и не знаю всех его возможностей.
Есть самая простая форма:
<form method="get">
<input type="password" value="Пароль" autofocus required>
<input type="submit" value="ВОЙТИ" onClick='location.href="1.html"'>
</form>
Я хочу узнать про возможность написания скрипта, который будет проверять содержимое поля "Пароль", и если там "123456" (заданный мной пароль), submit становится доступен для нажатия и переводит по указанной ссылке. Если в поле пусто, или там не 123456, то submit не переводит по ссылке, disabled.
Пишу сайт в html.
Возможно ли написать такой скрипт? Если да, то я буду премного благодарен, если вы приведёте пример такого скрипта, а я сам постараюсь его разобрать, что почему и как работает.
|
|
29.01.2017, 06:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Евгений Базаров
|
Я хочу узнать про возможность написания скрипта, который будет проверять содержимое поля "Пароль", и если там "123456"
|
Клиенту никоим образом пароли не должны быть доступны, пароль и даже не он сам, а его хеш хранится на сервере, и доступ к чему-то должен давать сервер.
|
|
29.01.2017, 11:12
|
Новичок на форуме
|
|
Регистрация: 14.08.2016
Сообщений: 6
|
|
Или я Вас не правильно понял, или Вы меня.
Для меня подойдёт вариант, что этот пароль будет прописан в скрипте, и его можно будет увидеть в исходном коде.
Мне представляется такая цепочка: пользователь вводит пароль - скрипт проверяет введенный данные - если там 123456, то submit доступен, иначе submit недоступен.
Не силён в синтаксисе JS, но подозреваю, что там обыкновенные if {не 123456} then {submit disabled} else {submit по умолчанию}
Примерно так я себе это представляю. Ошибаюсь?
|
|
29.01.2017, 11:18
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Евгений Базаров
|
Для меня подойдёт вариант, что этот пароль будет прописан в скрипте
|
Вам может что угодно подойти, а вот вашим пользователям нет. Зачем нужна эта идиотская проверка на доступ к чему-то, если любой кому не лень может посмотреть в исходниках что сравнивается? А если сравнивать на клиенте, то каким образом вы будет знать какой пароль у текущего клиента, все отдать которые есть на сервере?
Вы вообще соображаете что говорите? Вы ответственны за хранение конфиденциальных данных клиентов, а вы их хотите добровольно вывалить для всеобщего обозрения.
Клиент вводит логин/пароль, отправляет серверу, сервер проверят есть ли такой клиент и по результату принимает решение. И только так, и никак иначе.
|
|
29.01.2017, 11:31
|
Новичок на форуме
|
|
Регистрация: 14.08.2016
Сообщений: 6
|
|
У меня абсолютно несерьезный проект, там не будет большого количества пользователей, так сказать, только для своих (15-20 человек - примерно школьный класс), и пароль будет у всех один. Я прекрасно понимаю, что это очень ненадёжно, но мне надёжность и не нужна! Не те масштабы! Это во-первых.
Во-вторых я это делаю никак не для безопасности, а больше для создания эффекта конфиденциальности. Ежу понятно, что можно спокойно обойти эту страницу с паролем, зная url следующей страницы, но всё делается исключительно для эффекта.
В-третьих логина нет, только пароль и кнопка "вход".
Если Вы знаете, как написать такой скрипт, и поможете мне с этим, я буду Вам премного благодарен.
|
|
29.01.2017, 11:35
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Евгений Базаров,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
window.addEventListener('DOMContentLoaded', function() {
var form = document.querySelector('form'),
password = form.querySelector('[type="password"]');
form.addEventListener('submit', function(event) {
password.value != "12345" && event.preventDefault();
},false);
});
</script>
</head>
<body>
<form method="get" action="1.html">
<input type="password" value="Пароль" autofocus required>
<input type="submit" value="ВОЙТИ" >
</form>
</body>
</html>
|
|
29.01.2017, 11:38
|
Новичок на форуме
|
|
Регистрация: 14.08.2016
Сообщений: 6
|
|
рони,
СПАСИБО! То, что нужно!
|
|
29.01.2017, 11:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Евгений Базаров,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
[type="submit"][disabled] {
background-color: #FF3D3D;
}
[type="submit"] {
background-color: #009900;
}
</style>
<script>
window.addEventListener('DOMContentLoaded', function() {
var form = document.querySelector('form'),
password = form.querySelector('[type="password"]'),
submit = form.querySelector('[type="submit"]');
form.addEventListener('submit', function(event) {
password.value != "12345" && event.preventDefault();
},false);
password.addEventListener('input', function(event) {
password.value != "12345" ? submit.setAttribute("disabled", "disabled") : submit.removeAttribute("disabled");
},false);
});
</script>
</head>
<body>
<form method="get" action="1.html">
<input type="password" value="Пароль" autofocus required>
<input type="submit" value="ВОЙТИ" disabled="disabled">
</form>
</body>
</html>
|
|
|
|