HTML表单使用Javascript没有验证,而是更改了链接
HTML Form using Javascript did not verify instead changed the link
代码:
<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是如何设计的(,然后您就可以登录到同一页面上。这正是您指定的行为。
相关文章:
- MVC客户端验证的某个位置缺少链接
- 提交前验证超链接和复选框
- 表单验证根据需要链接字段
- 我们如何在 java 脚本中验证 URL 的链接
- 书签(链接中的javascript)如何由服务器验证?如何保持安全性
- 如果未验证,请禁用链接
- Meteor:验证电子邮件链接正在注销用户
- 当用户点击页面上的链接时,我如何弹出一个警报框进行验证
- 表单验证禁用链接
- 有什么方法可以绑定'任何'通过身份验证脚本重定向(链接/刷新等)
- 防止在ASP文本框上验证超链接
- 在Cocoa Touch Webview开始加载之前验证用户触摸链接
- 如何在单击提交按钮时验证超链接和复选框
- jQuery是否验证冲突提交函数,而不是表单按钮(图像/超链接)
- 我如何返回到原来的窗口时,一个电子邮件验证链接已在不同的窗口点击
- 如何更改“隐私”&Terms"验证码中的链接
- ASP.NET容器验证=“;false”;无法处理IE中的链接按钮
- 验证完成后如何转到链接
- 验证链接以检查用户登录不是
- 电子邮件批准链接-最好的方式来验证的人点击链接的电子邮件地址