-
c#编程 忘记密码功能的实现方法
本文将给出通过C#编程来实现 忘记密码 功能的方法和代码,大家可以参照本文的思路自己写出这个功能代码……
以下是引用片段:
intresult =user.GetBackPassword(LoginName.Text.Trim(),Question.Text.Trim(),
Answer.Text.Trim(),Email.Text);
if(result==1)
{
Message.Text="您的密码已发送,请到邮箱查收";
//user.ChangePassword(
}
else
{
Message.Text="您的输入信息有误!";
}
publicintGetBackPassword(stringuserName,stringquestion,stringanswer,stringemail)
{
objectm_DBNull=Convert.DBNull;
//获得新的随机密码
stringnewPassword=MakePassword(6);
//定义存储过程参数
SqlParameter[]para={
newSqlParameter("@userName",userName),
newSqlParameter("@question",question),
newSqlParameter("@answer",answer),
newSqlParameter("@newPassword",newPassword),
newSqlParameter("@result",SqlDbType.Int,8,ParameterDirection.Output,
true,0,0,"",DataRowVersion.Default,m_DBNull)
};
//执行存储过程
try
{
DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING,CommandType.StoredProcedure,
"GetBackPwd",para);
}
catch
{
thrownewException("邮件无法发送!");
}
//获得输出参数的值
intresult=Convert.ToInt32(para[4].Value);
//如果密码保护资料填写正确
if(result==1)
{
//从Web.config获取发信人地址、邮件标题、邮件用户名和密码以及SmtpServer
stringsender=System.Configuration.ConfigurationSettings.AppSettings["mainSender"];
stringtitle=System.Configuration.ConfigurationSettings.AppSettings["mailTitle"];
stringmailUser= System.Configuration.ConfigurationSettings.AppSettings["mailUser"];
stringmailPwd=System.Configuration.ConfigurationSettings.AppSettings["mailPwd"];
stringsmtpServer=System.Configuration.ConfigurationSettings.AppSettings["mailSmtpServer"];
//发信
try
{
Mail.CDOsendmail(sender,email,title,"您在eshop的密码已找回,新密码为"+newPassword
,mailUser,mailPwd,smtpServer);
}
catch(Exceptionex)
{
thrownewException(ex.Message);
}
}
returnresult;
}
//随机生成密码
privatestaticstringMakePassword(intpwdLength)
{
//声明要返回的字符串
stringtmpstr="";
//密码中包含的字符数组
stringpwdchars="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//数组索引随机数
intiRandNum;
//随机数生成器
Randomrnd=newRandom();
for(inti=0;i<pwdLength;i++)
{
//Random类的Next方法生成一个指定范围的随机数
iRandNum=rnd.Next(pwdchars.Length);
//tmpstr随机添加一个字符
tmpstr+=pwdchars[iRandNum];
}
returntmpstr;
}
ALTER PROCEDUREGetBackPwd
@questionnvarchar(50),
@answernvarchar(50),
@userNamenvarchar(50),
@newPasswordnvarchar(50),
@resultintoutput
AS
ifexists(SELECT*FROMUSERINFOWHEREUSERNAME=@USERNAMEANDQUESTION=@QUESTION
ANDANSWER=@ANSWER)
BEGIN
SET@RESULT=1
UPDATEUSERINFO
SETUSERPWD=@newPassword
WHEREuserName=@userName
END
ELSE
BEGIN
SET@RESULT=-1
END
GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO
<addkey="mailUser"value=""/>
<addkey="mailPwd"value=""/>
<addkey="mailSmtpServer"value=""/>
<addkey="mailSender"value=""/>
<addkey="mailTitle"value=""/>