在许多其他控件中,我在表单上有以下HTML元素
<input ID='cmdRegisterMe' name='cmdRegisterMe' value='Register Me' onclick="return preSubmit();" type='submit' />
<input type="hidden" ID="NewHash" name="NewHash" value="">
<INPUT TYPE="TEXT" ID="email" NAME="email" VALUE="" SIZE="50" MAXLENGTH="50">
<INPUT TYPE="PASSWORD" ID="password1" NAME="password1" VALUE="" SIZE="30" MAXLENGTH="25">
<INPUT TYPE="PASSWORD" ID="password2" NAME="password2" VALUE="" SIZE="30" MAXLENGTH="25">
和JS函数
function preSubmit() {
document.getElementById("NewHash").value = doNewHash(document.getElementById("password1").value, document.getElementById("email").value.toLowerCase());
alert(document.getElementById("NewHash").value);
document.getElementById("password1").value = '';
document.getElementById("password2").value = '';
return true;
}
function doNewHash(pw, strUsername) {
var hash_padding = '************';
return SHA1(SHA1(pw) + hash_padding + strUsername);
}
当我点击提交时,我看到通过调用alert()显示预期的散列值。
但是,在我的PHP中,$ _POST ['NewHash']的值是一个空字符串。我无法理解为什么会发生这种情况。据我所知,onclick()函数返回true后没有执行其他代码。我已经对我的“NewHash”代码进行了全局搜索,并且没有其他任务。
如果我替换此行
document.getElementById("password1").value = '';
用这个
document.getElementById("password1").value = document.getElementById("NewHash").value;
并检查$ _POST ['password1'],它包含哈希值。究竟是怎样才能消除'NewHash'的价值?
答案 0 :(得分:0)
我发现了什么问题,但我希望发布这个问题可能有助于其他人。我将PHP生成的HTML保存为文件,添加到顶部,并决定逐个删除代码并提交,直到提交的NewHash值不再为空。我发现我有两个名为NewHash的隐藏控件 - 所以JS在一个显示值,浏览器正在提交另一个!