مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ms.nabavi

عضویت از 1396/04/17

تشخیص نام کاربری نرم افزار

  • سه شنبه 10 بهمن 1396
  • 10:14
تشکر میکنم

با سلام خدمت دوستان.
ما برای فرم اولیه برناممون نام کاربری رو admin تعیین کردیم و موقع ورود هم برنامه چک میکنه نام کاربری و رمز عبور رو. ولی مشکل اینجاست که اگه من ADMIN هم بزنم وارد برنامه میشه.همچنین اگه بعد admin دکمه space روهم بزنم بازم تشخیص نمیده و وارد برنامه میشه.خب این دو اتفاق اصلا خوب نیست.باید حتما admin با حروف کوچک باشه. من بخوام شرط بذارم که space نزنه، شاید یک کاربر تعریف کنه که بین اسم و فامیلش فاصله باشه، اونوقت به مشکل میخوره برنامه.
باید چیکار کنم؟

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 10 بهمن 1396
  • 12:15

چگونه نام کاربری را چک می کنید لطفا کدهاتون رو قرار بدید ؟

کاربر سایت

ms.nabavi

عضویت از 1396/04/17

  • سه شنبه 10 بهمن 1396
  • 12:58

کد دکمه ورود این هست:

 if (comboBox1.Text == "مدیر")
            {
                string user = txtuser.Text;
                string pass = txtpass.Text;
                context=new DataenterDataContext();
                var q = context.tblsabtkarbars.Where(c => c.status == true && c.username == user && c.password == pass);
                if (q.Count() != 0)
                {
                    //بیرون کشیدن نام و نام خانوادگی از فیلد جدول و ریختن در یک لیبل
                    var b = from j in context.tblsabtkarbars
                            where j.username == txtuser.Text
                            select j;
                    string vb = "";
                    foreach (tblsabtkarbar f in b)
                        vb = f.fullname.ToString();
                    //فرستادن مقادیر مورد نظر از صفحه  لاگین به صفحه اصلی
                    var g = new home();
                    g.lbfullname = vb;
                    g.lblusername = txtuser.Text;
                    g.Show();
                    this.Hide();
                    //
                    //ذخیره اطلاعات کاربر هنگام ورود به برنامه 
                    context = new DataenterDataContext();
                    tblloandleuser insert = new tblloandleuser();
                    insert.username = txtuser.Text;
                    //
                    var ha = from j in context.tblsabtkarbars
                             where j.username == txtuser.Text
                             select j;
                    string v = "";
                    foreach (tblsabtkarbar f in ha)
                        v = f.idu.ToString();
                    string a = v;
                    insert.idu = Convert.ToInt32(a);
                    //بیرون کشیدن نام و نام خانوادگی از فیلد جدول و ریختن در یک لیبل
                    string va = "";
                    foreach (tblsabtkarbar f in ha)
                        va = f.fullname.ToString();
                    //
                    insert.fullname = va;
                  
                }
                else
                {
                    MessageBox.Show("نام کاربری یا کلمه عبور یا چکس باکس انتخاب شده اشتباه است");
                }

اینم تصویر صفحه login:

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 10 بهمن 1396
  • 13:04

ابتدا مقدار را Trim کنید تا فاصله ها حذف بشه و سپس ToLower کنید تا حروف کوچیک بشه و بعد استفاده کنید

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 10 بهمن 1396
  • 13:14

EF بر روی حروف کوچک و بزرگ هنگام اجرای کوئری حساس نیست. 

برای حل این مشکل باید خودمان کوئری sql را بنویسیم و از COLLATE SQL_Latin1_General_CP1_CS_AS  استفاده کنیم:

            var query =  "SELECT * FROM dbo.tblsabtkarbars where [username] = @username COLLATE SQL_Latin1_General_CP1_CS_AS and [password] = @pass";
            var userNameParameter = new SqlParameter("username",txtuser.Text);
            var passWordParameter = new SqlParameter("pass",txtpass.Text);

            var q = context.Database.SqlQuery<tblsabtkarbars>(query, userNameParameter, passWordParameter);

نمونه :

c# - Entity Framework Case Sensitive Query - Stack Overflow

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • سه شنبه 10 بهمن 1396
  • 15:42

برای Space  هم دو طرف عبارت که می توانید از Trim()  استفاده کنید مثلا اینجوری:

txtUsername.Text.Trim()

 اما برای اینکه الزاما بزرگ و کوچک بودن حروف را نادیده بگیرد معمولا عرف بر این است که شما نام کاربری وارده را با نام کاربری ذخیره شده در دیتابیس با حروف همسان چک کنی به این صورت که:

txtUsername.Text.Trim().ToLower()== username.ToLower()

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)