C#编程 忘记密码功能的实现方法

本文将给出通过C# 编程 来实现 忘记密码 功能的方法和代码,大家可以参照本文的思路自己写出这个功能代码……
  1. int result  = user.GetBackPassword(LoginName.Text.Trim(), Question.Text.Trim(), 
  2.     Answer.Text.Trim(), Email.Text); 
  3.    if (result == 1) 
  4.    { 
  5.     Message.Text = "您的密码已发送,请到邮箱查收"
  6.     //user.ChangePassword( 
  7.    } 
  8.    else 
  9.    { 
  10.     Message.Text = "您的输入信息有误!"
  11.    } 
  12.   
  13. public int GetBackPassword(string userName, string question, string answer, string email) 
  14.   { 
  15.    object m_DBNull = Convert.DBNull; 
  16.    //获得新的随机密码 
  17.    string newPassword = MakePassword(6); 
  18.    //定义存储过程参数  
  19.    SqlParameter[] para = { 
  20.            new SqlParameter("@userName", userName), 
  21.            new SqlParameter("@question", question), 
  22.            new SqlParameter("@answer", answer), 
  23.            new SqlParameter("@newPassword", newPassword), 
  24.            new SqlParameter("@result", SqlDbType.Int, 8, ParameterDirection.Output, 
  25.            true, 0, 0, "", DataRowVersion.Default, m_DBNull) 
  26.           }; 
  27.     
  28.    //执行存储过程 
  29.    try 
  30.    { 
  31.     DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure, 
  32.      "GetBackPwd", para); 
  33.    } 
  34.    catch 
  35.    { 
  36.     throw new Exception("邮件无法发送!"); 
  37.    } 
  38.    //获得输出参数的值 
  39.    int result = Convert.ToInt32(para[4].Value); 
  40.    //如果密码保护资料填写正确 
  41.    if (result == 1) 
  42.    { 
  43.     //从Web.config获取发信人地址、邮件标题、邮件用户名和密码以及SmtpServer 
  44.     string sender = System.Configuration.ConfigurationSettings.AppSettings["mainSender"]; 
  45.     string title = System.Configuration.ConfigurationSettings.AppSettings["mailTitle"]; 
  46.     string mailUser =  System.Configuration.ConfigurationSettings.AppSettings["mailUser"]; 
  47.     string mailPwd = System.Configuration.ConfigurationSettings.AppSettings["mailPwd"]; 
  48.     string smtpServer = System.Configuration.ConfigurationSettings.AppSettings["mailSmtpServer"]; 
  49.     //发信 
  50.     try 
  51.     { 
  52.      Mail.CDOsendmail(sender, email, title, "您在eshop的密码已找回,新密码为"+newPassword  
  53.       , mailUser, mailPwd, smtpServer); 
  54.     } 
  55.     catch(Exception ex) 
  56.     { 
  57.      throw new Exception(ex.Message); 
  58.     } 
  59.    } 
  60.    return result; 
  61.   }  
  62.   
  63. //随机生成密码 
  64.   private static string MakePassword(int pwdLength) 
  65.   { 
  66.    //声明要返回的字符串 
  67.    string tmpstr = ""
  68.    //密码中包含的字符数组 
  69.    string pwdchars="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  70.    //数组索引随机数 
  71.    int iRandNum; 
  72.    //随机数生成器 
  73.    Random rnd = new Random(); 
  74.    for(int i=0;i<pwdLength;i++) 
  75.    { 
  76.     //Random类的Next方法生成一个指定范围的随机数 
  77.     iRandNum = rnd.Next(pwdchars.Length); 
  78.     //tmpstr随机添加一个字符 
  79.     tmpstr += pwdchars[iRandNum]; 
  80.    } 
  81.    return tmpstr; 
  82.   } 
  83.   
  84. ALTER  PROCEDURE GetBackPwd 
  85. @question nvarchar(50), 
  86. @answer nvarchar(50), 
  87. @userName nvarchar(50), 
  88. @newPassword nvarchar(50), 
  89. @result int output 
  90. AS 
  91.  if exists (SELECT * FROM USERINFO WHERE USERNAME=@USERNAME AND QUESTION=@QUESTION 
  92.     AND ANSWER=@ANSWER) 
  93.  BEGIN 
  94.   SET @RESULT = 1 
  95.   UPDATE USERINFO 
  96.   SET USERPWD = @newPassword 
  97.   WHERE userName = @userName 
  98.  END 
  99.  ELSE 
  100.  BEGIN 
  101.   SET @RESULT = -1 
  102.  END 
  103. GO 
  104. SET QUOTED_IDENTIFIER OFF  
  105. GO 
  106. SET ANSI_NULLS ON  
  107. GO 
  108.  <add key="mailUser" value="" /> 
  109.     <add key="mailPwd" value="" /> 
  110.     <add key="mailSmtpServer" value="" /> 
  111.     <add key="mailSender" value="" /> 
  112.  <add key="mailTitle" value="" />
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值