ورود

View Full Version : فرستادن لینک فعال سازی به ایمیل



alibabaei2
چهارشنبه 04 آبان 1390, 18:19 عصر
با سلام
من در قسمت Login سایتم یک گزینه گذاشتم که اگر کاربر کلمه عبورش رو فراموش کرده بود ایمیلش رو وارد می کنه و اگر اون ایمیل در دیتابیس کاربر ها موجود بود کلمه عبور جدیدی به ایمیلش ارسال میشه
حالا می خوام در ایمیلی که برای کاربر ارسال میشه یک لینک فعال سازی موجود باشه که وقتی کاربر وارد ایمیلش شد و اون لینک رو کلیک کرد پسورد جدیدش در دیتابیس ذخیره بشه.
برای این کار باید چی کار کنم؟

fakhravari
چهارشنبه 04 آبان 1390, 18:51 عصر
با سلام
شما باید از یک جدول کمکی کمک بگیرید که کلمه رمز تولید کنه به مراحل زیر کار کنید
1 ) یک دیتابیس با فیلد های
name , id درست کن از نوع string , کلید id بزار
خوب الان میریم برا تشخیص هویت

کد فرم ارسال
public string email;
protected void Page_Load(object sender, EventArgs e)
{

}

private Int64 GreateUniqueNumbericID()
{

byte[] bytes = Guid.NewGuid().ToByteArray();

return BitConverter.ToInt64(bytes, 0);

}


protected void Button1_Click(object sender, EventArgs e)
{
try
{
string test = Membership.GetUser(TextBox1.Text.Trim()).ToString( );
string number = GreateUniqueNumbericID().ToString();

MembershipUser u;
u = Membership.GetUser(TextBox1.Text.Trim());

email = u.Email;


MShip m = new MShip();
m.id = number;
m.name = test;
m.CreateId();

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage("fakhr@a-velayat.com", email);
mail.Body = "با سلام درخواستی از شما به دست ما رسیده برای تغیر کلمه عبود برای تغیر رمز : http://www.fakhravary.somee.com/test/Reset_Password.aspx?idno=" + number + "";

mail.Subject = "Forget Password";
mail.BodyEncoding = Encoding.UTF8;
mail.IsBodyHtml = false;
mail.SubjectEncoding = Encoding.UTF8;

SmtpClient c = new SmtpClient();
c.Host = "mail.a-velayat.com";
c.Send(mail);

Label1.Text = "یک درخواست برای شما فرستاده شد ایمیل خود را چک کنید";
}
catch
{
Label1.Text = "در ارسال درخواست مشکلی بوجود آمده است";
}
}

__________
کلاس CreateId

public void CreateId()
{
try
{
SqlConnection con = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "insert into ChangePass (name, id) values (@name, @id) ";
con.Open();
cmd.Parameters.Add("@id", SqlDbType.NVarChar).Value = this.id;
cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = this.name;
cmd.ExecuteNonQuery();
con.Close();
}
catch
{

}
}

______________
وقتی کاربر کلیک کرد در ایمیل به مسیر restpas میره
شما در پیج resit به این شکل عمل کنید
public string idno;
public string name;


protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string idno = Request.QueryString["idno"];

MShip m = new MShip();
m.id = idno;
m.IdChek();

if (m.Vaziat == true)
{
name = m.name;
idno = m.id;

Label1.Text = m.name;

VerifyUsername();
Panel1.Visible = true;
}
else
{
Panel1.Visible = false;
Response.Write("مقدار نامشخص است");

}
}
}


public void VerifyUsername()
{
MembershipUser user = Membership.GetUser(name, false);

if (user == null)
{
Msg.Text = "The user name " + Server.HtmlEncode(name) + " was not found. Please check the value and reenter your user name.";


ResetPasswordButton.Enabled = false;
}
else
{

ResetPasswordButton.Enabled = true;
}
}


public void ResetPassword_OnClick(object sender, EventArgs args)
{
string newPassword = "";

try
{
newPassword = Membership.Provider.ResetPassword(Label1.Text, name);
}
catch (NotSupportedException e)
{
Msg.Text = "An error has occurred resetting your password: " + e.Message + "." +
"Please check your values and try again.";
}
catch (MembershipPasswordException e)
{
Msg.Text = "Invalid password answer. Please reenter the answer and try again.";
return;
}
catch (System.Configuration.Provider.ProviderException e)
{
Msg.Text = "The specified user name does not exist. Please check your value and try again.";
}

if (newPassword != "")
{
try
{
if (Request.QueryString["idno"] != null)
{
MShip p = new MShip();
p.id = Request.QueryString["idno"];
p.DeleteId();
Msg.Text = p.lasterror + "Password reset. Your new password is: " + Server.HtmlEncode(newPassword);
}
else
{
Msg.Text = "null";
}
}
catch
{
Msg.Text = "error";
}


}
else
{
Msg.Text = "Password reset failed. Please reenter your values and try again.";
}
}

____________________
کلاس چک کردن وضعیت IdChek

public DataTable IdChek()
{
SqlConnection con = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = " SELECT * FROM ChangePass where id=@id ";
cmd.Parameters.Add("@id", SqlDbType.NVarChar).Value = this.id;
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
Vaziat = true;
this.name = dt.Rows[0]["name"].ToString();
this.id = dt.Rows[0]["id"].ToString();
}
else
{
Vaziat = false;
}
con.Close();
return dt;
}

fakhravari
جمعه 06 آبان 1390, 15:22 عصر
با سلام
شما باید نام کاربری را بگیرید و در صورت درست بودن نام کاربری در خواستی ارسال میشود و اگر کاربر ایمیل خود رو چک کند یک لینک می بیند و اگر کلیک کند به پیجس میرود با مقدار querystring که در اون چیج اگر خواست رمز اون چنج می شود.

عنوان سوال باید فرستادن درخواست برای تغیر رمز به ایمیل
نه فرستادن لینک فعال سازی به ایمیل:چشمک:
چون دوستان تا متنی می بینند که ساده است زیاد میل به جواب دهی ندارند:بوس: