PDA

View Full Version : سوال: درست کردن فرم login



nasime_shomal
سه شنبه 11 اسفند 1388, 16:15 عصر
سلام دوستان. میخوام یه صفحه login درست کنم. میخوام بدون ارور باشه واسه همین اول پیوزر و پس رو چک میکنم که قبلا وجود داشته یا نه که اینا رو تو sqlcommand انجام میدم. منتها میخوام وقتی یوزر یه نام کاربری رو که قبلا توی دیتا بیس نبوده رو وارد میکنه بهش بگه که یوزر یا پستون وجود نداره. مشکل من تو این قسمت دوممه. کدم رو براتون میزارم تا کمکم کنید. شرمنده فقط فوری میخوام.

private void buttonLogin_Click(object sender, EventArgs e)
{
string enc = encryptString(textBoxPassword.Text);
SqlDataReader sdrLogin = null;
SqlCommand scLogin = new SqlCommand("select * from TableUser where UserName=\'" + textBoxUserName.Text + "\' and Password=\'"+enc+"\'" , connFKLogin);
sdrLogin = scLogin.ExecuteReader();
sdrLogin.Read();
if (sdrLogin["UserType"].ToString() == "a")
{
FormModiriat fM = new FormModiriat();
fM.ShowDialog();
}
else if (sdrLogin["UserType"].ToString() == "b")
{
FormKarbar fK = new FormKarbar();
fK.ShowDialog();

}
else
{
MessageBox.Show("اين کاربر از لحاظ دسترسي تعريف نشده است. لطفا اين موضوع را با مدير درميان بگذاريد");
}

sdrLogin.Close();

}
که قسمتی که از حروفa,b استفاده کردم برای تشخیص نوع کار بر هست.:متفکر:

powerboy2988
سه شنبه 11 اسفند 1388, 16:25 عصر
چون داری با دیتابیس کار می کنی و خود دیتابیست ENGINE داره .. واسه کارایی برنامه شما یک SP درست کن و username و password رو بهش ارسال کن و نتیجه رو از SP بگیر و تو application چک کن... می تونی به عنوان مثال از این select استفاده کنی :



select count(*) from userdb where
username = username
and
password = password

nasime_shomal
سه شنبه 11 اسفند 1388, 18:06 عصر
دوست عزیز دستتون درد نکنه. راه حلی هم خودم پیدا کردم که ساده هست. اونم استفاده از کد زیر هست

sdrLogin.HasRows == true
کد کامل دکمه login رو اینجا میزارم تا همه استفاده کنند. اگر کسی راه بهتری سراغ داره با توضیح روش بیان کنه. ممنون از همکاریتون

private void buttonLogin_Click(object sender, EventArgs e)
{
string enc = encryptString(textBoxPassword.Text);
SqlDataReader sdrLogin = null;
SqlCommand scLogin = new SqlCommand("select * from TableUser where UserName=\'" + textBoxUserName.Text + "\' and Password=\'"+enc+"\'" , connFKLogin);
sdrLogin = scLogin.ExecuteReader();
sdrLogin.Read();
if (sdrLogin.HasRows == true)
{
if (sdrLogin["UserType"].ToString() == "a")
{
FormModiriat fM = new FormModiriat();
fM.ShowDialog();
}
else if (sdrLogin["UserType"].ToString() == "b")
{
FormKarbar fK = new FormKarbar();
fK.ShowDialog();

}
else
{
MessageBox.Show("اين کاربر از لحاظ دسترسي تعريف نشده است. لطفا اين موضوع را با مدير درميان بگذاريد");
}

}
else
MessageBox.Show("نام کاربری یا کلمه عبور شما اشتباه است");

sdrLogin.Close();

}

Vahid_moghaddam
سه شنبه 11 اسفند 1388, 20:37 عصر
select count(*) from userdb where
username = username
and
password = password

بهتره از این شکل چک کردن استفاده نشه تا خطر SQL Injection رو کاهش بده (کلن می گم)

soheil_1367
سه شنبه 11 اسفند 1388, 22:04 عصر
منم همین مشکل رو داشتم که این طوری حلش کرد ورداشتم تو دیتابیسم username رو pk گذاشتم بنابراین اگه username تکراری باشه پیغام میده که میتونی با یه try و catch کاملا مدیریتش بکنی

linux
سه شنبه 11 اسفند 1388, 22:51 عصر
یادم 1-2 سال پیش یک مطلب کامل تو این قسمت دوستان گذاشته بودند لطفا جستجو کنید

nasime_shomal
سه شنبه 11 اسفند 1388, 23:48 عصر
یادم 1-2 سال پیش یک مطلب کامل تو این قسمت دوستان گذاشته بودند لطفا جستجو کنید
چک کردم ولی چیزی پیدا نکردم واسه همین گذاشتم.

powerboy2988
چهارشنبه 06 مرداد 1389, 21:18 عصر
بهتره از این شکل چک کردن استفاده نشه تا خطر SQL Injection رو کاهش بده (کلن می گم)

آره حرفت کاملا درسته..
من به 2 دلیل گفتم که از SP استفاده کنه...
1- هم تو application و هم تو دیتابیس بتونه sql injection رو کنترل کنه
2- کلا کارهای مربوط به دیتا رو خود engine دیتابیس انجام بده که application کارایی بیشتری داشته باشه

violet87
پنج شنبه 07 مرداد 1389, 10:33 صبح
سلام


string enc = encryptString(textBox2.Text)

به اين خط ارور مي ده!!!

erorr:Error 1 The name 'encryptString' does not exist in the current

اَرژنگ
پنج شنبه 07 مرداد 1389, 16:14 عصر
چک کردم ولی چیزی پیدا نکردم واسه همین گذاشتم.
http://barnamenevis.org/forum/showthread.php?p=802364
http://barnamenevis.org/forum/showthread.php?t=88552