Подтвердить и разрешить определенное имя пользователя для входа в текстовое поле имени пользователя HTML

Я хочу разрешить только двум выбранным пользователям входить в мое приложение по нажатию кнопки отправки. Эти два имени пользователя перечислены в текстовом файле с именем user.txt, поэтому параметр имени пользователя должен быть прочитан, и если имя пользователя, введенное в текстовое поле, совпадает с записями в файле user.txt, тогда пользователь должен быть разрешен вход в систему, иначе должна отображаться ошибка.

Примечание. Задача здесь У меня уже есть одна проверка (validateForm()), которая отлично работает при нажатии кнопки отправки. Он проверяет, чтобы поля имени пользователя и пароля не были пустыми. Мне нужно, чтобы это новое конкретное имя пользователя разрешило проверку, а также проверка по нажатию кнопки отправки.

Может ли кто-нибудь предложить мне примеры кода, как я могу справиться с этой проверкой, используя Ajax, jQuery или простой JavaScript?

Файл Username.txt

Username1 : Tom
Username2 : Harry

Проверьте, не пусты ли текстовые поля имени пользователя и пароля:

function validateForm() {
    var x = document.forms["login"]["userid"].value;
    if (x == null || x == "") {
        alert("Username is empty");
        return false;
    }
    var x = document.forms["login"]["pswrd"].value;
    if (x == null || x == "") {
        alert("Password is empty");
        return false;
    }
}

person Dojo_user    schedule 20.05.2014    source источник
comment
Аутентификация не должна выполняться в JavaScript. Это связано с тем, что JS работает в браузере, и пользователь имеет полный контроль над браузером. Это означает, что они могут обойти любые пользовательские ограничения, которые применяются только JS. Какой серверный стек вы используете?   -  person alnorth29    schedule 20.05.2014
comment
По крайней мере, вы должны обрабатывать свою серверную часть проверки. Проверка на стороне клиента — это просто глазная конфета, так как ее легко взломать. Вы не хотите, чтобы эти имена пользователей были видны клиенту.   -  person Cerbrus    schedule 20.05.2014
comment
Я не собираюсь писать за вас код, но вы можете легко отправить вызов AJAX в функции ValidaeForm, которая вызовет веб-службу, которая сможет прочитать текстовый файл и сравнить его с введенным значением, предоставить ответ на страницу, а затем соответственно реагировать на пользователя.   -  person Dean.DePue    schedule 20.05.2014
comment
в настоящее время я хочу сделать это при проверке на стороне клиента, а входной файл проверки представляет собой файл .txt, в котором указаны действительные имена пользователей. Мне нужно читать это имя пользователя каждый раз, когда пользователь вводит свое имя в текстовое поле имени пользователя, и если имя совпадает, пользователю должно быть разрешено войти в приложение. Файл username.txt находится в папке C:\\username.txt.   -  person Dojo_user    schedule 20.05.2014
comment
@Dojo_user: я бы посоветовал вам просмотреть несколько руководств по аутентификации.   -  person Cerbrus    schedule 20.05.2014


Ответы (2)


Ознакомьтесь с руководствами подобными этому, если вам нужна надлежащая (безопасная) аутентификация.

Если вы хотите проверить только имена пользователей, попробуйте этот код jQuery:

$.ajax({
    type: "POST",
    url: "script_url",
    dataType: "json",
    data: {
        user : $("#user").val(),
        call : "checkUser"  
    },
    beforeSend: function(){ },
    success : function(response){
        if(!response){
            alert('User not allowed!');
        }
    },
    complete: function(){ }
})

И PHP-код:

$lines = file('../location/Username.txt');
$arr_users = array();
foreach($lines as $line){
    $arr = explode(':', $line);
    $arr_users[] = trim($arr[1]);
}

function checkUser($request){
    return in_array($request['user']);
}

if (!empty($_POST['call'])) { 
    die($_POST['call']($_POST));
}

С наилучшими пожеланиями!

person Borza Adrian    schedule 20.05.2014
comment
-1: Это далеко не то, как следует обрабатывать аутентификацию. Сервер не знает, какой пользователь вошел в систему, и поэтому очень легко просто прервать вызов AJAX на стороне клиента и войти. - person Cerbrus; 20.05.2014
comment
Потому что вопрос может быть не о той проблеме. Ответ, который OP хочет, все еще может быть очень, очень плохой идеей. В этом ответе даже не упоминается тот факт, что он просто имитирует то, как выглядит аутентификация для пользователя. . - person Cerbrus; 20.05.2014
comment
конечно, но он это выяснит, в противном случае я ответил на его вопрос. Так что я не понимаю вашего отношения ГУРУ. - person Borza Adrian; 20.05.2014
comment
Если бы ОП мог это понять, он бы не задал этот вопрос. Мое отношение ГУРУ заключается в том, что я пытаюсь объяснить ОП, что для обеспечения аутентификации есть нечто большее, чем это, или то, что есть в вопросе. Я пытаюсь заставить ОП чему-то научиться. По крайней мере, добавьте к своему ответу большое жирное предупреждение, говорящее людям, которые это читают, что делать это таким образом - плохая идея. - person Cerbrus; 20.05.2014
comment
Dojo_user, вы также должны проверить ответы Cerbrus относительно аутентификации Ajax, он более советуется, чем я. Цербрус спасибо! - person Borza Adrian; 20.05.2014
comment
также Цербрус, вы должны пересмотреть свой отрицательный голос, так как я признал свою нечестивость ... - person Borza Adrian; 20.05.2014
comment
Я рад, что вы понимаете мою точку зрения, но это не меняет того факта, что ответ не очень хорош, извините... - person Cerbrus; 20.05.2014

Вам нужно свериться с сервером, на котором находится файл .txt (кстати: обычно для этой цели используются базы данных).

Единственный способ сделать это на стороне клиента (javascript) - это иметь список имен внутри массива, но это не имеет смысла, поскольку клиент сможет видеть массив. Так что вам действительно следует использовать серверную часть для этой цели.

person IT goldman    schedule 20.05.2014
comment
Привет, ИТ-голдман, у меня есть файл username.txt на моей локальной машине C:\\username.txt, из которого я хочу прочитать имена пользователей, и если он действителен, он должен разрешить конкретному пользователю войти в приложение, иначе он должен показать недопустимое сообщение пользователя. Это проверка, которую я хочу сделать для своего текстового поля в html - person Dojo_user; 20.05.2014
comment
@Dojo_user: по умолчанию вы не можете получить доступ к файлам локального компьютера с помощью javascript. - person IT goldman; 20.05.2014
comment
мы можем использовать ajax или jquery. Поместите файлы в папку webapps tomcat, и вы сможете получить к ним доступ. - person Dojo_user; 20.05.2014