Mohammad_dn
شنبه 21 دی 1392, 18:37 عصر
پست ویرایش شد
سورس ضمیمه شد
با سلام....دیدم برخی از دوستان دنبال ساخت صفحه ی ثبت نام ..ورود به سایت و ... هستن گفتم آموزش ساختشو اینجا بزارم
اول از ثبت نام شروع میکنم
ثبت نام در سایت:
برای این کار ابتدا شما باید یه بانک بسازید...بعد از ساخت بانک Table مربوط به اون رو میسازیم...
اطلاعات داخل این table ..معمولا
UserName,Password,Email هست.....البته فقط همینا کافی نیست
من کد ساخت تیبل رو میزارم و از روی همین میریم جلو:
CREATE TABLE [dbo].[UserData] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[UserName] NVARCHAR (MAX) NOT NULL,
[Password] NVARCHAR (MAX) NOT NULL,
[Email] NVARCHAR (MAX) NOT NULL,
[Name] NVARCHAR (MAX) NOT NULL,
[Family] NVARCHAR (MAX) NOT NULL,
[RegistryUserDate] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
فیلد های(id,UserName,Password,Email,Name,Family,Regi stryUserDate)
ابتدا 5 textbox روی صفحه مون اظافه میکنم...
همچنین فضا های نام :(قسمت ویرایش شده)
using System.Security.Cryptography;
برای رمز کردن پسورد
using System.Data.SqlClient;
برای کار با پایگاه داده
using System.Web.Configuration;
برای کار با Web.config و گرفتن ConnectionString از اون
بعد انجام این کارها...باید اطلاعاتی رو که کاربر وارد کرده رو در بانک ثبت کنیم...و در واقع کاربر ثبت نام شه
این کار دقیقا همون کار با پایگاه داده ی sql هست(فقط یه کم فرق میکه)
اول از همه باید برسی کنیم که چنین نام کاربری ای قبلا ثبت نشده باشه:
ابتدا یه متغیر تعریف میکنیم و ConnectionString بانک رو توش ذخیره میکنیم(من اینجا رشته ی اتصالی رو توی web.config ذخیره کردم)
string strConnection = WebConfigurationManager.ConnectionStrings["Site"].ToString();
2:یک کانکشن به وصیله ی این رشته(ConnectionString) میسازیم:
SqlConnection con = new SqlConnection(strConnection);
3:یک متغیر تعریف میکنیم و دستور sql را جهت واکشی اطلاعات و فهمیدن این که آیا نام کاربری وجود دارد یا نه ایجاد میکنیم
string strCmd = "SELECT UserName FROM UserData WHERE UserName=@UserName";
4:حالا باید یک متغیر از نوع sqlCommand برای اجرای دستورات sql مون ایجاد کنیم:
SqlCommand cmd = new SqlCommand(strCmd, con);
5:برای این که اطلاعات رو واکشی کنیم نیاز به یه متغیر از نوع sqlDataReader داریم:
SqlDataReader reader;
6:اگه دقت کرده باشید در مرحله ی 3 من پارامتری برای دستور sql تعریف کردم(@UserName)
حالا باید پارامتر رو مقداردهی کنیم:
cmd.Parameters.AddWithValue("@UserName", TextBox1.Text);
توجه:TextBox1 همون نام کاربری ای هست که کاربر وارد کرده
7:حالا به بانک وصل میشیم و اطلاعات رو واکشی میکنیم:
con.Open();
reader = cmd.ExecuteReader();
8:اگه رکوردی وجود داشته باشه یعنی که کسی با این نام کاربری قبلا ثبت نام کرده:
if (reader.Read())
{
Fakhravary.Message.MessageBox("این نام کاربری قبلا ثبت شده است", this);
con.Close();
return;
}
در اینجا برای نمایش پیغام به کاربر من از کامپوننتی که آقای "فخراوری" نوشتن ایتفاده کردم
در صورتی که رکوردی وجود داشته باشه پیغامی به کاربر نشون میده و کار دیگه ادامه پیدا نمیکنه
در صورتی که نام کاربری قبلا ثبت نشده باشه کار ادامه پیدا میکنه
10:حالا باید یه بار دیگه به بانک وصل شیم و اطلاعات رو ذخیره کنیم:
ابتدا یک دستور sql جدید ایجاد میکنیم...
strCmd = "INSERT INTO UserData (UserName, Password,Email, Name, Family, RegistryUserDate";
strCmd += ") VALUES(@UserName, @Password,@Email, @Name, @Family, @RegistryUserDate";
strCmd += ")";
cmd = new SqlCommand(strCmd, con);
11:حالا باید یکی یکی پارامتر ها رو مقدار دهی کنیم:(قسمت ویرایش شده)
string str = TextBox2.Text;
byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(str);
SHA256Managed sha = new SHA256Managed();
byte[] hashValue = sha.ComputeHash(data);
string strp = "";
foreach (byte strb in hashValue)
{
strp += strb.ToString();
}
cmd.Parameters.AddWithValue("@UserName", TextBox1.Text);
cmd.Parameters.AddWithValue("@Password", strp);
cmd.Parameters.AddWithValue("@Email", TextBox5.Text);
cmd.Parameters.AddWithValue("@Name", TextBox3.Text);
cmd.Parameters.AddWithValue("@Family", TextBox4.Text);
cmd.Parameters.AddWithValue("@RegistryUserDate", DateTime.Now.Date.ToString());
نکته ای که در اینجا خیلی مهمه اینه که باید پسورد وارد شده را رمز کرده و بعد در بانک ذخیره کنیم:(قسمت ویرایش شده)
string str = TextBox2.Text;
byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(str);
SHA256Managed sha = new SHA256Managed();
byte[] hashValue = sha.ComputeHash(data);
string strp = "";
foreach (byte strb in hashValue)
{
strp += strb.ToString();
}
دستور بالا عملیات رمز کردن رو انجام میده
12 در نهایت اطلاعات رو در بانک ذخیره میکنیم
upp = cmd.ExecuteNonQuery();
if (upp > 0)
{
Label1.Text = "ثبت نام با موفقیت انجام شد";
}
در اینجا یه متغیر از نوع int داریم اگه این متغیر بزرگ تر از 0 باشه(باید 1 باشه چون یک رکورد داره ذخیره میشه)
یعنی رکورد به درستی ذخیره و در نتیجه ثبت نام انجام شده است
امیدوارم به دردتون خورده باشه اگه.....به دردتون خورد بگید تا قسمت Login رو هم بزارم:لبخندساده::لبخندساده: :لبخندساده:
سورس ضمیمه شد
با سلام....دیدم برخی از دوستان دنبال ساخت صفحه ی ثبت نام ..ورود به سایت و ... هستن گفتم آموزش ساختشو اینجا بزارم
اول از ثبت نام شروع میکنم
ثبت نام در سایت:
برای این کار ابتدا شما باید یه بانک بسازید...بعد از ساخت بانک Table مربوط به اون رو میسازیم...
اطلاعات داخل این table ..معمولا
UserName,Password,Email هست.....البته فقط همینا کافی نیست
من کد ساخت تیبل رو میزارم و از روی همین میریم جلو:
CREATE TABLE [dbo].[UserData] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[UserName] NVARCHAR (MAX) NOT NULL,
[Password] NVARCHAR (MAX) NOT NULL,
[Email] NVARCHAR (MAX) NOT NULL,
[Name] NVARCHAR (MAX) NOT NULL,
[Family] NVARCHAR (MAX) NOT NULL,
[RegistryUserDate] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
فیلد های(id,UserName,Password,Email,Name,Family,Regi stryUserDate)
ابتدا 5 textbox روی صفحه مون اظافه میکنم...
همچنین فضا های نام :(قسمت ویرایش شده)
using System.Security.Cryptography;
برای رمز کردن پسورد
using System.Data.SqlClient;
برای کار با پایگاه داده
using System.Web.Configuration;
برای کار با Web.config و گرفتن ConnectionString از اون
بعد انجام این کارها...باید اطلاعاتی رو که کاربر وارد کرده رو در بانک ثبت کنیم...و در واقع کاربر ثبت نام شه
این کار دقیقا همون کار با پایگاه داده ی sql هست(فقط یه کم فرق میکه)
اول از همه باید برسی کنیم که چنین نام کاربری ای قبلا ثبت نشده باشه:
ابتدا یه متغیر تعریف میکنیم و ConnectionString بانک رو توش ذخیره میکنیم(من اینجا رشته ی اتصالی رو توی web.config ذخیره کردم)
string strConnection = WebConfigurationManager.ConnectionStrings["Site"].ToString();
2:یک کانکشن به وصیله ی این رشته(ConnectionString) میسازیم:
SqlConnection con = new SqlConnection(strConnection);
3:یک متغیر تعریف میکنیم و دستور sql را جهت واکشی اطلاعات و فهمیدن این که آیا نام کاربری وجود دارد یا نه ایجاد میکنیم
string strCmd = "SELECT UserName FROM UserData WHERE UserName=@UserName";
4:حالا باید یک متغیر از نوع sqlCommand برای اجرای دستورات sql مون ایجاد کنیم:
SqlCommand cmd = new SqlCommand(strCmd, con);
5:برای این که اطلاعات رو واکشی کنیم نیاز به یه متغیر از نوع sqlDataReader داریم:
SqlDataReader reader;
6:اگه دقت کرده باشید در مرحله ی 3 من پارامتری برای دستور sql تعریف کردم(@UserName)
حالا باید پارامتر رو مقداردهی کنیم:
cmd.Parameters.AddWithValue("@UserName", TextBox1.Text);
توجه:TextBox1 همون نام کاربری ای هست که کاربر وارد کرده
7:حالا به بانک وصل میشیم و اطلاعات رو واکشی میکنیم:
con.Open();
reader = cmd.ExecuteReader();
8:اگه رکوردی وجود داشته باشه یعنی که کسی با این نام کاربری قبلا ثبت نام کرده:
if (reader.Read())
{
Fakhravary.Message.MessageBox("این نام کاربری قبلا ثبت شده است", this);
con.Close();
return;
}
در اینجا برای نمایش پیغام به کاربر من از کامپوننتی که آقای "فخراوری" نوشتن ایتفاده کردم
در صورتی که رکوردی وجود داشته باشه پیغامی به کاربر نشون میده و کار دیگه ادامه پیدا نمیکنه
در صورتی که نام کاربری قبلا ثبت نشده باشه کار ادامه پیدا میکنه
10:حالا باید یه بار دیگه به بانک وصل شیم و اطلاعات رو ذخیره کنیم:
ابتدا یک دستور sql جدید ایجاد میکنیم...
strCmd = "INSERT INTO UserData (UserName, Password,Email, Name, Family, RegistryUserDate";
strCmd += ") VALUES(@UserName, @Password,@Email, @Name, @Family, @RegistryUserDate";
strCmd += ")";
cmd = new SqlCommand(strCmd, con);
11:حالا باید یکی یکی پارامتر ها رو مقدار دهی کنیم:(قسمت ویرایش شده)
string str = TextBox2.Text;
byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(str);
SHA256Managed sha = new SHA256Managed();
byte[] hashValue = sha.ComputeHash(data);
string strp = "";
foreach (byte strb in hashValue)
{
strp += strb.ToString();
}
cmd.Parameters.AddWithValue("@UserName", TextBox1.Text);
cmd.Parameters.AddWithValue("@Password", strp);
cmd.Parameters.AddWithValue("@Email", TextBox5.Text);
cmd.Parameters.AddWithValue("@Name", TextBox3.Text);
cmd.Parameters.AddWithValue("@Family", TextBox4.Text);
cmd.Parameters.AddWithValue("@RegistryUserDate", DateTime.Now.Date.ToString());
نکته ای که در اینجا خیلی مهمه اینه که باید پسورد وارد شده را رمز کرده و بعد در بانک ذخیره کنیم:(قسمت ویرایش شده)
string str = TextBox2.Text;
byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(str);
SHA256Managed sha = new SHA256Managed();
byte[] hashValue = sha.ComputeHash(data);
string strp = "";
foreach (byte strb in hashValue)
{
strp += strb.ToString();
}
دستور بالا عملیات رمز کردن رو انجام میده
12 در نهایت اطلاعات رو در بانک ذخیره میکنیم
upp = cmd.ExecuteNonQuery();
if (upp > 0)
{
Label1.Text = "ثبت نام با موفقیت انجام شد";
}
در اینجا یه متغیر از نوع int داریم اگه این متغیر بزرگ تر از 0 باشه(باید 1 باشه چون یک رکورد داره ذخیره میشه)
یعنی رکورد به درستی ذخیره و در نتیجه ثبت نام انجام شده است
امیدوارم به دردتون خورده باشه اگه.....به دردتون خورد بگید تا قسمت Login رو هم بزارم:لبخندساده::لبخندساده: :لبخندساده: