javascript - 在 code.org 中与登录系统混淆的错误
问题描述
我正在使用 code.org 制作一个小应用程序,但是,我的应用程序需要登录。创建登录时,我希望它检查以确保数据库中不存在用户的输入。我不希望多个人使用相同的用户名。当我在数据库中只有一个帐户时,它工作得很好。但是当有多个时,它就不再正确地工作了。它确实检查用户的输入是否与数据库中的用户名相同,它确实告诉用户这是一个无效的用户名,但无论如何它会将它们发送到下一个屏幕并保存用户输入的用户名和密码进入数据库。
这是我所拥有的(我使用自己的函数,alert
因为 code.org 不允许使用该alert
函数。)
// Alert function
function Alert(text,time) {
if(text != undefined) {
textLabel("ALERT",text);
setProperty("ALERT","background-color","black");
setProperty("ALERT","text-color","white");
if(time != undefined) {
setTimeout(function() {
deleteElement("ALERT");
},time);
}
}else{
console.log("WARNING: \"Alert()\" -> \"text\" is undefined.");
}
}
// create account button
onEvent("create-account-bt","click",function() {
readRecords("players",{},function(record) {
for(var i = 0 ; i < record.length ; i++) {
if(getText("new-username-input") != record[i].username) {
if(getText("new-passcode-input") != "") {
createRecord("players",{
username:getText("new-username-input"),
passcode:getText("new-passcode-input")
},function() {
setScreen("login-screen");
});
}else{
Alert("Incorrect passcode or username",1200);
}
}else{
Alert("Incorrect passcode or username",1200);
}
}
});
});
很长一段时间以来,我一直试图弄清楚这一点。我真的很感激任何帮助,即使它没有完全解决它。
解决方案
你的方法是错误的。当你想确保没有重复时,你必须遍历整个数据库。如果您在浏览时发现匹配项,请提醒并停止。但只有在最后找不到匹配项时,才添加条目。
一旦没有匹配项,您当前的代码就会添加新条目。所以几乎总是直接用第一个条目。即使它找到与第一个条目的匹配项,它也会发出警报,但会继续循环,因为您不调用break
.
试试这种方式:
onEvent("create-account-bt","click",function() {
readRecords("players",{},function(record) {
var matchFound = false;
for(var i = 0 ; i < record.length ; i++) {
if((getText("new-username-input") == record[i].username) ||
(getText("new-passcode-input") == ""))
{
Alert("Incorrect passcode or username",1200);
matchFound = true;
break;
}
}
if(!matchFound) {
createRecord("players",{
username:getText("new-username-input"),
passcode:getText("new-passcode-input")
},function() {
setScreen("login-screen");
});
}
});
});
推荐阅读
- r - 用于skipgrams的上下文关键字(kwic)?
- ruby-on-rails - Rails runner 找不到文件,Rails 版本 5.1.3
- javascript - Chart.JS - 在时间图中设置固定的 X 和 Y 轴值?
- reactjs - 我们是否可以选择为 React 路由实现键盘快捷键
- python - 在 bqplt/jupyter 中使用多个滑块创建动态图表
- r - sidebarMenu 未存储正确的值
- python-3.x - 源代码被打包在 python 轮子中
- elasticsearch - 在 Elasticsearch 中批量插入对象
- javascript - 发布自定义 HANDLER URL reCAPTCHA
- c# - 在 GridView c# 中按名称而不是编号调用单元格