2014-11-19 5 views
0

Я хочу прочитать слово из текстового файла и использовать его для проверки пароля. Конечно, я понимаю, что это никоим образом не безопасно и никогда не будет использоваться в реальном мире, но это задание для курса колледжа, который я должен сделать. Каждый раз, когда я нажимаю кнопку «Отправить», меня выводит на страницу «messing.html», независимо от того, правильный ли пароль или нет ... Может ли кто-нибудь помочь?Чтение из текстового файла с использованием xmlhttp

<!DOCTYPE html> 
<html> 


<body> 

<form name="login" onSubmit="return validateForm();" action="messing.html" method="post"> 
    <label>Password</label> 
    <input type="password" name="pword" placeholder="password"> 
    <input type="submit" value="Login"/> 
</form> 

<script> 
    function validateForm() { 
     var user_input = document.login.pword.value; 


     xmlhttp=new XMLHttpRequest(); 
     xmlhttp.open("GET","books.txt",false); 
     xmlhttp.send(); 
     var y =xmlhttp.responseText; 




     if (user_input == y){ 
      return true; 
     } 
     else { 
      alert ("Login was unsuccessful, please check your password"); 
      return false; 
     } 
    } 
</script> 

</body> 

</html> 
+0

Что такое значение 'y'? Это действительно так же, как 'user_input'? У этого есть новая линия в конце этого? – Quentin

+0

Моя проблема заключается в том, что она никогда не кажется настолько доступной, что и оператор if/else - независимо от того, что вводит пользователь (даже если он/она оставляет поле пароля пустым), логин успешно завершен. Для целей тестирования все, что есть в текстовом файле, - abcd. – user3120200

ответ

0

Проблема onsubmit. Потому что вы не предотвращаете действие формы по умолчанию. Ваша форма отправляется в messing.html, и она будет загружена.

Вам необходимо предотвратить действие по умолчанию в форме, если вы хотите использовать xmlHTTPRequest.

function validateForm(e) { 
    .... 
    e.preventDefault(); //<--- magic 

}

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

function validateForm(e) { 
    var user_input = document.login.pword.value; 


    xmlhttp=new XMLHttpRequest(); 
    xmlhttp.open("GET","books.txt",true); //changed to true 

    xmlhttp.onreadystatechange = function(){ 
    if (this.status == 200 && this.readystate == 4) 
    { 
     var y =xmlhttp.responseText; 
     if (user_input == y){ 
      location.href = "messing.html"; 

     } 
     else { 
      alert ("Login was unsuccessful, please check your password"); 
      return false; 
     } 
    }    
    } 
    xmlhttp.send(); 
    e.preventDefault(); 

}

Смежные вопросы