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()
}
發送PARAMS:
username: user
pwd: ""
rememberme: "1"
submit: "Login!"
我怎麼能password: *some value*
這些發送參數?我究竟做錯了什麼?
你的'document.createElement'應該使用'input'作爲參數而不是'password'。 – CuriousMind
我可以建議一種替代解決方案嗎?如何在提交之前更改現有pwd輸入的值?這樣你就不需要創建一個額外的元素並刪除現有的元素。這當然只適用於您在提交時切換頁面。對於AJAX驗證,您需要隱藏的元素 - 但在這種情況下,您寧願搜索它,而不是創建它。 –
@HubertGrzeskowiak嗯,我這樣做,但它使我感到無聊,因爲當我點擊提交時,密碼從*********變成************** **********************************在頁面重新加載之前。 – Mirakurun