C#編程忘記密碼功能的實(shí)現(xiàn)方法

字號(hào):

本文將給出通過C#編程來實(shí)現(xiàn) 忘記密碼 功能的方法和代碼,大家可以參照本文的思路自己寫出這個(gè)功能代碼……
    以下是引用片段:
    int result = user.GetBackPassword(LoginName.Text.Trim(), Question.Text.Trim(),
     Answer.Text.Trim(), Email.Text);
     if (result == 1)
     {
     Message.Text = "您的密碼已發(fā)送,請(qǐng)到郵箱查收";
     //user.ChangePassword(
     }
     else
     {
     Message.Text = "您的輸入信息有誤!";
     }
    public int GetBackPassword(string userName, string question, string answer, string email)
     {
     object m_DBNull = Convert.DBNull;
     //獲得新的隨機(jī)密碼
     string newPassword = MakePassword(6);
     //定義存儲(chǔ)過程參數(shù)
     SqlParameter[] para = {
     new SqlParameter("@userName", userName),
     new SqlParameter("@question", question),
     new SqlParameter("@answer", answer),
     new SqlParameter("@newPassword", newPassword),
     new SqlParameter("@result", SqlDbType.Int, 8, ParameterDirection.Output,
     true, 0, 0, "", DataRowVersion.Default, m_DBNull)
     };
     //執(zhí)行存儲(chǔ)過程
     try
     {
     DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure,
     "GetBackPwd", para);
     }
     catch
     {
     throw new Exception("郵件無法發(fā)送!");
     }
     //獲得輸出參數(shù)的值
     int result = Convert.ToInt32(para[4].Value);
     //如果密碼保護(hù)資料填寫正確
     if (result == 1)
     {
     //從Web.config獲取發(fā)信人地址、郵件標(biāo)題、郵件用戶名和密碼以及SmtpServer
     string sender = System.Configuration.ConfigurationSettings.AppSettings["mainSender"];
     string title = System.Configuration.ConfigurationSettings.AppSettings["mailTitle"];
     string mailUser = System.Configuration.ConfigurationSettings.AppSettings["mailUser"];
     string mailPwd = System.Configuration.ConfigurationSettings.AppSettings["mailPwd"];
     string smtpServer = System.Configuration.ConfigurationSettings.AppSettings["mailSmtpServer"];
     //發(fā)信
     try
     {
     Mail.CDOsendmail(sender, email, title, "您在eshop的密碼已找回,新密碼為"+newPassword
     , mailUser, mailPwd, smtpServer);
     }
     catch(Exception ex)
     {
     throw new Exception(ex.Message);
     }
     }
     return result;
     }
    //隨機(jī)生成密碼
     private static string MakePassword(int pwdLength)
     {
     //聲明要返回的字符串
     string tmpstr = "";
     //密碼中包含的字符數(shù)組
     string pwdchars="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     //數(shù)組索引隨機(jī)數(shù)
     int iRandNum;
     //隨機(jī)數(shù)生成器
     Random rnd = new Random();
     for(int i=0;i     {
     //Random類的Next方法生成一個(gè)指定范圍的隨機(jī)數(shù)
     iRandNum = rnd.Next(pwdchars.Length);
     //tmpstr隨機(jī)添加一個(gè)字符
     tmpstr += pwdchars[iRandNum];
     }
     return tmpstr;
     }
    ALTER PROCEDURE GetBackPwd
    @question nvarchar(50),
    @answer nvarchar(50),
    @userName nvarchar(50),
    @newPassword nvarchar(50),
    @result int output
    AS
     if exists (SELECT * FROM USERINFO WHERE USERNAME=@USERNAME AND QUESTION=@QUESTION
     AND ANSWER=@ANSWER)
     BEGIN
     SET @RESULT = 1
     UPDATE USERINFO
     SET USERPWD = @newPassword
     WHERE userName = @userName
     END
     ELSE
     BEGIN
     SET @RESULT = -1
     END
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO