我按照here中的代码创建了一个安全的登录页面。麻烦的是,它无法创建隐藏的输入元素。
function formhash(form, password) {
// Create a new element input, this will be out hashed password field.
var p = document.createElement("input");
// Add the new element to our form.
form.appendChild(p);
p.name = "p";
p.type = "hidden"
p.value = hex_sha512(password.value);
// Make sure the plaintext password doesn't get sent.
password.value = "";
// Finally submit the form.
form.submit();
}
我已经通读说它只适用于IE而不适用于gecko。这是真的还是我错过了什么?
更新
当我将javascript放入登录页面时,formhash功能起作用。当它移动到外部文件时,问题再次出现。
@asprin注意到。我放置php的原因是因为代码基于php实现
@Henrik会这样做。感谢
@RenePot Yup,它在process_login.php页面上被调用
@MarkGarcia感谢您的建议。请注意,它表示该函数未声明
@WernerVesterås不确定,但我想以后。
@Quentin感谢您的建议。会这样做:D
答案 0 :(得分:1)
可能,form
根本没有设置为你认为的,jsfiddle.net可能会帮助我们和你调试。我在http://jsfiddle.net/JPTyj/设置了一个工作版本。注释隐藏实际看到它有效。 请注意,您不会在浏览器的“查看源”中隐藏输入字段,因为它会动态添加到dom中!使用firebug或chrome dev工具查看它。
此外,您很可能希望使用库来更轻松地开发独立于平台的代码,而不是编写简单的javascript。
答案 1 :(得分:0)
在IE8(至少)中,您需要设置type
属性,然后才能使用setAttribute()
附加它:
var p = document.createElement("input");
p.setAttribute("type", "hidden");
form.appendChild(p);
http://jsfiddle.net/BePGD/在IE7,IE8,Chrome中测试过。