注册页面代码:
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form method="post" onsubmit="return false" id="form">
<input type="text" name="username" placeholder="用户名"><br>
<input type="password" name="password" placeholder="密码"><br>
<input type="password" name="rePassword" placeholder="再次输入密码"><br>
<input type="submit" onclick="register_user()" value="注册"><br>
</form>
<a href="login.html">去登录</a>
<script>
var localDB = openDatabase('localDB', '1.0', 'Test DB', 2 * 1024 * 1024)
localDB.transaction(function (ts) {
ts.executeSql('CREATE TABLE IF NOT EXISTS user(username,password)')
})
function register_user() {
var username = document.getElementsByTagName("input")[0].value
var password = document.getElementsByTagName("input")[1].value
var rePassword = document.getElementsByTagName("input")[2].value
if(password != rePassword)
{
alert("两次输入的密码不同,请重新输入")
}else
{
localDB.transaction(function(ts){
ts.executeSql("INSERT INTO user (username,password) VALUES ('"+username+"','"+password+"')")
alert("注册成功")
})
}
}
</script>
</body>
</html>
登录页面代码:
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form onsubmit="return false" method="post">
<input type="text" placeholder="用户名"><br>
<input type="password" placeholder="密码"><br>
<input type="submit" value="登录" onclick="login()"><br>
</form>
<a href="register.html">去注册</a>
<script>
var localDB = openDatabase('localDB', '1.0', 'Test DB', 2 * 1024 * 1024)
localDB.transaction(function (ts) {
ts.executeSql("SELECT * FROM user",[],function (tx, results) {
var len = results.rows.length
if(len<=0)
{
localDB.transaction(function (ts) {
ts.executeSql('CREATE TABLE IF NOT EXISTS user(username,password)')
})
}
})
})
function login() {
var username = document.getElementsByTagName("input")[0].value
var password = document.getElementsByTagName("input")[1].value
localDB.transaction(function (ts) {
ts.executeSql("SELECT * FROM user WHERE username='"+username+"'",[],function (ts, res) {
if(res.rows.length<=0)
{
alert("登录失败,用户未注册")
}else if (password == res.rows[0].password)
{
alert("登录成功,三秒后跳转到百度")
setInterval(function () {
location.href = "https://www.baidu.com"
},3000)
}else
{
alert("登录失败,密码错误")
}
})
})
}
</script>
</body>
</html>
以上代码使用了WEB SQL,还请选择合适的浏览器查看。
创建一个页面,名称为"后台",用来表示验证通过后的页面。
在实际项目中,需要把用户输入的用户名和密码与数据库中的相关匹配,可是,原型中没有数据库,如何做呢?
只能是模拟一个。假设用户名是darren,密码也是darren。
在登录按钮的一个用例中这样设置,这是有关用户名的判断。
再为登录按钮增加一个用例,用于有关密码的判断。
有关登录按钮用户名判断的用例设置如下:
预览,当输入的用户名不正确,报错如下:
当输入的用户名存在,密码不正确,报错如下:
再为登录按钮的OnClick事件增减一个用例,用来判断用户名和密码都正确。
预览,当用户名和密码都输入正确,页面跳转到后台页。
当然,对于用户名和密码,可以设置全局变量,在判断的时候读取全局变量的值。
一个全局变量能存储多个用户名或密码吗?
假设有这样的一种存储方式:(darren:darren)(jack:123)。如果把这个存储在全局变量中,就相当于在全局变量中保存了多个用户名和密码。
但问题又来了:是否可以从全局变量中读取出每组用户名和密码呢?
在Axure中设置全局变量。
再来修改登录按钮OnClick事件中有关用户名的用例。现在要判断输入的用户名是否包含在全局变量的所有用户名中。
在有关值的公式中,按如下设置:
在有关用户名的条件按如下设置:
在有关用户名的用例按如下设置:
在判断用户名是否正确的时候,这种情况下,要把用户名和密码拼接起来一起判断。
在有关密码判断的公式按如下设置:
有关密码的条件按如下设置:
有关密码的用例按如下设置:
预览,当输入用户名和密码分别是jack,123的时候,验证通过,登录成功。
总结:
● 在Axure中可以模拟数据库中的数据
● 在设置值的时候可以使用富文本框,在富文本框中也可以使用局部变量
● 全局变量存储键值对的一个小技巧