PDA

View Full Version : فرم تغيير رمز change password



xxxsenatorxxx
پنج شنبه 06 بهمن 1390, 18:42 عصر
سلام

فرم تغيير رمز كاربر داراي 4 تكست باكس داره نام،رمز قديم،رمز جديد و تكرار رمز جديد و يك دكمه فقط يك سوال دارم كجاي اين كد كم و كسري داره يا غلطه؟


private void button1_Click(object sender, EventArgs e)
{

if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" )
{
MessageBox.Show("وارد کردن همه فيلدها الزامی است");
return;
}

if (textBox3.Text == textBox4.Text)
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "update user set [pass]=@pass where [user]=@user";

cmd.Parameters.Add(new OleDbParameter("pass", textBox3.Text));

cmd.Connection = oleDbConnection1;
oleDbConnection1.Open();
cmd.ExecuteNonQuery();

MessageBox.Show("تغییرات با موفقیت انجام شد");


oleDbDataAdapter1.Fill(dataSet11);
}

else
{
MessageBox.Show("اطلاعات وارد شده صحيح نمي باشد");
if (oleDbConnection1 != null) oleDbConnection1.Close();
}


لطفا يه كمكي بكنيد
با تشكر

mp_mp353
پنج شنبه 06 بهمن 1390, 19:36 عصر
دوست من شما رمز قدیم رو چک نمی کنی. که آیا رمز قدیم واقها همینه!!!!
این کد رو قبلا نوشتم یادم نیست درست بوده یا نه شاید به دردت خورد.
private void btnseefull_Click(object sender, EventArgs e)
{
if(txtnewpass.TextLength <6)
{
MessageBox.Show("توجه پسورد شما از هشت رقم کمتر است!","توجه",MessageBoxButtons.OK,MessageBoxIcon.Warning);
txtnewpass2.Clear();
txtnewpass.Clear();
txtnewpass.Select();
return;
}
if (txtnewpass.Text!=txtnewpass2.Text)
{
MessageBox.Show("توجه پسورد دوم با پسورد اول هم خوانی ندارد!","توجه",MessageBoxButtons.OK,MessageBoxIcon.Warning);
txtnewpass2.Clear();
txtnewpass.Clear();
txtnewpass.Select();
return;
}
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|HelalDb.mdb;Jet OLEDB:Database Password=12344321;");
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select * from users where id='" + txtid.Text + "'", con);
DataSet ds = new DataSet();
da.Fill(ds, "users");
if (txtid.Text!=Program.gp.struser)
{
if (ds.Tables[0].Rows.Count!=0)
{
con.Close();
MessageBox.Show("شما نمی توانید این شناسه ی را انتخاب نمایید!\nچونکه این شناسه قبلا انتخاب شده \nیا امکان انتخاب آن وجود ندارد!", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
da = new OleDbDataAdapter("select * from users where id='" + txtid.Text + "'", con);
ds.Clear();
da.Fill(ds, "users");
if (ds.Tables[0].Rows.Count > 0)
{
if (txtpass.Text != ds.Tables[0].Rows[0][1].ToString())
{
MessageBox.Show("توجه پسورد اصلی شما اشتباه است!", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtnewpass2.Clear();
txtnewpass.Clear();
txtpass.Clear();
txtpass.Select();
return;
}
}
OleDbCommand command = new OleDbCommand("update users set ID='" + txtid.Text + "',pass='" + txtnewpass.Text + "' where ID='" + Program.gp.struser + "'", con);
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
con.Close();
MessageBox.Show("عملیات با موفقیت انجام شد", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Information);
Program.gp.struser = txtid.Text;
Close();
}

ali_habibi1384
پنج شنبه 06 بهمن 1390, 22:48 عصر
اگر سه لايه كار ميكني من اين كد رو پيشنهاد ميكنم:


if (HasError() == true) return;

string IdUser = dt.Rows[0]["Id"].ToString();

if (refUsers.Update(IdUser,"Delta",txtNewPass.Text ,"Admin") < 1)
{
MessageBox.Show("اطلاعات ذخيره نشد.لطفا صحت اطلاعات را بررسي كنيد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else
MessageBox.Show("ذخيره اطلاعات موفقيت آميز بود", "ذخيره شد", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();

اينهم تابع HasError:


private Boolean HasError()
{
string err = "";
dt = refUsers.SelectAll();
string CP = dt.Rows[0]["Password"].ToString();
if (txtCurrentPass.Text != CP)
{
err += "رمز عبور جاري صحيح نيست" + "\n";
txtCurrentPass.Text = "";
txtCurrentPass.Focus();
}
if (txtNewPass.Text != txtNewPassRepeat.Text)
{
err += "رمز عبور جديد با تكرار آن برابر نيست" + "\n";
txtNewPass.Text = "";
txtNewPassRepeat.Text = "";
txtNewPass.Focus();
}
if (err != "")
{
MessageBox.Show(err, "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
return true;
}
return false;
}

ali_habibi1384
پنج شنبه 06 بهمن 1390, 22:56 عصر
جهت تكميل تر شدن چيزايي كه نوشتم گفتم كامل بنويسم تا بدرد بخور تر بشه:
اين جدول tblUsers:
http://8208.6.img98.net/out.php/i195106_tbluser.jpg
تابع Updateكلاس tblUsers در لايه DataAccess


public int Update(string Id, string UserName, string Password, string Type)
{
return ExecuteNoneQuery(CommandType.StoredProcedure, "tblUsers_Update", new SqlParameter[]{
new SqlParameter( "@Id", Id ),
new SqlParameter( "@UserName", UserName ),
new SqlParameter( "@Password",Password ),
new SqlParameter( "@Type", Type )

});
}

اينهم SP براي Update در Sql:


ALTER Procedure [dbo].[tblUsers_Update]
@Id int,
@UserName nvarchar(50),
@Password nvarchar(50),
@Type nvarchar(50)
As
Begin
Update tblUsers
Set
[UserName] = @UserName,
[Password] = @Password,
[Type] = @Type
Where
[Id] = @Id

End

shadi khanum
پنج شنبه 06 بهمن 1390, 23:10 عصر
به جز مشکلی که دوستمون گفت ه شما چک نمیکنی کاربر رمز قدیم رو درست زده یا نه، دستو کامندی که نوشتی یه پارامتر کم بهش پاس میکنی... شما پسورد رو میفرستی به کامند ولی یوزر رو نه... این دستور هم کمه
cmd.Parameters.Add(new OleDbParameter("user", textBox1.Text));

xxxsenatorxxx
جمعه 07 بهمن 1390, 18:41 عصر
دست همتون درد نكنه سپاسگذارم

ali_habibi1384
جمعه 07 بهمن 1390, 20:04 عصر
دست همتون درد نكنه سپاسگذارم
از كليد تشكر استفاده كنيد . نياز به تشكر زبوني نيست