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
謝謝..非常多 –