<asp:RequiredFieldValidator id="RequiredFieldValidator4" runat="server" ControlToValidate="txtEmail" Display="Dynamic" Font-Size="8pt"> <br />* Bạn chưa nhập email</asp:RequiredFieldValidator> <asp:RegularExpressionValidator id="RegularExpressionValidator2" runat="server" ControlToValidate="txtEmail" Display="Dynamic" Font-Size="8pt" SetFocusOnError="True" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"> <br>*Email chưa hợp lệ </asp:RegularExpressionValidator> <asp:TextBox id="txtEmail" runat="server" CssClass="textForm" Width="282px" /> <asp:Button id="btnGuiYeuCau" runat="server" OnClick="btnGuiYeuCau_Click" Text="Gửi yêu cầu" />Form mình xây dựng như hình minh họa sau
public string CreateLostPassword(int PasswordLength) { string _allowedChars = "abcdefghijk0123456789mnopqrstuvwxyz"; Random randNum = new Random(); char[] chars = new char[PasswordLength]; int allowedCharCount = _allowedChars.Length; for (int i = 0; i < PasswordLength; i++) { chars[i] = _allowedChars[(int)((_allowedChars.Length) * randNum.NextDouble())]; } return new string(chars); } public string MaHoaMatKhau(string password) { UnicodeEncoding encoding = new UnicodeEncoding(); Byte[] hashBytes = encoding.GetBytes(password); // Compute the SHA-1 hash SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); Byte[] cryptPassword = sha1.ComputeHash(hashBytes); return BitConverter.ToString(cryptPassword); }Tiếp theo bạn cần viết các hàm để đổi mật khẩu cho thành viên và hàm lấy TenDangNhap qua Email (Bạn phải đảm bảo Email là duy nhất - Có thể tạo bằng khóa Uniquy).
private void CapNhatMatKhau(string TenDangNhap, string MatKhau) { string connectString = @"Server =.\SQL2005;Initial Catalog=DataBaseNamr;User ID=sa;Password=******"; string queryUpdate = @"UPDATE TB_ThanhVien SET MatKhau="+MatKhau+" WHERE TenDangNhap="+TenDangNhap; SqlConnection conn = new SqlConnection(connectString); try { conn.Open(); // Thực thi cƒu lệnh Update SqlCommand cmdInsert = new SqlCommand(queryUpdate, conn); cmdInsert.ExecuteNonQuery(); } catch (SqlException ex) { Console.WriteLine("Error: " + ex); } finally { conn.Close(); } } private DataTable LayTenDangNhap(string Email) { DataTable dtbTmp = new DataTable(); string connString = @"Server =.\SQL2005;Initial Catalog=DataBaseNamr;User ID=sa;Password=******"; string sql = @"SELECT TenDangNhap FROM TB_ThanhVien WHERE Email=" + Email; SqlConnection conn = new SqlConnection(connString); try { // Mở kết nối conn.Open(); SqlDataAdapter da = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); da.Fill(ds, "DangNhap"); dtbTmp = ds.Tables[0]; } catch (Exception e) { Console.WriteLine(e.Message); } finally { // Đóng kết nối conn.Close(); } return dtbTmp; }Tiếp theo mình cần viết các hàm lấy nội dung và thực hiện trong sự kiện của nut "Gửi yêu câu"
private string NoiDungMail() { string NoiDung = ""; DataTable dtb = LayTenDangNhap(txtEmail.Text + ""); string MatKhauMoi = "", TenDangNhap = ""; if (dtb.Rows.Count > 0) { NoiDung = "Đây là Mail gửi đến từ website của Yourwebsite..<br>"; MatKhauMoi = CreateLostPassword(7); NoiDung += "Mật khẩu mới của bạn là: " + MatKhauMoi; TenDangNhap = dtb.Rows[0]["TenDangNhap"]+""); DoiMatKhau(TenDangNhap, MaHoaMatKhau(MatKhauMoi)); NoiDung += "<br>Sau khi đăng nhập bạn nˆn đổi lại mật khẩu để tiện cho việc đăng nhập lần tiếp theo"; NoiDung += "<br><br><hr>Vui lòng không trả lời Mail này!"; } return NoiDung; } protected void btnGuiYeuCau_Click(object sender, EventArgs e) { MailMessage objEmail = new MailMessage(); DataTable dtb = LayTenDangNhap(txtEmail.Text + ""); if (dtb.Rows.Count > 0) { objEmail.To = txtEmail.Text + ""; objEmail.From = "hungbv@mt.gov.vn"; objEmail.Subject = "Thông tin về mật khẩu của bạn"; objEmail.BodyEncoding = Encoding.UTF8; objEmail.Body = NoiDungMail(); objEmail.Priority = MailPriority.High; objEmail.BodyFormat = MailFormat.Html; try { SmtpMail.Send(objEmail); ScriptManager.RegisterStartupScript(this, this.GetType(), "redirectMe", "alert('Chúng tôi đã gửi mật khẩu cho bạn.\\n\\n Vui lòng check mail để lấy lại mật khẩu!');location.href='LoginInfo.aspx';", true); } catch (Exception exc) { Response.Write("Send failure: " + exc.ToString()); } } else { ScriptManager.RegisterStartupScript(this, this.GetType(), "redirectMe", "alert('Email của bạn chưa đăng ký!');", true); } }Trong hàm trên bạn thấy mình sử dụng hàm tạo mật khẩu CreateLostPassword(7) sẽ tạo cho Thành viên một mật khẩu mới có độ dài là 7 ký tự và các ký tự này được lấy ngấu nhiên trong dãy chữ và số.
© Chia sẻ 2013 . Powered by Blogger . Blogger templates . New Blogger Templates