HTML表单使用Javascript没有验证,而是更改了链接

HTML Form using Javascript did not verify instead changed the link

本文关键字:链接 验证 表单 Javascript HTML      更新时间:2023-09-26

代码:

<h1>Login Form</h1>
<form onsubmit="loginUsingPassword(this.form.loginPassword.value);return false;">
Password : <input type="password" name="loginPassword" /> <input type="submit" value="Submit" />
</form>
<script>
//This is for verifying use.
function generateUserPassword(){
var passwordArray = [];
passwordArray[0]="198237645";
passwordArray[1]="infotalkong";
function loginUsingPassword(inputPassword){
for (int i; i<passwordArray.length; i++){
if (inputPassword=passwordArray[i]){
document.cookie="reportLogged=true;";
window.location.href="http://tool-box.weebly.com/report.html";
}
}
}
</script>

结果:

输入:198237645输出:链接更改为http://tool-box.weebly.com/report-login.html?loginPassword=198237645

解决方案是什么?

我不太确定你的要求,但,有几点可能对你有帮助

  • 通常,我们使用post方法来提交此类表单,而不是默认的方法(get(

所以你可能想更改以下代码

<form onsubmit="loginUsingPassword(this.form.loginPassword.value);return false;">

到下面的一个

<form onsubmit="loginUsingPassword(this.form.loginPassword.value);return false;" method="post">

在您进行上述更改后,密码将不会像您提到的那样显示在URL中,以避免安全问题。

  • 通过阅读您的代码,我假设您希望检查用户输入的密码是否与代码中预定义的密码列表相同

但是你有下面的代码

if (inputPassword=passwordArray[i]){//This is a common bug to mistake === to = in if

如果您想比较变量inputPassword和预定义的密码(passwordArray(,您应该使用==或===,而不是赋值操作(=(,因此代码应该是

if (inputPassword === passwordArray[i]){

希望以上提示可以帮助您调试代码。

这是一个基于我对您需求的理解的工作版本,但实际上您没有指定您的需求。。。

<h1>Login Form</h1>
<form onsubmit="loginUsingPassword(document.forms['myForm']['loginPassword'].value);return false;" method="post" name="myForm">
Password : <input type="password" name="loginPassword" /> <input type="submit" value="Submit" />
</form>
<script>
    //This is for verifying use.
    var passwordArray = [];
function generateUserPassword(){
    passwordArray[0]="198237645";
    passwordArray[1]="infotalkong";
}
function loginUsingPassword(inputPassword) {
    generateUserPassword();
    var passwordCorrect = false;
    for (i = 0; i< passwordArray.length; i++){
        if (inputPassword === passwordArray[i]){
            document.cookie="reportLogged=true;";
            passwordCorrect = true;
            window.location.href="http://tool-box.weebly.com/report.html";
        }
    }
    if (passwordCorrect !== true){
        alert("Wrong Password!");
        return false;
    }
}
</script>

您的form标记没有method属性,因此它默认为GET。它没有action属性,所以它默认为您所在的页面。如果您提交表单,它会将提交的值编码在URL中(GET是如何设计的(,然后您就可以登录到同一页面上。这正是您指定的行为。