【发布时间】:2013-03-21 05:23:55
【问题描述】:
我有一个 indexedDB 并将其用于登录功能。我正在尝试在用户登录时使用用户信息填充表单。但是该表单使用 [object HTMLInputElement] 而不是用户信息填充。
这是我带用户(db key)访问对象(用户)的地方
编辑这是我运行的站点:http://www3.carleton.ca/clubs/sissa/html5/admin.html 我的站点编辑器会在我保存时对其进行更新,因此在我尝试新事物时站点脚本可能会有所更改。
这是我带用户(db key)访问对象(用户)的地方
function loginCheck(user,pass){ db.transaction("users").objectStore("users").get(user).onsuccess = function(event) {
var loggedUser = event.target.result;
if(!loggedUser){
alert('Sorry, Username does not exist. Please try again.');
}else if(pass !== loggedUser.pw ){
alert('Incorrect log in combination. Please try again.');
}else{loggedIn(loggedUser);}
}
}
function loggedIn(loggedUser){
var u=loggedUser;
alert('Welcome '+u.fn+' '+u.ln+' to Macroplay');
//function to populate fields
alert('get values called');
getValues(u);
//session store
var signedin = 'user';
var username = u.userName;
newLocal(signedin,username);
alert('local storage set');
}
我使用这个函数 getValues 来存储我想要的对象的各种字段。
编辑:我将变量 test 声明为全局变量并存储了用户的名字 (fn)。警报显示正确的名称,但填充仍然给我未定义。
var test;
function getValues(loggedUser){
var u = loggedUser;
alert('storing first name');
test = u.fn;
alert('First name = '+test);
lName = u.ln;
users = u.userName;
pass = u.pw;
email = u.em;
dob = u.dob;
tel = u.tel;
bio = u.bio;
school = u.scl;
alert('user values stored');
if(u.gender == 'M'){
gender[0].checked= true ;
}else{gender[1].checked= true ;}
}
这是我用来填充给我 [object HTMLInputElement] 的表单的函数
function populateFields(){
alert('Name of populated field: '+test);
fName.value = test;
lName.value = lName;
users.value = users;
pass.value = pass;
email.value = email;
dob.value = dob;
tel.value = tel;
bio.value = bio;
terms.disabled = true;
school.value = school;
alert('populate fields done');
save.value = 'Update';
signin.innerHTML = 'Log Out';
registerLabel.innerHTML = 'Account Information';
//open user info form
var accountInfo = document.getElementsByTagName('details');
accountInfo[1].open = open;
}
【问题讨论】:
-
不要在客户端 JavaScript 中进行身份验证。您发布的代码向我展示了如何仅使用 Web 浏览器来发现数据库中每个用户的密码。身份验证必须在服务器上完成。必须存在没有可以将用户密码返回给客户端 JavaScript 的 API。
-
这是一个学校作业。我们必须使用 JavaScript 和 indexedDB API 来做到这一点
-
换学校。 :) 说真的,如果您的讲师建议您在客户端 JavaScript 中检索密码,即使作为练习,我也会对课程提出异议。
-
这是一门关于 HTML5 的商务课程。他只是希望我们使用 indexedDB 来完成这项任务。
标签: javascript html object indexeddb