0

我正在按照此处找到的代码创建安全登录页面。问题是,它不能创建隐藏的输入元素。

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 而不是壁虎。这是真的还是我只是错过了什么?

更新:

当我将 javascript 放入登录页面时,formhash 函数起作用。当它移动到外部文件时,问题又开始了。

@asprin 指出。我放置php的原因是因为代码是基于php实现的

@Henrik 会这样做。谢谢

@RenePot 是的,它是在 process_login.php 页面上调用的

@MarkGarcia 感谢您的建议。注意它说的是函数没有声明

@WernerVesterås 不确定,但我想之后。

@Quentin 感谢您的建议。会这样做的:D

4

2 回答 2

1

很可能,form根本没有设置为您认为的那样,jsfiddle.net 可能会帮助我们和您调试。我在http://jsfiddle.net/JPTyj/上设置了一个工作版本,注释掉隐藏以实际看到它工作。请注意,您不会在浏览器的“查看源代码”中隐藏输入字段,因为它是动态添加到 dom 中的!使用 firebug 或 chrome 开发工具来查看它。

此外,您很可能希望使用库来更轻松地开发独立于平台的代码,而不是编写纯 JavaScript。

于 2012-10-01T08:25:53.800 回答
0

在 IE8 中(至少),您需要type在附加属性之前设置属性setAttribute()

var p = document.createElement("input");
p.setAttribute("type", "hidden");
form.appendChild(p);

http://jsfiddle.net/BePGD/在 IE7、IE8、Chrome 中测试。

于 2012-10-01T08:36:16.773 回答