PDA

View Full Version : مبتدی: عدم ذخیره شدن رمزعبور وقتی از طریق پارامتر دستور SQL را اجرا می کنم!



raha_hakhamanesh
جمعه 19 آبان 1391, 01:11 صبح
خدمت اساتید ارجمند سلام

در کدنویسی یک صفحه وب، وقتی اطلاعات معمولی کاربری (نام، نام خانوادگی، نام کاربری و رمز عبور) را ذخیره می کنم تمام رکورد در دیتابیس ذخیره می شود الا رمز عبور! فکر می کنید اشکال کارم از کجاست؟

سپاسگزارم




string StrCmd = "Insert into Tbl1 (Username, Password) Values (@user, @pass)
SqlCommand Cmd = new SqlCommand(StrCmd, Con);
Cmd.Parameters.AddWithValue("@user", TextBox1.Text);
Cmd.Parameters.AddWithValue("@pass", TextBox2.Text);

fakhravari
جمعه 19 آبان 1391, 01:57 صبح
خدمت اساتید ارجمند سلام

در کدنویسی یک صفحه وب، وقتی اطلاعات معمولی کاربری (نام، نام خانوادگی، نام کاربری و رمز عبور) را ذخیره می کنم تمام رکورد در دیتابیس ذخیره می شود الا رمز عبور! فکر می کنید اشکال کارم از کجاست؟

سپاسگزارم




string StrCmd = "Insert into Tbl1 (Username, Password) Values (@user, @pass)
SqlCommand Cmd = new SqlCommand(StrCmd, Con);
Cmd.Parameters.AddWithValue("@user", TextBox1.Text);
Cmd.Parameters.AddWithValue("@pass", TextBox2.Text);


ظاهرش که درسته .
کد کلی بزارید

raha_hakhamanesh
جمعه 19 آبان 1391, 02:23 صبح
سلام و متشکرم که پاسخ دادید
مسئله عجیبی است چون تا بحال با چنین مشکلی مواجه نشده بودم
اگر بجای پارامترها مقادیر را عینا از TextBox ذخیره کنم مشکلی نیست
همچنین سایر مقادیر مثل نام کاربری بدرستی ذخیره و در گریدویو نمایش داده می شود الا رمز عبور؛ (متاسفم نتوانستم اینجا عکس آپلود کنم)
بدیهی است که TextBox به حالت Password تغییر داده شده
و از همه بدتر در صفحه Login، کاربر با رمز عبور، نامعتبر است و بدون رمز عبور وارد سیستم می شود یعنی عملا (در زمان Insert) مقدار خالی برای پارامتر رمزعبور به دیتابیس ارسال شده است.

آیا ممکن است به دیتابیس مرتبط باشد (بنظرم که بعید است) ولی من در حال تست این صفحه بصورت آنلاین هستم که با این مشکل مواجه شده ام.

با تشکر



string ConStr = "Server ..."
SqlConnection Con = new SqlConnection(ConStr);

string StrCmd = "Insert into Tbl1 (Username, Password) Values (@user, @pass)
SqlCommand Cmd = new SqlCommand(StrCmd, Con);
Cmd.Parameters.AddWithValue("@user", TextBox1.Text);
Cmd.Parameters.AddWithValue("@pass", TextBox2.Text);

try
{
Con.Open();
Cmd.ExecuteNonQuery();
Con.Close();
}

maktoom
جمعه 19 آبان 1391, 09:19 صبح
سلام
ممکنه بخاطر عدم تطابق دیتا تایپ باشه.(توی دیتابیس نوع پسوردتون با نوعی که توی برنامه نوشتین مطابقت دارن؟)
اگر این مشکل نیست ممکنه بخاطر منطق غلط شرطهاتون توی برنامه باشه. یه بار تریس ذهنی بکنید ببینید منطق کارتون درسته؟

fakhravari
جمعه 19 آبان 1391, 10:54 صبح
متن خطا بزارید.

raha_hakhamanesh
جمعه 19 آبان 1391, 22:03 عصر
سلام دوستان
از پاسخ ها و پیگیریتان ممنونم




ممکنه بخاطر عدم تطابق دیتا تایپ باشه.(توی دیتابیس نوع پسوردتون با نوعی که توی برنامه نوشتین مطابقت دارن؟)


لطفا شما بررسی بفرمایید
نوع پسورد رو رشته انتخاب کردم بشرح زیر:

SqlConnection Con = new SqlConnection(ConfigurationSettings.AppSettings["ConStr"]);
string StrCmd = "CREATE TABLE Tbl1( " +
"UID int primary key IDENTITY, " +
"User nvarchar(25), " +
"Pass nvarchar(25), " +
"Membership nvarchar(25) )";




اگر این مشکل نیست ممکنه بخاطر منطق غلط شرطهاتون توی برنامه باشه. یه بار تریس ذهنی بکنید ببینید منطق کارتون درسته؟


Trace کردم ولی مسئله دقیقا اینجاست که اگر TextBox پسورد را از وضعیت پسورد خارج کنم بنحوی که متن تایپ شده مشاهده شود آنوقت اطلاعات آن فیلد ذخیره می شود
همچنین اگر از پارامتر در دستور SQL استفاده نکنم و مستقیما مقدار TextBox را به دستور SQL ارسال کنم مجدد مشکلی نیست
در نتیجه مشکل زمانی رخ می دهد که TextBox مورد نظر می خواهد مقدارش را که در مود پسورد است از طریق پارامتر در دیتابیس ذخیره کند

با تشکر لطفا اظهارنظر بفرمایید




متن خطا بزارید.


خطا ندارم که متن خطا بذارم! فیلد پسورد در دیتابیس ذخیره نمی شود و مقدار خالی بجای آن ذخیره می شود
حتی وقتی جدول مربوطه را به گریدویو بایند می کنم همه داده ها موجود است اما فیلد پسور خالی است
لطفا شما هم بررسی بفرمایید

r_s1389@yahoo.com
جمعه 19 آبان 1391, 22:25 عصر
سلام
با پروسیجر ننویسید ببینید اون موقع جواب چیه

raha_hakhamanesh
جمعه 19 آبان 1391, 22:32 عصر
مشکل رفع شد:

پس از ثبت دکمه 'ثبت نام' باید داده ها را در دیتابیس ذخیره می کردم ولی من آنها را به یک متد دیگر پاس می دادم که وظیفه ذخیره سازی اطلاعات در دیتابیس را بعهده داشت از طرفی چون postback فراخوانی می شد و اطلاعات درون کنترل TextBox از نوع پسورد معرفی شده بود آن اطلاعات از بین می رود و خالی شده و در نتیجه مقدار تهی در دیتابیس ذخیره می شد.

از همراهی عزیزان متشکرم