首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >code.org中的错误与登录系统混淆

code.org中的错误与登录系统混淆
EN

Stack Overflow用户
提问于 2021-04-12 21:29:50
回答 1查看 97关注 0票数 1

我正在使用code.org制作一个小应用程序,但是,我的应用程序需要登录。在创建登录时,我希望它检查以确保用户的输入在数据库中不存在。我不希望有多个用户名相同的人。当我在数据库中只有一个帐户时,它运行得很好。但当有一个以上的,它不再做正确的工作。它确实检查用户的输入是否等于数据库中的用户名,并告诉用户它是一个无效的用户名,但是它将它们发送到下一个屏幕,并将用户输入的用户名和密码保存到数据库中。

下面是我所做的(我为alert使用了自己的函数,因为code.org不允许使用alert函数)。

代码语言:javascript
复制
// 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);
      }
    }
  });
});

我已经想了很长一段时间来解决这个问题。我真的很感激任何帮助,即使它没有完全修复它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-12 22:17:41

你的做法是错误的。当您想确保没有重复时,必须在整个数据库中运行。如果在浏览时找到匹配的内容,请发出警报并停止。但是,只有在最后找不到匹配项时,才添加条目。

当前代码在没有匹配项时立即添加新条目。因此,几乎总是直接与第一项。即使它找到了第一个条目的匹配项,它也只是发出警告,但是继续循环,因为您不调用break

这样试一试:

代码语言:javascript
复制
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");
        });    
    }

  });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67065932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档