我的确是菜鸟,希望高手帮我解决下,谢谢 以下是 登陆的login.aspx.cs文件的代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using OnLineExam.BusinessLogicLayer;public partial class Web_Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {                   
            if (!Object.Equals(Request.Cookies["UserID"], null))
            {
                HttpCookie readcookie = Request.Cookies["UserID"];
                this.txtUserID.Text = readcookie.Value;
            }
        }
       
    }
    //登录按钮事件
    protected void imgBtnLogin_Click(object sender, ImageClickEventArgs e)
    {
        Users user = new Users();//创建Users对象user
        string pwdMd5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtPwd.Text.Trim(), "MD5").ToString();
        if (String.Compare(Request.Cookies["yzmcode"].Value, Validator.Text, true) != 0)
        {
            lblMessage.Text = "验证码错误!";
        }
        else
        {
            if (user.CheckPassword(txtUserID.Text.Trim()))//根据用户编号查询用户密码
            {
                if (user.UserPwd == pwdMd5)//输入密码与用户密码相同
                {
                    if (object.Equals(Request.Cookies["UserID"], null))
                    {
                        CreateCookie();
                    }
                    else
                    {
                        CreateCookie();
                    }  
                     Session["userID"] = txtUserID.Text.Trim();//存储用户编号
                     Response.Redirect("Default.aspx");//转向管理员操作界面                      
                }
                else//密码错误,给出提示
                {
                    lblMessage.Text = "您输入的密码错误!";
                }
            }
            else//用户不存在,给出提示
            {
                lblMessage.Text = "该用户不存在!";
            }
        }
    }
    protected void ChangeCode_Click(object sender, EventArgs e)
    {    }
    private void CreateCookie()
    {
        HttpCookie cookie = new HttpCookie("UserID");
        if (this.cbxRemeberUser.Checked)
        {
            cookie.Value = this.txtUserID.Text;
        }
        cookie.Expires = DateTime.MaxValue;
        Response.AppendCookie(cookie);
    } }

解决方案 »

  1.   

    你确定pwdMd5 这个string的值和你数据库中的一至?
      

  2.   

    建议调试看看,是不是SQL语句写错了!
      

  3.   

         你添加一个用户的时候有没有用 tirm() 方法` 
      

  4.   

    cstr(trim())  加这个
      

  5.   

    可能是由于空格造成的吧。。看你数据库存储密码的类型是不是变长的,看加var没有,如果没有加,取出来的password先trim再比较
      

  6.   

    就我分析吧,你说你的密码和数据库中的一致,而我问你pwdMd5这个值的时候,你说你不知道,所以你数据库中的值可能是没经过MD5处理的,当然和pwdMd5这个值对不上,当然说你密码错误了
      

  7.   

    你数据库里的密码字段的值,要和你程序里的处理方式对应
    即System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtPwd.Text.Trim(), "MD5").ToString();这个处理结果。你可以先输入密码,然后断点到这句话上,把处理过的值复制下来,粘到数据库中的密码字段就可以了
      

  8.   

    1.先调试,看是否真的与数据库中的一致,
    2.如果一致,看是不是数据库中存在空格,
    3.把sql语句调试显示出来,到查询分析器中去运行,看是否能查到值
      

  9.   

    我也遇到过这个问题,我的问题是因为数据库字段定义时用的"char",如果输入的内容位数小于字段定义的位数,会在后面自动添加空格,我在读出密码字段后直接与画面输入的比较,所以认为不一致,因为数据库读出来的有空格,用眼睛看是一样的。我当时在向数据库写数据和从数据库读数据时,都去首尾空格,我的想法是人家密码要是就像用空格怎么办?我的问题的解决方法是:改变数据库字段定义的类型,将"char"改成"varchar"char:固定长度,如果内容长度不够,自动填空格补充位数
    varchar:变长,不自动填空格以上是我问题的解决方法,希望对你有帮助。