0
嗨这种形式是为了检查数据库的用户名和密码,并验证登录。 此登录页面正常工作,但卡住了一个小错误。在login.js的函数ListDBValues()中,Loop检查数据库以匹配用户名和密码。在成功匹配时,它会提醒“登录成功”,但随后出现“登录失败”,我给了休息但知道使用。我错在哪里?为什么在第一个标准匹配时执行else条件?登录验证循环执行其他条件'登录失败'后'登录成功'
的Index.html
<html>
<head>
<title>PhoneGap</title>
<link rel = "stylesheet" href="css/theme.min.css"/>
<link rel="stylesheet" href="css/jquery.mobile-1.2.1.css"/>
<script type="text/javascript" charset="utf-8" src="js/jquery-1.6.1.min.js"></script>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery.mobile-1.2.1.min.js"></script>
<script type="text/javascript" src="login.js"></script>
</head>
<body onLoad="onBodyLoad()">
<div data-role="page" id="page1" data-theme="b">
<div class="header" id="header" data-role="header">
<h3>Registration</h3>
</div>
<div data-role="content">
<div class="username" data-role="fieldcontain">
<label for="username"> Username </label>
<input name="username" id="username" placeholder="Enter Username" value="" type="text">
</div>
<div class="password" data-role="fieldcontain">
<label for="password">Password</label>
<input name="password" id="password" placeholder="Enter Password" value="" type="password">
</div>
<input id="login" value="login" type="button" onClick="validationcheck()">
<input id="register" value="register" type="button" onClick="register()">
</div>
</div>
</div>
</body>
</html>
Login.js
var db;
var shortName = 'WebSqlDB';
var version = '1.0';
var displayName = 'WebSqlDB';
var maxSize = 65535;
function successCallBack() {
alert("DEBUGGING: success");
}
function onBodyLoad(){
alert("DEBUGGING: we are in the onBodyLoad() function");
if (!window.openDatabase) {
alert('Databases are not supported in this browser.');
return;
}
db = openDatabase(shortName, version, displayName,maxSize);
db.transaction(function(tx){
tx.executeSql('CREATE TABLE IF NOT EXISTS Contacts(UserId INTEGER NOT NULL PRIMARY KEY, fname TEXT NOT NULL, lname TEXT NOT NULL,age INTEGER NOT NULL,username TEXT NOT NULL,password TEXT NOT NULL)',[],nullHandler,errorHandler);
},errorHandler,successCallBack);
}
/*The problem is in this function*/
function ListDBValues() {
if (!window.openDatabase) {
alert('Databases are not supported in this browser.');
return;
}
db.transaction(function(transaction) {
transaction.executeSql('SELECT * FROM Contacts;', [],
function(transaction, result) {
for (var i = 0; i < result.rows.length; i++) {
var row = result.rows.item(i);
var username1 = $('#username').val();
var password1 = $('#password').val();
var uname=row.username;
var pasw=row.password;
if(username1==uname && password1==pasw){
alert("Login Success");
login();
break;
}
else
{
var status=1;
}
}
if(status==1)
{
alert("login failed");
}
},errorHandler);
},errorHandler,nullHandler);
return;
}
function errorHandler(transaction, error) {
alert('Error: ' + error.message + ' code: ' + error.code);
}
function nullHandler(){};
function login(){
window.location="file:///android_asset/www/front.html";
};
function validationcheck(){
if($("#username").val() == ""){
alert("please enter username");
$("#username").focus();
}
else if ($("#password").val() == "") {
alert("Please enter password");
$("#password").focus();
}
else
{
success();
}
}
function success(){
ListDBValues();
}
function register(){
window.location="file:///android_asset/www/register.html";
}
嗨,感谢一吨。它的工作和非常感谢这个想法,欣赏很多。我明白了一切,但这个功能(交易,结果)是什么呢? –
@ user2861229我们选择有合适用户名和密码的行。如果至少有一个这样的行(实际上,由于独特的对用户密码,通常只有一行,但由于某种原因,可能有多行具有相同的用户密码),因此登录是成功的。如果没有这些用户名和密码的行,那么登录失败 – Regent
谢谢..非常多 –