执行以下代码时出现问题。 当我的用户名和密码为true时,我将收到此消息“无效的用户!请使用VALID用户名和密码重试”。 如果我输入错误的用户名n密码,则什么也不会发生(仍然无法继续进行下一个表格)。

private bool CompareStrings(string string1, string string2)
    {
        return String.Compare(string1, string2, true, System.Globalization.CultureInfo.InvariantCulture) == 0 ? true : false;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        try 
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "Server = blabla; Database = MoinMoun; User Id = Aema; password = 12345";
            con.Open();

            //SqlCommand cmd = new SqlCommand("SELECT username,password FROM Admin WHERE username='" + txtusername.Text + "' and password='" + txtpassword.Text + "'", con);SELECT ISNULL(username,'') AS username, ISNULL(password,'') AS password FROM Admin WHERE username = '" + txtusername.Text + "' and password='" + txtpassword.Text + "'", con


            SqlCommand cmd = new SqlCommand("SELECT username,password FROM Admin WHERE username='" + txtusername.Text + "' and password='" + txtpassword.Text + "'", con);

            SqlDataReader dr = cmd.ExecuteReader();

            string usertext = txtusername.Text;
            string passtext = txtpassword.Text;

            while(dr.Read())
            {

                if(this.CompareStrings(dr["username"].ToString(), usertext) &&
                    this.CompareStrings(dr["password"].ToString(), passtext))
                {
                    Form2 frm = new Form2();
                    frm.Show();
                    this.Hide();                        
                }
                else
                {       
                    MessageBox.Show("Invalid User! Try again with VALID username and password");                        
                }
            }
            dr.Close();
            con.Close();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);

        }
    }

===============>>#1 票数:0

使用这个:

 SqlParameter[] parameters = new SqlParameter[]
                             {
                                 new SqlParameter("@username", txtusername.Text),
                                 new SqlParameter("@pwd", txtpassword.Text)
                             };
SqlCommand cmd = new SqlCommand("SELECT username,password FROM Admin WHERE username=@username and password=@pwd", con);
cmd.Parameters.AddRange(parameters);

===============>>#2 票数:0 已采纳

private void button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection();
    try
    {
        con.ConnectionString = "Server = blabla; Database = MoinMoun; User Id = Aema; password = 12345";
        con.Open();

        SqlCommand cmd = new SqlCommand("SELECT username,password FROM Admin WHERE username=@userName and password=@passWord", con);
        cmd.Parameters.Add(new SqlParameter("@userName", txtusername.Text));
        cmd.Parameters.Add(new SqlParameter("@passWord", txtpassword.Text));
        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.Read())
        {
            con.Close();
            dr.Close();
            Form2 frm = new Form2();
            frm.Show();
            this.Hide();
        }
        else
        {
            MessageBox.Show("Invalid User! Try again with VALID username and password");
        }
        if (!dr.IsClosed)
            dr.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    finally
    {
        if (con.State == System.Data.ConnectionState.Open)
            con.Close();
        con.Dispose();
    }
}

由于您已经在查询本身中比较了用户名和密码,因此无需再次检查。

在执行查询之前,使用SqlParameter验证用户输入,可以防止SQL注入攻击。

另外,始终尝试尽早关闭与数据库的连接。 您需要释放资源使用量。 尝试在finally块中关闭连接,以确保在离开try块之前已关闭连接。

===============>>#3 票数:0

我同意我也将移至sql参数解决方案,并且还将使用trim方法修剪您的输入文本以及任何多余的空白。

我还认为还需要更多信息,例如compareStrings方法代码。 比较字符串时,我将使用.equals()方法或String.Compare()。 例如

Usertxt.equals(dr["username"].ToString());
String.Compare(usertxt,Dr["username"].ToString(),false);

  ask by aema ismail translate from so

未解决问题?本站智能推荐:

2回复

WxPython登录功能

我正在编写一个GUI,并且试图在主GUI屏幕之前创建一个登录屏幕,但是我无法找出正确的方法来执行此操作 首先,我试图像这样构造它: 但这不起作用,什么也没有弹出 所以我尝试创建一个完全不同的较小窗口,该窗口在主窗口之前弹出,但无法正常工作 所以我的问题是我如何才能正确创
3回复

Python中的简单登录功能

而users.txt是: 问题是,当我运行该程序并输入正确的用户名和密码时,它会打印出“登录成功!”。 但它不会继续进入menu()。 相反,它再次显示“用户名:”和“密码:”。 但是,当我再次输入正确的用户名和密码(与users.txt相同或不同)时,它将进入menu(),并且
1回复

WordPress的登录重定向功能

我正在尝试在wordpress中创建自己的插件。 一切都很好,但我想对要访问插件页面的用户进行loginredirect检查。 这是我的functions.php中的functions.php : 这是从我的myplugin.php : 它不起作用。 如果我以访客身份在
1回复

用户登录后执行功能-Wordpress

我第一次在这里发布! 希望我的问题有意义。 我定义了一个在日历中排除类别的函数,当我像这样执行它时,它可以很好地工作: 但是我想要的是仅在用户登录后才执行它。所以我这样做了: 但这似乎不起作用。 你能帮忙吗? 非常感谢Lucas
2回复

登录功能仅呈现首字母

我刚刚做了登录功能,它可以正常工作; 但是名称显示不正确; 由于某种原因,它仅回显名称的第一个字母J。 它已正确写入数据库中。 有没有人遇到过同样的问题? 问候 雅切克
1回复

如何将登录过程分解为功能?

我当前使用的是在网上找到的登录脚本的修改版本。 有人可以建议一些将代码模块化为功能的方法吗? 这是登录页面的代码: 理想情况下,我想要一个用于用户帐户搜索和会话设置的功能。 我以前曾尝试将此代码段复制到一个单独的php函数文件中,但是似乎没有用。
1回复

登录工作正常,但现在无法调用任何功能

这是我的代码,该代码从开始body标签下面开始: 登录功能可以正常工作,但此后无法对该脚本标记内的函数进行任何调用。 不仅如此,但奇怪的是,没有javascript的<script>在Facebook脚本代码之后根本无法工作。 没有调用debug alert()函数,也没
4回复

使用PHP登录表单而不刷新

我有一个登录表单,我通过PHP验证。 问题是,表单的操作引用了文件本身,因此它将刷新页面。 我不喜欢这个。 是否可以通过PHP检查输入而无需刷新页面? 这是我的代码:
1回复

重定向后如何从外部登录功能中回显$ _SESSION变量?

我有一个重定向到管理员帐户的登录脚本,我想回显在登录函数中创建的一些会话变量,但我不断收到“未定义的变量”通知。 这是我的登录脚本 这是我管理目录中index.php文件的摘录
2回复

使用用户名和密码字段中的任何内容登录脚本

抱歉,对于那些可以花一点时间来帮助陷入困境的菜鸟的人,我再次写了一篇长篇文章。 我一直遇到一些困难,以前曾在这里询问过有关如何从登录名中输入用户名和密码时如何从数据库中提取任何用户的名字和姓氏的任何指导。 现在,当我的代码被编辑时,似乎任何人都可以使用他们想要的任何内容登录。