ASP中登录失败登录

binxinxuelian 2010-10-19 04:41:17
在登录时为什么总是是非法登录:登陆界面代码如下:
protected void login_Click(object sender, EventArgs e)
{
if (txtusername.Text == "")
{
Response.Write("<script language=javascript>alert('请输入用户名!');</script>");
}
else if (txtpassword.Text == "")
{
Response.Write("<script language=javascript>alert('请输入密码!');</script>");
}
else
{
string Username,Password;
Username = txtusername.Text.Replace("'", "''");
Password = password.Text.Replace("'","''");
//利用用户输入的用户名和密码定义SQL查询字符串
string sql = "select * from userinfo where username='"+Username+"'and password='"+db.mymd5(Password)+"'";
DataTable dt = new DataTable();//定义DataTable对象实例
dt = db.GreatDs(sql).Tables[0];//调用 db.GreatDs()方法执行SQL查询字符串,并把查询记录保存到DataTable对象实例中
if (dt.Rows.Count > 0) //利用DataTable对象的Rows子对象的Count属性来判断是否存在记录
{
//显示成功登陆信息
Response.Write("<script language=javascript>alert('登录成功!!');</script>");
Session["memberlogin"] = "ok";
Session["membername"] = Username;
Session["memberpassword"] = Password;
Response.Redirect("index.aspx");
}
else
{
Response.Write("<script language=javascript>alert('非法登录!!');</script>");
}
}
GreatDs方法的代码:
public static DataSet GreatDs(string sql)//查询数据库记录集
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = connstring;
conn.Open();

SqlDataAdapter mydr = new SqlDataAdapter(sql, conn);//执行查询
DataSet myds = new DataSet();//定义DataSet对象实例吧查询的数据填充到DataSet对象实例中
mydr.Fill(myds);
return myds;
}
本人刚刚学习,不明白为什么登录时总是提示非法登录,希望高人指点。谢谢!在线等待……
...全文
184 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
binxinxuelian 2010-10-27
  • 打赏
  • 举报
回复
问题已经解决了,谢谢大家的帮助!
kingyc2009 2010-10-19
  • 打赏
  • 举报
回复
登录界面这样写我刚做的好使你试试:
string mm;
mm = Convert.ToString(ds.Tables[0].Rows[0]["userPwd"]);
FormsAuthentication.HashPasswordForStoringInConfigFile(Password.Text,"MD5") == mm
zhanghang19890621 2010-10-19
  • 打赏
  • 举报
回复
多 调试 调试 看看 是在哪里出错的 或者没有找到数据

最好调试的时候 把要运行的sql 复制下来再数据库运行一下 试试看
fengyuan2010 2010-10-19
  • 打赏
  • 举报
回复
在【 DataTable dt = new DataTable();//定义DataTable对象实例】行打上断点,然后点在sql上,把上面的语句复制到查询分析器中,执行。
wuyq11 2010-10-19
  • 打赏
  • 举报
回复
protected void login_Click(object sender, EventArgs e)
{
if(string.IsNullOrEmpty(txtusername.Text))
{
Response.Write("<script language=javascript>alert('请输入用户名!');</script>");
//使用clientscript
}
else if (string.IsNullOrEmpty(txtpassword.Text))
{
Response.Write("<script language=javascript>alert('请输入密码!');</script>");
}
else
{
string Username,Password;
Username = txtusername.Text.Replace("'", "''");
Password = password.Text.Replace("'","''");
string sql = "select * from userinfo where username='"+Username+"' and password='"+db.mymd5(Password)+"'";
DataTable dt= db.GreatDs(sql).Tables[0];
if(dt.Rows.Count > 0)
{
Session["memberlogin"] = "ok";
Session["membername"] = Username;
Session["memberpassword"] = Password;
Response.Write("<script language=javascript>alert('登录成功!!');</script>");
Response.Redirect("index.aspx");
}
else
{
Response.Write("<script language=javascript>alert('非法登录!!');</script>");
}
}
sql在查询分析中执行
binxinxuelian 2010-10-19
  • 打赏
  • 举报
回复
在添加断点后 该dt = db.GreatDs(sql).Tables[0];不能执行
细嗅蔷薇 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sangenmutou 的回复:]

