redis指令不区分大小写,但是出于规范考虑,应该使用大写
redis中存放的键是区分大小写的.
3.1C#中如何使用Redis来解决邮箱激活的实效性。
首先思考个问题:为什么要进行邮件激活?激活码该存到哪里?(大家先思考,我不直接说,这样通过下面的例子你会体会的更深。)
原因:用户在注册的时候,虽然正则表达式能检查邮箱的格式是否正确,但是正则检查不了邮箱是否可用,于是让用户进行激活,就能避免用户填写一个不可用的邮箱。
传统方法的代码实现:
1)数据库表的设计:
在用户注册的表中添加一个字段:IsActive用来判断激活的状态。
该表用来存放激活码。
代码实现:
BLL层代码:
/// <summary>
/// 2016-08-30
/// 注册的时候看看是否已经存在该用户
/// </summary>
/// <param></param>
/// <returns></returns>
public T_Users GetByUserName(string username)
{
T_UsersDAL userDal = new T_UsersDAL();
return userDal.GetByUserName(username);
}
/// <summary>
/// 注册的时候看看邮箱是否已经被注册
/// </summary>
/// <returns></returns>
public bool CheckEmailOnReg(string email)
{
T_UsersDAL userDal = new T_UsersDAL();
T_Users user= userDal.CheckEmailOnReg(email);
return user == null;
}
DAL层代码:
/// <summary>
/// 注册时候看看是否已经存在该用户名
/// </summary>
/// <param></param>
/// <returns></returns>
public T_Users GetByUserName(string username)
{
string sql = "select * from T_Users where UserName=@UserName";
DataTable dt = SqlHelper.ExecuteQuery(sql, new SqlParameter("@UserName", username));
T_Users userInfo = null;
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
userInfo = RowToUserInfoByDataRow(dr);
}
}
return userInfo;
}
/// <summary>
/// 注册的时候检查用户的邮箱是否被注册
/// </summary>
/// <param></param>
/// <returns></returns>
public T_Users CheckEmailOnReg(string email)
{
string sql = "select * from T_Users where Email=@Email ";
DataTable dt = SqlHelper.ExecuteQuery(sql, new SqlParameter("@Email",email));
T_Users userInfo = null;
if (dt.Rows.Count>0)
{
foreach (DataRow dr in dt.Rows)
{
userInfo=RowToUserInfoByDataRow(dr);
}
}
return userInfo;
}
UI层代码: