| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1202 人关注过本帖
标题:[求助]为什么直接跳过查询
只看楼主 加入收藏
垃圾的沉默
Rank: 1
等 级:新手上路
威 望:2
帖 子:511
专家分:0
注 册:2007-6-25
收藏
得分:0 

我写在这里但是不知道为什么就是不执行.
public void Admin_Login(Object sender, EventArgs E)
{
if (TextBox1.Text != Session["ValidateCode"].ToString())
{
Response.Write("<script>alert('验证码错误,请重新登陆!!')</sc" + "ri" + "pt/>");
}
else
{
if (source.Text == "")
{
Response.Write("<script>alert('密码不能为空!!')</sc" + "ri" + "pt/>");
}
//获取要加密的字段,并转化为Byte[]数组
byte[] data = System.Text.Encoding.Unicode
.GetBytes(source.Text.Trim().ToCharArray());
//建立加密服务
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
//加密Byte[]数组
byte[] result = md5.ComputeHash(data);
//将加密后的数组转化为字段
string sResult = System.Text.Encoding.Unicode.GetString(result);
//作为密码方式加密

string EnPswdStr = System.Web.Security.FormsAuthentication.
HashPasswordForStoringInConfigFile(source.Text.ToString(), "MD5");
OleDbConnection cnn;
OleDbCommand cmd;
OleDbDataReader datar;
string sql, strcnn;
strcnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("App_Data/DataBase.mdb");
cnn = new OleDbConnection(strcnn);
cnn.Open();
sql = "select * from userG where userID='" + AdminID.Text + "' and userPWD='" + EnPswdStr + "'";
cmd = new OleDbCommand(sql, cnn);
datar = cmd.ExecuteReader();
if (datar.Read())
{
Session["userID"] = datar["userID"].ToString();
Session["userN"] = datar["userN"].ToString();
Session["sc"] = datar["sc"];
}
if (Session["userID"] != "" && Session["userID"] != null)
{

Response.Redirect("index.htm");
}
else
{
Response.Write("<script>alert('密码或用户名错误,请重新登陆!!')</sc" + "ri" + "pt/>");
Response.Redirect("admin_Login_A.aspx");
}

}
}

[此贴子已经被作者于2007-9-20 16:07:42编辑过]


人们笑我太疯癫...我笑人们太正经
2007-09-20 16:02
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
收藏
得分:0 

如果你是要实现登录功能的话,还是给你这段代码作作参考吧.
#region ///登陆事件
//当用户单击登陆按钮时执行该方法
private void cmdLogin_Click(object sender, System.EventArgs e)
{
if(this.txtLoginName.Text!=""&&this.txtPassword.Text!="")
{
//设立一个用户输入的密码是否正确的标志变量
bool bValidPassword=false;

//保存哈希后的数据库密码
byte[] arHashedSavePass=new byte[20];

//保存反映数据库操作正确与否的返回值
int iReturnValue;

//从数据库中获取用户正确的密码
iReturnValue=DBUtils.Login.GetEmpPassword(txtLoginName.Text,ref arHashedSavePass);

if(iReturnValue==(int)DBResult.Success)
{
//如果数据库操作成功,则验证数据库密码和用户输入的密码

//对输入的密码进行Unicode编码后再对其进行哈希处理,采用SHA1

UnicodeEncoding UE=new UnicodeEncoding();
byte[] arSuppliedPass=UE.GetBytes(txtPassword.Text);

SHA1Managed SHhash=new SHA1Managed();
byte[] arHashSuppliedPass=SHhash.ComputeHash(arSuppliedPass);

//比较数据库密码跟用户输入的密码是否相等
bool bHashesEqual=true;

for(int i=0;i<arHashSuppliedPass.Length;i++)
{
if(arHashSuppliedPass[i]!=arHashedSavePass[i])
{
bHashesEqual=false;
break;
}
}
if(bHashesEqual)
{
//如果相等,则标志变量为真
bValidPassword=true;
}
else
{
//否则显示密码错误信息
lblInfo.Text="用户名或密码错误,请重试!";
}

}
else
{
//如果数据库操作失败,则说明登录名不存在,显示错误信息
lblInfo.Text="用户名或密码错误,请重试!";
}
if(bValidPassword)
{
//如果用户登陆名跟密码都正确,则在会话间保存用户登录信息

//保存用户登录名
Session["LoginName"]=txtLoginName.Text;

string strLoginName=txtLoginName.Text;

//新建一个客户端的Cookie值
HttpCookie objNewCookie=new HttpCookie("BlueHill");

//设定Cookie的有效日期
objNewCookie.Expires=DateTime.Now.AddDays(30);

//添加Cookie子项
objNewCookie.Values.Add("LoginName",strLoginName);

//将Cookie值写入客户端
Response.Cookies.Add(objNewCookie);

//从数据库获取该登录名所对应的员工编号
int iEmpID=0;
DBUtils.Login.GetEmployeeID(strLoginName,ref iEmpID);

//在会话间保存该编号信息
Session["EmployeeID"]=iEmpID;

string sID=iEmpID.ToString();
if(FormsAuthentication.GetRedirectUrl(sID,false).IndexOf("default.aspx")==-1)
{
//如果用户试图访问其他网页,则跳转到该网页
FormsAuthentication.RedirectFromLoginPage(sID,false);
}
else
{
//如果用户访问的是登陆网页,则跳转到"显示员工信息"网页
FormsAuthentication.SetAuthCookie(sID,false);
Response.Redirect("EmployeeInfo/ShowEmpInfo.aspx");
}

}
}
else
{
//用户名跟密码为空
lblInfo.Text="用户名跟密码不能为空,请重试!";
}
}
#endregion

这个数据用的是SQL2000 当中有些是为了存储Cookie而写的,可以不用官管. 还有一些获取正确密码的方法我封装到了类里面,但说明这个问题可以不用那些的.你可以参考参考的!


------------------不为别的,就为你,我的理想!-----------------
2007-09-20 16:15
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
登陆前先把所有的Session清空一下.

飘过~~
2007-09-20 17:57
垃圾的沉默
Rank: 1
等 级:新手上路
威 望:2
帖 子:511
专家分:0
注 册:2007-6-25
收藏
得分:0 
我有点明白了..算法应该是这样::
先把验证密码的时候应该出现的错误尽可能的表示出来.如果正确再执行验证码..如果验证码正确就转到应该转的页面上去..我上面写的只是第一次登陆验证密码..如果是第二次登陆的话就只是验证一下session["userID"]是不是空...那第一次登陆的时候session["userID"]对像存在.那就不会再验证密码.只要验证码对的话就直接转到应该页面上去..

人们笑我太疯癫...我笑人们太正经
2007-09-21 00:21
快速回复:[求助]为什么直接跳过查询
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042277 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved