PDA

View Full Version : مشکل در ساخت فرم بررسی کلمه عبور ورود به فرم



Jean Reno
دوشنبه 29 مهر 1387, 11:16 صبح
با سلام
من توی دیتابیسم یک یوزر و پسورد از نوی Nchar تعریف کردم
اما با این کدی که نوشتم همش پیغام میده که کلمه عبورم درست نیست
حتی اگه موجود باشه
اینم کد منه
مشکل کارم کجاست ؟




string sqlstring = "select * from User_Pass where (user=@user) And (Password=@password)";

SqlCommand Mycomm = new SqlCommand(sqlstring, sqlConnection1);

Mycomm.Parameters.AddWithValue("@user", textBox1.Text.Trim());
Mycomm.Parameters.AddWithValue("@password", textBox2.Text.Trim());


sqlConnection1.Open();
SqlDataReader SDR = Mycomm.ExecuteReader();

if (SDR.Read())
{
this.Close();
MyClass.Account = textBox1.Text;
}
else
{
MessageBox.Show("نام کاربری یا کلمه عبور شما نامعتبر است ", "پیغام سیستم ", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
SDR.Close();
sqlConnection1.Close();

m110_110
دوشنبه 29 مهر 1387, 12:55 عصر
با سلام
شما اگر یوزر و پستون فارسیه از nvarchar بهتره استفاده کنی به جای nchar

parsamiga
دوشنبه 29 مهر 1387, 12:55 عصر
خط اول رو به این صورت بنویس...



string sqlstring = "select * from User_Pass where user='" + textBox1.Text + "And Password='" + textBox2.Text + "'";

Jean Reno
سه شنبه 30 مهر 1387, 16:27 عصر
خط اول رو به این صورت بنویس...



string sqlstring = "select * from User_Pass where user='" + textBox1.Text + "And Password='" + textBox2.Text + "'";



ممنون از پاسخ هاتون ولی مشکل من حل نشد
در ضمن من کلمه عبور و نام کاربری رو بصورت پارامتری در داخل دستور SQL قرار دادم که فکر می کنم از نظر امنیتی نسبت به نوع توصیه شده توسط parsamiga بهتر باشه

کسی می تونه نسبت به کد کاملی که قرار دادم بگه چرا همش به من پیغام نامعتبر بودن کلمه عبور و نام کاربری رو می ده ؟

parsamiga
سه شنبه 30 مهر 1387, 16:38 عصر
سلام

دوست عزیز در مورد امنیت کار که سوال نکرده بودین ، در این صورت بهتره داده ها رو کد کنین..مگر نه روش اتصال و جستجو خیلی تاثیری در امنیت نداره

این کد رو تست کن

موفق باشی

majid325
سه شنبه 30 مهر 1387, 18:49 عصر
من كد زير رو استفاده ميكنم :

OleDbDataAdapter daole = new OleDbDataAdapter("SELECT * FROM Tb_User WHERE (((UserName)=@UserName) AND ((Password)=@Password));", CnnOl);
daole.SelectCommand.Parameters.AddWithValue("@UserName", textBoxXUserName.Text.Trim().ToString());
daole.SelectCommand.Parameters.AddWithValue("@Password", textBoxXPassword.Text.Trim().ToString());
DataTable dtUser = new DataTable();

//CnnOl.Open();
daole.Fill(dtUser);
//CnnOl.Close();

if (dtUser.Rows.Count > 0)
{
if (dtUser.Rows[0]["UserName"].ToString() == this.textBoxXUserName.Text.ToString())
{
frmData FormData = new frmData((Boolean)dtUser.Rows[0]["EDIT"]);
FormData.Show();
textBoxXPassword.Text = "";
textBoxXUserName.Text = "";
}
else
MessageBox.Show("نام كاربري يا رمز ورود اشتباه است", "خطا");
}
else
MessageBox.Show("نام كاربري يا رمز ورود اشتباه است", "خطا");
}

اينجوري به بزرگي و كوچكي كاركترها هم حساس ميشه
من هم يادمه ميخواستم از DataReader واسه سرعتش استفاده كنم ولي يه مشكلهاي برام پيش اومد ازش استفاده نكردم.

majid325
سه شنبه 30 مهر 1387, 18:53 عصر
البته راههاي رسيدن به خدا زياد هست

mskarimi
سه شنبه 30 مهر 1387, 19:42 عصر
من توی دیتابیسم یک یوزر و پسورد از نوی Nchar تعریف کردم
اما با این کدی که نوشتم همش پیغام میده که کلمه عبورم درست نیست

من خيلي کد دوستان رو نخوندم اما به نظر مياد استفاده از Nchar درست نيست چون در اين صورت مثلا اگر شما 50 کارکتر رو براي اين فيلد تعريف کردي و کاربر 10 تاشو وارد کرده 40 تاي ديگه به عنوان فاصله Space وارد مي شه و براي اينکه شخص بتونه مجددا پسورد رو وارد کنه بايد هر 50 تا کارکتر که 40 تاش فاصله است رو وارد کنه.

از nvarchar بهتره استفاده کنی به جای nchar
اين مطلب نظر کارشناسي و معقوليه.