首页 > 解决方案 > 如何修复与 SQL 相关的登录表单奇怪错误?

问题描述

我已经建立了一个注册表单和一个登录表单,突然由于某种原因我的注册表工作完全正常,但我的登录表单只登录我的 sql 表中的前 5 个成员。对于其他人,它说用户名是假的。

我在 Visual Studio 2015 上,尝试重新启动、保存、更改数据库、输入错误密码并检查数据库中的每个成员。

登录页面.ASPX:

  <!DOCTYPE html>
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
  <title></title>
  </head>
  <body>
 <form id="form2" runat="server" action="Logis.aspx" method="get" >
 <h2> <font face="Arial"></font></h2>
 Username: <input id="Text2" type="text" name="usernameLog"/><br /> 
 Password: <input id="Password2" type="password" name="passwordLog"/><br /> 
 <input id="Submit2" type="submit" value="Log in"  /><br />

 <!-- <a href="HomePage.aspx">Back to homepage</a> -->
 </form>
 </body>
 </html>

LOGIS.ASPX:

public partial class Logis : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        App_Code.DAL dal = new App_Code.DAL();
        string user = Request.QueryString["usernameLog"];
        string pass = Request.QueryString["passwordLog"];
        if (dal.IsExist(user))
        {
            if(dal.IsExistPassword(pass))
            {
                if (dal.IsSame(user, pass))
                {
                    //Response.Write("אתה מחובר");
                    Response.Redirect("RegisHome.aspx");
                }
                else
                    Response.Write("Your password is incorrect");
            }
            else
                Response.Write("This password is incorrect");                      
        }
        else
            Response.Write("Your username is incorrect");


    }
}

}

DAL.cs 功能:

    public bool IsExist(string username)
    {
        string sql = "SELECT COUNT(Username) FROM Users WHERE Username = '" + username + "'";
        cmd.CommandText = sql;
        cmd.Connection = connection;
        connection.Open();
        int x = (int)cmd.ExecuteScalar();
        connection.Close();
        return ((x > 0));
    }
    public bool IsExistPassword(string password)
    {
        string sql = "SELECT COUNT(Password) FROM Users WHERE Password = '" + password + "'";
        cmd.CommandText = sql;
        cmd.Connection = connection;
        connection.Open();
        int x = (int)cmd.ExecuteScalar();
        connection.Close();
        return ((x > 0));
    }
    public bool IsSame(string username, string password)
    {
        string sql = "SELECT Password FROM Users WHERE Username = '" + username + "'";
        cmd.CommandText = sql;
        cmd.Connection = connection;
        connection.Open();
        string pp = (string)cmd.ExecuteScalar();
        connection.Close();
        return (pp == password);
    }

我希望它在每个用户登录时登录,但它只为前 5 个用户登录。

标签: c#htmlasp.netvisual-studiowebforms

解决方案


我已经放弃了这个网站,决定尝试打开一个新的。经过一个小时创建一个与这个相同的新网站后,我终于找到了问题所在。出于某种原因,白天我设计了所有 css 东西,数据访问层操作InsertUser应该在注册时将用户数据插入表中,设置为internal而不是public。由于某种原因,该程序没有发送一条错误消息说它无法到达桌子,但它决定忽略这个问题。非常简单和烦人的错误,仍然感谢大家的慷慨支持和帮助。

编辑:你猜怎么着,它再次不起作用。我没有完全检查它,但经过一些 CSS 乐趣后,我完全检查了它,但它不起作用。我可以向您保证,如果我从表查询中手动添加用户,我可以以他的身份登录。但是当我注册时,用户数据进入表格,但我无法以他的身份登录。


推荐阅读