引用 11 楼 binxinxuelian 的回复:
加了,//利用用户输入的用户名和密码定义SQL查询字符串
string sql = "select * from userinfo where username='"+Username+"'and password='"+db.mymd5(Password)+"'";
在注册和登录时都添加了加密功能。怎么解决呢?

你用的是sqls……
[/Quote]
试试
sangenmutou 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 binxinxuelian 的回复:]
加了,//利用用户输入的用户名和密码定义SQL查询字符串
string sql = "select * from userinfo where username='"+Username+"'and password='"+db.mymd5(Password)+"'";
在注册和登录时都添加了加密功能。怎么解决呢?
[/Quote]
你用的是sqlserver数据库,下断点,然后执行到你这句的时候,把这段sql语句放到企业管理器里查询一下看有数据吗,没有数据就是这的错误,有数据就是上面我说的错误
zhyb0807508205 2010-10-19
  • 打赏
  • 举报
回复
GreatDs方法的代码:
public static DataSet GreatDs(string sql)//查询数据库记录集
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = connstring;
conn.Open();

SqlDataAdapter mydr = new SqlDataAdapter(sql, conn);//执行查询
DataSet myds = new DataSet();//定义DataSet对象实例吧查询的数据填充到DataSet对象实例中
mydr.Fill(myds);
return myds;
}


是不是这里连接数据库问题呢?貌似没指明连接哪个数据库吧
binxinxuelian 2010-10-19
  • 打赏
  • 举报
回复
加了,//利用用户输入的用户名和密码定义SQL查询字符串
string sql = "select * from userinfo where username='"+Username+"'and password='"+db.mymd5(Password)+"'";
在注册和登录时都添加了加密功能。怎么解决呢?
细嗅蔷薇 2010-10-19
  • 打赏
  • 举报
回复
看你下数据库的用户密码是否加密过。 。。
如果登陆的时候加密 添加的时候不加密 肯定进不去咧
sangenmutou 2010-10-19
  • 打赏
  • 举报
回复
public static DataSet GreatDs(string sql)
{
OleDbDataAdapter Dar = new OleDbDataAdapter(sql, connstring);
DataSet ds = new DataSet();
ds.Clear();
Dar.Fill(ds);
return ds;
}
这代码和我以前改过的一个真像
sangenmutou 2010-10-19
  • 打赏
  • 举报
回复
连接数据库的地方可能有错误
binxinxuelian 2010-10-19
  • 打赏
  • 举报
回复
恩,就是不知道怎么改呢?你能帮助我吗?谢谢!
majic2008 2010-10-19
  • 打赏
  • 举报
回复
非法登录说明执行了else代码,也即是条件dt.Rows.Count>0不成立,也就是dt = db.GreatDs(sql).Tables[0];没获取到数据啦
binxinxuelian 2010-10-19
  • 打赏
  • 举报
回复
不是密码的问题,我觉得是
if (dt.Rows.Count > 0) //利用DataTable对象的Rows子对象的Count属性来判断是否存在记录
{
//显示成功登陆信息
Response.Write("<script language=javascript>alert('登录成功!!');</script>");
Session["memberlogin"] = "ok";
Session["membername"] = Username;
Session["memberpassword"] = Password;
Response.Redirect("index.aspx");
}
else
{
Response.Write("<script language=javascript>alert('非法登录!!');</script>");
}
这段代码有错误!
wyq29 2010-10-19
  • 打赏
  • 举报
回复
if (dt.Rows.Count > 0)

在前面放一个断点 测试就是了

1. 看看sql语句执行的是啥
2. 看看数据库里到底是否有记录

怀疑你的密码加密 和 数据库里不一致吧
sy_binbin 2010-10-19
  • 打赏
  • 举报
回复
或者确定数据库里有符合条件的数据吗?
sy_binbin 2010-10-19
  • 打赏
  • 举报
回复
string sql = "select * from userinfo where username='"+Username+"'and [password]='"+db.mymd5(Password)+"'";

这样试试
辰爸 2010-10-19
  • 打赏
  • 举报
回复
dt.Rows.Count > 0
返回的结果为0条,楼主输入的用户名密码是否正确?

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