2016-09-28 7 views
1

Я хочу, чтобы мой пароль на стороне клиента перед отправкой (у меня есть свои причины, я знаю, что я делаю) на сервер. Я использую jsSHA (он работает, я предупреждал вывод), чтобы хэш-пароль.Добавить элемент перед отправкой формы

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

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jsSHA/2.0.2/sha.js"></script> 
<form id = "form" name="form" method="post" action="verify.php" class="login"> 
    Username: <input type="text" name="username" style = "width: 350px"><br> 
    Password: <input type="password" name="pwd" id="pwd" style="width: 350px; margin-left: 3px;"><br> 
    Remember Me: <input type="checkbox" name="rememberme" value="1"><br> 
    <input type="submit" name="submit" value="Login!" class="loginbutton" onclick="submitForm();"> 
</form> 

JS

function submitForm(){ 
    var form = document.getElementById("form"); 
    var pwd = document.getElementById('pwd'); 
    var hash = new jsSHA("SHA-256", "TEXT", {numRounds: 1}); 
    hash.update(pwd.value); 
    var hash = hash.getHash("HEX"); 
    var password = document.createElement("password"); 
    password.name="password"; 
    password.type="hidden"; 
    password.id = "password"; 
    password.value = hash; 
    form.appendChild(password); 
    pwd.value = ""; 
    form.submit() 
} 

Переданные Титулы:

username: user 
pwd: "" 
rememberme: "1" 
submit: "Login!" 

Как я могу password: *some value* к этим отправленным параметрам? Что я делаю не так?

+2

Если ваш 'document.createElement' использует' input' как аргумент вместо 'password'. – CuriousMind

+0

Могу ли я предложить альтернативное решение? Как насчет изменения значения существующего входа pwd непосредственно перед отправкой? Таким образом вам не нужно будет создавать дополнительный элемент и удалить существующий. Это, конечно, применяется только при условии, что вы переключаете страницу на submit. Для проверки AJAX вы хотите использовать скрытый элемент, но в этом случае вы предпочитаете искать его вместо его создания. –

+1

@HubertGrzeskowiak Ну, я делал это так, но меня это раздражало, потому что, когда я нажимаю кнопку «Отправить», пароль меняется с ********* на ************** ********************************** перед перезагрузкой страницы. – Mirakurun

ответ

2

Вы создаете элемент password вместо элемента input с type="password". Браузеры только отправляют данные из известных им элементов формы (ввод, кнопка, текстовое поле и т. Д.). Кроме того, вы устанавливаете свойства для элемента, но настройка атрибутов, вероятно, более безопасна с точки зрения совместимости.

+0

Вы правы, спасибо. Я приму этот ответ, как только смогу. – Mirakurun

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