<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