多个登录表单在一个页面上
Multiple Login Forms On One Page
下面我有代码,是完美的工作,作为一个单一的登录表单。然而,我需要20这些在一个页面上,到目前为止,甚至不能得到第二个登录表单的工作。我一直在走的路线是简单地复制html和javascript为每个新的登录表单在页面上,只是改变id使用数字1…2…3等。谁能告诉我为什么我不能得到一个以上的登录表单在任何时候的页面上工作?
这样做的主要原因是我不知道如何做一个登录表单,指向20个不同的页面。所以我想这可能会更容易。
HTML<input type="text" value=" Username" id="login" style="color:#888; border-radius: 25px;" onfocus="inputFocus(this)" onblur="inputBlur(this)" required>
<input type="text" value=" Password" id="password" style="color:#888; border-radius: 25px;" onfocus="inputFocus(this)" onblur="inputBlur(this)" required>
<input type="button" value="GO" id="goButton" class="gosubmit" onclick="checkLoginPass()" />
Javascript function inputFocus(i) {
if (i.value == i.defaultValue) { i.value = ""; i.style.color = "#000"; }
}
function inputBlur(i) {
if (i.value == "") { i.value = i.defaultValue; i.style.color = "#888"; }
}
var checkLoginPass = function () {
var login = document.getElementById("login").value;
var pass = document.getElementById("password").value;
if (login === "Client1" && pass === "Client1") {
window.location.replace("/Design1/index.html");
}
else {
//do something else;
}
}
你遇到的问题是,在你的javascript中,你只检查第一组字段的值。只要你这样做,情况就会一直是这样。正如其他人在他们的评论中所说,在javascript中以明文形式存在密码是非常不安全的,因为任何人都可以查看js源代码,识别用户名/密码组合,然后登录。
处理用户登录的正确方法是使用包含用户名和密码的单一表单,然后通过标准表单提交将这些字段传递给服务器。例如(为了简洁而简化):
<form method='post' action='handlelogin.php'>
Username: <input type='text' name='username' id='username' /><br />
Password: <input type='password' name='password' id='password' /><br />
<input type='submit' value='Log In' onclick="return [some function that verifies both fields have been entered]()" />
</form>
然后在服务器上验证用户名/密码组合,在handlelogin.php
中,最好基于数据库值,然后从那里根据用户的凭据重定向用户。如果用户/通行证无效,则将它们发送回登录页面并显示相应的错误。如果凭据是有效的,则设置一个带有加密值的cookie,以指示他们登录并以谁的身份登录,然后将它们放在需要的位置。
拥有20个不同的登录表单,这些表单都在客户端javascript中验证,实际上可能是处理用户登录的最糟糕的方式。别这样。
正如其他人所说,在JavaScript源代码中存储用户名和密码组合是一个坏主意。但是我想向您展示如何使用数组来存储Key -> Value
对并引用它们以减少代码重复的数量。
在JavaScript中你可以这样定义一个数组:
var _CONFIG = {
"Client1": {
"Password": "Client1",
"Redirect": "/Design1/index.html"
},
"Client2": {
"Password": "Client2",
"Redirect": "/Design2/index.html"
}
};
^在这个例子中,你的username
是键,值是另一个数组,包含你的password
和重定向到的路径。
你可以重写你的函数来检查一个键是否存在于使用_CONFIG[login] !== undefined
的数组中,在这种情况下,login
是一个包含你想要查找的键的变量。然后使用存储在该Key下的数组来提供一些值,以便在代码中使用。
function checkLoginPass() {
var login = document.getElementById("login").value;
var pass = document.getElementById("password").value;
if ( _CONFIG[login] !== undefined && _CONFIG[login]["Password"] == pass) {
window.location.replace(_CONFIG[login]["Redirect"]);
}
else {
//do something else;
}
}
^这是你的登录检查函数重写为使用我定义的数组。
JSFiddle例子
正如我在开头所说的,我不建议你实际使用这个例子,因为它非常容易被人绕过。
相反,登录应该使用服务器端脚本技术(例如PHP)或使用内置的HTTP Basic Authentication
,如在评论中建议您处理。
- 将登录链接到另一个网站而不提供密码
- 如何创建一个提示用户输入登录id和密码的网站
- 登录页面和注册页面我需要将所有内容放在一个页面中
- Ember.js - 一个视图多个布局(已登录/未登录)
- 我想要一个jquery函数在成功登录时显示隐藏的列表项
- 登录另一个选项卡/窗口后,将一些更改推送到另一个选项卡/窗口中的网页
- 我有三个地方供用户登录,在同一页面上,我如何在一个功能中让所有三个按钮工作和三个表单处理
- Ajax php登录表单不定向到另一个页面
- 登录到一个站点,而不使用 jQuery/ajax 重定向到该站点
- 谷歌和他的API或登录按钮有一个难题
- 护照 JS - 一个登录表单 - 重定向到不同的 URI,具体取决于用户角色
- 在我的代码中创建一个登录窗口
- 我们有一个登录的基本登录功能,但随后它突然又回到登录屏幕
- 将用户名和密码数据从一个登录页面传输到另一个登录页
- 如何创建一个登录系统与流星
- React路由器:获取一个登录成功的url,并传递一个令牌,然后重定向到主页
- 无法阻止用户返回上一个登录页面
- 在angular单页应用程序引导时创建一个登录微调器
- 使用titanium apperator设计一个登录页面
- 我如何保持一个登录会话活动从我的独立iOS web应用程序