تغییر رمز عبور برای کاربر
باسلام
من یه فرم دارم که کاربر بتونه رمز عبور خودشو تغییر بده توی پایگاه داده ام هم جدولم با نامkarbarهست و دارای فیلدهایkidکهouto incrimentهستش وkname,kfamily,username,passwordمیباشداگ فیلدهایkid,username,passwordرو کلیداصلی بگیریم موقع اجرا هرچندتا کاربر که رمز عبورشون یکی باشه رو هم یوزر و هم پسوردشونو برابر با همون کاربری که وارد شدیم میکنه واگه username,passwordکلیداصلی کنیم پیغام میده که نباید مقدار تکراری وارد کنیم
privatevoid btnChange_Click(object sender, EventArgs e)
{
SqlConnection connection = newSqlConnection("Data Source=.;Initial Catalog=taediepezeshki;Integrated Security=True");
SqlCommand command = newSqlCommand();
command.Connection = connection;
bool isLogin = false;
connection.Open();
command.CommandText =("Select username,password From karbar ");
SqlDataReader dataReader = command.ExecuteReader();
string username = string.Empty;
string password = string.Empty;
while (dataReader.Read())
{
username = dataReader.GetString(0).ToString();
password = dataReader.GetString(1).ToString();
if (password.Trim() == txtPass.Text.Trim())
{
isLogin = true;
break;
}
}
connection.Close();
if (isLogin == true && txtConPass.Text.Trim() == txtNewPass.Text.Trim()&& username==textBox1.Text)
{
command.Connection = connection;
connection.Open();
command = newSqlCommand("Update karbar SET username=N'"+username.Trim()+"' , [password]=N'"+txtNewPass.Text.Trim()+"' Where [password]=N'"+txtPass.Text+"'");
command.Connection = connection;
command.ExecuteNonQuery();
MessageBox.Show("تغییرات", "رمزتغییریافت ", MessageBoxButtons.OK);
connection.Close();
this.Close();
}
if (isLogin == false)
MessageBox.Show("خطا","رمز عبورصحیح نمیباشد ", MessageBoxButtons.OK, MessageBoxIcon.Error);
if (txtConPass.Text.Trim() != txtNewPass.Text.Trim())
{
MessageBox.Show("خطا","تکرار رمزعبورصحیح نمیباشد ", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
از مدیرسایت خواهش میکنم سوال منو پاک نکنه هروقت سوالی میپرسم ایشون لطف میکنن سوالو قبول نمیکنن}
نقل قول: تغییر رمز عبور برای کاربر
سلام.
1- قاعدتا نبايد يوزرنيم تكراري باشه. (ميتونه كليد اصلي باشه)
2- توي شرطت (Where) چرا پسورد رو چك ميكني؟(بايد يوزرنيم رو چك كني.)
3- چرا يوزرنيم رو توي دستور آپديت ست ميكني. مگه ميخواي كاربر بتونه يوزرنيم رو هم تغيير بده؟؟!!!
نقل قول: تغییر رمز عبور برای کاربر
شما بهتره همون username رو به عنوان كليد اصلي تعريف كني و قبل از ويرايش يا اضافه كردن كاربر يك Query از ديتابيس بگيري.مثل زير :
.
.
.
Adapter.SelectCommand.CommadText="SELECT COUNT(username) WHERE username='sds1920'";
int Count=(int)Adapter.SelectCommand.ExecuteScaler();
if(Count<1)
}
.
.
.
{
نقل قول: تغییر رمز عبور برای کاربر
این کد پایین : طبق چیزی که دوستمون هم گفتن ایراد نداره ولی بهترش اینه که فقط اجازه بدی پسوورد عوض بشه و اون رو هم کلید اصلی نکنی و فقط مقدار یوزر نیم رو کلید اصلی بکنی
command = newSqlCommand("Update karbar SET username=N'"+username.Trim()+"' , [password]=N'"+txtNewPass.Text.Trim()+"' Where [password]=N'"+txtPass.Text+"'");
نقل قول: تغییر رمز عبور برای کاربر
اينم نظريه.ولي من فكر مي كنم بايد به كاربر آزادي عمل داده بشه.
نقل قول: تغییر رمز عبور برای کاربر
اخه میدونی دوست عزیز اگر به کاربر آزادی عمل داده بشه و بیاد مقدار یوزر نیم رو پسوورد یکی دیگه رو بده به خودش و هر دو کاربر با یک یوزر و پسس وارد برنامه بشن یک فاجعه رخ میده تو برنامه نویسی
البته نظر شخصی منه
نقل قول: تغییر رمز عبور برای کاربر
شما درست مي گي.ولي مثل اينكه جواب منو خوب نخونده بودي.
من گفتم فيلد username رو كليد اصلي بگيره و قبل از add يا edit يك query از ديتابيس بگيره تا مطمئن بشه كه اين usrename قبلا استفاده نشده باشه.در اينصورت تداخلي رو كه شما مي گي به وجود نمياد.
نقل قول: تغییر رمز عبور برای کاربر
منم دقیقا با sds1920 موافقم. یعنی شما اگر فقط usernameرو به عنوان کلید در نظر بگیری و قبل از ثبت هرگونه تغییری (از جمله کاربرجدید) در سیستم بیایید چک کنید که آیا این username فعلی در سیستم وجود دارد یا نه که اگر وجود داشت اجازه ی ثبت اون username رو به کاربر نمی دهید.