PDA

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



setareh2013
دوشنبه 31 تیر 1392, 00:04 صبح
سلام
یه جایی خوندم که برای ارسال ایمیل فعال سازی پس از ثبت نام کاربر در سایت باید مراحل زیر رو انجام داد :
1- داخل جدول کاربر یک فیلد با نام isactive اضافه کنید و هنگام ثبت نام اون رو برابر صفر قرار بدید
2- یک activiation page بسازید و لینک این صفحه رو برای کاربر ارسال کنید
3- activiation.aspx?ID=userid
4- وقتی کاربر با آن userid خاص داخل این صفحه میاد isactive رو برابر 1 قرار دهید .
حالا من اصلا نمی دونم این activiation.aspx رو چه طوری ایجاد کنم که برای هر کاربر این صفحه فرق داشته باشه .
لطفا در این مورد راهنماییم کنید .
با تشکر

sam166
دوشنبه 31 تیر 1392, 00:47 صبح
شما به این صورت عمل کنید که
زمانی که کاربر زوی لینک فعال سازی کلیک کرد نام کاربریش + یه عدد رندم برای ایمیلش ارسال بشه و هم در بانک اطلاعاتی ذخیره بشه

خب حالا کاربر یه لینکی شبیه لینک زیر براش ارسال شده

yoursite.com/ActiveUser.aspx?UserID=UserName&Code=f5asd4sad4DSD5

حالا زمانی که کاربر روی این لینک کلیک میکنه به صفحه ActiveUser.aspx میره

شما تو این صفحه مقدار UserID و Code رو میگیری و با بانک اطلاعاتیت مقایسه میکنه اگر درست بود فعالش میکنی

setareh2013
پنج شنبه 03 مرداد 1392, 23:19 عصر
نمیشه سورس یک قطعه سایت که این کارا رو انجام بده رو بهم بدید ؟

arashnaderi
جمعه 04 مرداد 1392, 01:35 صبح
نمیشه سورس یک قطعه سایت که این کارا رو انجام بده رو بهم بدید ؟

سلام یه نمونه از کدهای برنامه ی خودمو براتون میزارم. شما علاوه بر اینکه باید یک فیلد مربوط به وضعیت کاربر داشته باشید، یک فیلد دیگه هم به جدولتون اضافه کنید که وظیفه ی نگه داری رشته ی فعال سازی رو برعهده داره.شما از هر روشی که بخواین میتونید لینک فعال سازی رو تولید کنید.این یک روشش هست :

string sha1Pass = FormsAuthentication.HashPasswordForStoringInConfig File(txtPass.Text, "sha1");

string accountKey = (Guid.NewGuid().ToString().Replace("-", string.Empty) + sha1Pass).ToUpper();
string activeLink = "http://www.yoursite.com/ActiveUser.aspx?activeID=" + accountKey;


خب حالا باید متغیر accountKey رو توی جدولتون ذخیره کنید و رشته ی activeLink رو برای کاربر به ایمیلش ارسال کنید.
حالا توی صفحه ی ActiveUser.aspx :

protected void Page_Load(object sender, EventArgs e)
{
string key = Request.QueryString["activeID"];

if (!string.IsNullOrWhiteSpace(key))
{
try
{
SundeckEntities context = new SundeckEntities();
var query = (from uc in context.tblCustomers
where uc.ActiveCode == key
select uc).Single();
query.Status = "2";
context.SaveChanges();
}
catch
{
Response.RedirectPermanent("~/Default.aspx");
}
}
else
{
Response.RedirectPermanent("~/Default.aspx");
}
}

اگه Entity Framework کار نکردین دستور آپدیت یکم ناشناختس. در کل هدفش اینه بانک رو جستجو کنه و کلیدی که با همین نام هستش رو پیدا و فیلد وضعیت رو به روز کنه. در ضمن این نکته رو در نظر داشته باشید که اگه سایت شما به گونه ای هست که میتونه اکانت کاربر رو هم مسدود کنه (حالت سوم)، قبل از آپدیت باید ببینه که وضعیت رو 3 نباشه بعد آپدیت کنه
موفق باشید

setareh2013
شنبه 06 مهر 1392, 08:44 صبح
من این کد رو داخل ایمیل ارسال کردم
string activeLink = "http://www.yoursite.com/ActiveUser.aspx?activeID= (http://www.yoursite.com/ActiveUser.aspx?activeID=)" + accountKey;
وارد صفحه activeuser.aspx میشم و می تونم اطلاعات کاربر رو ببینم . مشکل اینه که accountkey داخل لینک مشخصه . نمیشه یه طوری این گزینه رو مخفی کرد.