用的SQLServer数据库我检查过代码,应该不会有什么问题吧!这个是登录按钮的事件代码:private void Image1_ServerClick(object sender, System.Web.UI.ImageClickEventArgs e)
{
if(Page.IsValid)
{
if(Session["ValidateCode"]==null) 
{
Response.Write("<script>alert('验证码过期,请刷新页面以更新验证码!');</script>");
return;
}
else
{
if(txtValidateCode.Value.ToString()!=Session["ValidateCode"].ToString())
{
Response.Write("<script>alert('验证码输入有误!');</script>");
return;
}
}
MyFunc myClass = new MyFunc();
string LoginType=txtLoginName.Value.ToString().Remove(1,txtLoginName.Value.Length-1);
DBmanages myDBmanages= new DBmanages();

string myResult=myDBmanages.UserValidate(txtLoginName.Value.ToString(),txtPassword.Value.ToString(),LoginType);
if(myResult!="")
{
if(myResult=="拒绝")
{
Response.Write("<script>alert('该用户已被系统禁用,登录被拒绝!');</script>");
}
else
{
Session["loginname"]=txtLoginName.Value.ToString();//登录用户编号
Session["username"]=myResult;//服务站名称(单位全称)
Session["displayname"]=myResult;//显示名(单位全称)
Session["logintype"]=LoginType;//服务站:"F",供货商:"G"
if(LoginType=="F")
{
Session["logintypename"]="服务站";
}
else
{
Session["logintypename"]="供货商";
}

Server.Transfer("main.aspx",false);
}
}
else
{
Response.Write("<script>alert('该用户不存在或输入密码不正确!');</script>");
} }
}

解决方案 »

  1.   

    对了,还有个比较严重的问题,用Session保存的登陆用户信息,发现经常从数据库取回的纪录,并不是正确的
    往往是莫名其妙,一点关系都没有的信息出现,
    比如服务站名称,就根本不是登陆编号对应的,而是其它莫名的信息不知道怎么回事了
      

  2.   

    这个是验证用户的过程:
    DBmanages.cs中的public string UserValidate(string userid,string password,string logintype)
    {
    if(validate_string(userid) || validate_string(password))
    {
    return "";
    }
    string sql=""; //根据登录名的前缀判断该查询哪个表的用户资料
    if(logintype=="F")
    {
    //是服务站
    sql="select ShopOrStation02,ShopOrStation07 from ShopOrStation where ShopOrStation01='"+userid+"' and ShopOrStation15='"+password+"'";
    }
    else
    {
    //是供应商
    sql="select Providers02,Providers28 from Providers where Providers01='"+userid+"' and Providers06='"+password+"'";
    } //查询并返回结果
    string s="";
    try
    {
    SqlDataReader dr=ExecuteSqlDataReader(sql);

    while(dr.Read())
    {
    if(!dr.IsDBNull(0))
    {
    if(dr.GetString(1)=="拒绝")
    {
    s="拒绝";
    }
    else
    {
    s=dr.GetString(0);//是许可就返回 用户名
    }
    }
    }
    }
    finally
    {
    CloseConnection();
    }
    return s;
    }
      

  3.   

    本机调试么?
    如果是本机,你的配置?
    SESSION怎么存就怎么取嘛,怎么会不对呢。如果没信息,估计是SESSION丢失了如果你机器配置低,会出现这样的情况
      

  4.   

    这是上面方法用到的我是在这里打开的连接,而在使用的地方关闭的连接,不知道这样是不是有问题???public SqlDataReader ExecuteSqlDataReader(string strSQL)
    {
    SqlCommand myCmd = new SqlCommand(strSQL,myConn);
    OpenConnection();
    try
    {

    SqlDataReader myDr = myCmd.ExecuteReader();
     
    return myDr;
    }
    catch(System.Data.SqlClient.SqlException e)
    {
    throw new Exception(e.Message);
    }
    finally
    {
    myCmd.Dispose();
    //CloseConnection();//单独调用关闭:CloseConnection()
    } }
      

  5.   

    Session是怎么存怎么取的,但怀疑是从SQLServer取回的数据不对,存在Session的数据就不对但不知道为什么会取回的数据不对!这是在服务器上出现的问题,本机调试不会有问题服务器是IBMX346,内存1G,至强3.0,70GSCSI
    配置应该还可以,数据库服务器一样的服务器,只是内存是2G