我用ASP.NET做了一个登录页面,运行也没错误,就是输入用户名和密码以后提示用户名或密码错误,有人知道是什么原因吗?

解决方案 »

  1.   

    数据库没有问题,我把源码发过去 :
    protected void btn_login_Click(object sender, EventArgs e)
        {
            //获取用户输入信息
            string UserName = tbxaccount.Text.ToString();
            string Password = tbxpwd.Text.ToString();
            //用户数据加密
            string strMd5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "md5");
            //Response.Write(strMd5);
            //Response.End();
            if (Session["CheckCode"] == null)
            {
                lblMessage.Text = "系统错误,不能生成验证码";
                lblMessage.Visible = true;
                return;
            }
            if (tbxcheckcode.Text == "")
            {
                lblMessage.Text = "请输入验证码";
                lblMessage.Visible = true;
                return;
            }
            if (String.Compare(Session["CheckCode"].ToString(), tbxcheckcode.Text, true) != 0)
            {
                lblMessage.Text = "验证码错误,请输入正确的验证码。";
                lblMessage.Visible = true;
                return;
            }
            //读取数据库连接字符串
            string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["healthyConnectionString"]);
            //Response.Write(settings);
            //Response.End();
            //创建数据库连接对象
            SqlConnection myconn = new SqlConnection(settings);
            //打开数据库连接
            myconn.Open();
            //读取用户信息
            string mysql = "select * from [user] where username=" + "'" +UserName + "'" + "and userpwd=" + "'"+ strMd5 + "'";
            //Response.Write(mysql);
            //Response.End();
            //创建命令对象
            SqlCommand mycmd = new SqlCommand(mysql, myconn);
            //创建适配器并执行命令
            SqlDataReader mydr = mycmd.ExecuteReader();
            try
            {
                if (mydr.Read())
                {
                    //把用户名写入session对象
                    Session["UserName"] = mydr[0];
                    //把权限编号写入session对象
                    //Session["RoleID"] = mydr[3];
                    //Response.Write(Session["UserName"]);
                    //Response.End();
                    //页面定位
                    Response.Redirect("main.aspx");
                }
                else
                {
                    //显示错误信息
                    lblMessage.Visible = true;
                    lblMessage.Text = "用户名或密码错误";
                }
            }
            finally
            {
                //关闭操作
                mydr.Close();
                myconn.Close();
            }
        }
      

  2.   

    你在
     else 
                { 
                    Response.Write("select * from [user] where username=" + "'" +UserName + "'" + "and userpwd=" + "'"+ strMd5 + "'");
                     Response.End(); 
                    //显示错误信息 
                    lblMessage.Visible = true; 
                    lblMessage.Text = "用户名或密码错误"; 
                } 
    看输出的值到查询分析器里面检查哈结果
      

  3.   

    输出strMd5看一下与你数据库中的密码是不是一样的~~代码应该没问题啊~
      

  4.   

    select * from [user] where username='1'and userpwd='C4CA4238A0B923820DCC509A6F75849B'
    这是按lk829的说法运行后在页面上显示的内容。
      

  5.   

    你这数据库里的记录   username 是 001  password 也是001
    你登陆的时候  先把密码经过MD5加密过了   然后得到的是一串MD5字符串
    而你数据库里的password是没有经过MD5加密的   还是001
    你这个时候  用这串MD5加密字符去和正常的001去比较   当然查找不到用户咯
    估计是这问题哦  
    你先把MD5加密这段代码屏蔽看看呢
    设个断点看看呢
      

  6.   

    要把SqlDataReader mydr = mycmd.ExecuteReader();去了,    
    Session["UserName"] = mydr[0]; 
    就找不到mydr了。
      

  7.   

    你可以把你生成的string mysql = "select * from [user] where username=" + "'" +UserName + "'" + "and userpwd=" + "'"+ strMd5 + "'"; 放入到数据库查询器中进行查询看看是什么结果