这个例子很简单,主要是模拟一个过程,希望能给大家一个idea,也请大家多提建议.
下图中的界面是采用用户自定义控件来做的.
1)在该自定义控件进行PageLoad时,就去调用一个生成随机码的方法,用来保证每次的随机码都不一样:
public void rnd()
{
Random rnd=new Random();
int rndi=1000+rnd.Next(8999); //保证随机码不超过8999
Label1.Text=rndi.ToString();
Session["rnd"]=rndi; //用Session保存随机码
}
2)触发"登录"控件事件
--首先校验刚才生成的随机码是否正确
--通过MD5加密机制对用户密码进行加密
--执行UserRegCheck(sqlSQL)方法,对身份的合法进行校验;
--校验成功则转向后台界面,不成功,则给出提示;
3)用户身份校验类的实现:
public class UserRegDb
{
public UserRegDb()
{
//TODO: 在此处添加构造函数逻辑
//构造一个空的构造函数,用来实例化对象用的
}
public int UserRegCheck(string sqlSQL)
{
//取得数据库路径
string dbPath=System.Configuration.ConfigurationSettings.AppSettings["dbPath"];
//定义连接字符串
string ACconnStr="Provider=Microsoft.Jet.Oledb.4.0;Data Source="+HttpContext.Current.Server.MapPath(dbPath);
//实例化连接对像
OleDbConnection ACconn=new OleDbConnection(ACconnStr);
//实例化Command对像
OleDbCommand ACcomm=new OleDbCommand(UserRegSqlSelect,ACconn);
//打开数据库
ACconn.Open();
//执行SQL
int Ci=Convert.ToInt32(ACcomm.ExecuteScalar().ToString());
//关闭数据库
ACconn.Close();
return Ci;
}
}
4)新用户进行注册时
--判断两次输入的密码是否正确
--到数据表中去select一下,看是否有重复的用户存在
--用户不存在,在通过MD5进行加密操作,并插入新的记录
private void Button1_Click(object sender, System.EventArgs e)
{
//对判断输入的密码和输入的确认密码是否一致
if(CPassword.Text!=APassword.Text)//如果不一致
{
Response.Write("<script>alert('确认密码不正确!');</script>");
Response.Write("<script>history.go(-1);</script>");
}
else//一致
{
UserRegDb regdb=new UserRegDb();//引入(实例化)数据库操作类
//定义所需SQL语句
string UserRegSqlSelect="select count(*) from Admin where UserName='"+UserName.Text+"'";
//通过传值SQL语句到类里的函数,并执行,得到值
int Ci=regdb.UserRegSelect(UserRegSqlSelect);
if(Ci>0) //如果有返回值并>0说明,用户已存在
{
Response.Write("<script>alert('此用户名已被注册!');</script>");
Response.Write("<script>history.go(-1);</script>");
}
else//用户不存在,则执行以下注册用户(插入用户数据到表)操作
{
//用MD5加密密码
string APasswordT=FormsAuthentication.HashPasswordForStoringInConfigFile(APassword.Text,"MD5").ToLower().Substring(8,16);
//定义所需SQL
string UserRegSql="insert into Admin (UserName,APassword)values('"+UserName.Text+"','"+APasswordT+"')";
//通过传值SQL语句到类里的函数,并执行,得到值
int i=regdb.UserReg(UserRegSql);
if(i==1)//如果有返回值并>0说明插入数据操作成功
{
Response.Write("<script>alert('用户注册成功!');</script>");
}
else
{
Response.Write("<script>alert('用户注册失败!');</script>");
}
}
}
}
5)基本的思路就是这样的,请大家多提宝贵意见.
登录的图片如下: