PDA

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



boysfe5
چهارشنبه 19 مهر 1391, 18:03 عصر
با سلام
میخوام وقتی کاربر لاگین شد نوع کاربری (مدیر، کاربر عادی) که وارد شده نشان بده و اسم کاربر

danialafshari
چهارشنبه 19 مهر 1391, 18:09 عصر
تو کلاس یک متغیر بولی Public می زاری اگه مدیر بود تمام امکانات بازه و اگر نبود بسته
در فرم بعد هم نام کاربری ای که تو کلاس هست رو تو یک label میریزی.
یک سورس درست کردم ببینید

SuTeDell
جمعه 21 مهر 1391, 00:00 صبح
سلام.
من همین کارو میخوام انجام بدم اما با دیتابیس و Query گرفتن.اما جواب نمیده.لطفا کمک کنید.
var r = from pc in db.Accounts
where pc.Code_meli == Convert.ToInt32(textBox2.Text) & pc.Pass == Convert.ToInt32(textBox1.Text)
select pc.Status;
if(r.FirstOrDefault()=="مدیر ارشد")
{
c.admin = true;

}
else
{
c.admin = false;
}

r_s1389@yahoo.com
جمعه 21 مهر 1391, 23:12 عصر
سلام میتونی یک فیلد به پایگاه داده ات اضافه کنی با نام سمت و اون رو از دیتابیس بخونی و در فرم اصلی داخل یک برچسب نمایش بدی همین.
خوب حالا یه بحث دیگه فکر کردم برات سوال بشه رو هم جواب میدم کاربر وقتی که لاگین میشه نام کاربری و پسورد خودش رو وارد میکند
خوب کاربر این مشخصات رو وارد میکنه که اگه درست باشه (مجوز ورود رو داخل یک کلاس تعریف کن) یک مقدار true بر میگردونه خوب که اگه نباشه false
در داخل بانک اطلاعاتی میتونی به هر قسمت ااز برنامه ات رو که میخوای فرضا فقط ادمین دسترسی ذاشته باشه یا کاربر عادی به فلان دکمه دسترسی نداشته باشه یک فیلد تعریف کنی(برای هر دکمه ای که میخوای دسترسی یا عدم آن باشه) که همراه با ورود کاربر هم نام اون و هم سمت اون و هم به چه دکمه هایی دسترسی داشته باشه رو هم در فرم اصلیت داشته باشی
اگه نتونستی این کار را بکنی بگو تا کد ان رو هم بگم.
موفق باشین

SuTeDell
جمعه 21 مهر 1391, 23:43 عصر
سلام
من داخل دیتابیس یک فیلد گذاشتم که سمت کاربر رو نشون میده.اسمش هم Status گذاشتم.
میخوام وقتی کاربر یوزر و پسوردشو میزنه ، فرم بعدی که باز میشه توی یک Textbox سمت کاریر رو نشون بده.بعدش با یه دستور if میشه محدودیت واسه منشی تعیین کرد(که این قسمتش آسونه)
مشکلم اینه که نمیتونم سمت کاربری که یوزر و پسوردشو زده رو توی اون Textbox نشون بدم!!!!
کدش رو بالا نوشتم اما جوای نمیده!
لطفا کمکم کنید
ممنون

Nima_kyan
جمعه 21 مهر 1391, 23:51 عصر
شما تو همون فرم Login يه متغییر سراسری(مثلا Role) تعریف کن و وقتی که یوزر و پس رو چک کردی و معتبر بودند، مقدار فیلد Status رو داخل اون متغيير بريز و بعدش تو Form_Load فرم اصليت مقدار اون متغيير رو بريز تو TextBox.

SuTeDell
جمعه 21 مهر 1391, 23:58 عصر
آخه نوع سمت توی فرم Login انتخاب نمیشه.توی فرم Login فقط یوز و پسورد پر میشه.
سمت تو یه فرم دیگه که تعریف کاربر جدید هست انتخاب میشه.
اگه در فرم Login حق انتحاب سمت رو داشتیم،اونوقت حرف شما عملی بود.اما حالا نمیدونم باید چکار کنم؟!!
کد بالا رو ببینید متوجه میشید
با تشکر

Nima_kyan
شنبه 22 مهر 1391, 00:20 صبح
آخه نوع سمت توی فرم Login انتخاب نمیشه.توی فرم Login فقط یوز و پسورد پر میشه.
سمت تو یه فرم دیگه که تعریف کاربر جدید هست انتخاب میشه.
اگه در فرم Login حق انتحاب سمت رو داشتیم،اونوقت حرف شما عملی بود.اما حالا نمیدونم باید چکار کنم؟!!
کد بالا رو ببینید متوجه میشید
با تشکر
متوجه ام و میدونم که سمت در فرم لاگین انتخاب نمیشه.
منظور من این بود بعد از اینکه از معتبر بودن یوزر و پسورد مطمئن شدید با یه SP مقدار فیلد Status رو داخل متغيير سراسري كه تعريف كردي بريز و .. (گرچند ميتوني با همون SP ای که یوزر و پسورد رو چک میکنی در صورت درست بودنشون مقدار فیلد Status رو برگردونی)

r_s1389@yahoo.com
شنبه 22 مهر 1391, 00:32 صبح
اول در پایگاه داده 3 تا فیلد به نام های username,pass,semat به عنوان مثال
بعد یه کلاس با این نام درست کن class systemuser
بعد این تابع رو درونش تعریف کن
public bool canlogin(string name, string lastname)
{
con.Open();
string sql = "select count(*) from tbl_masol2 where name='{0}' and pass='{1}'";
sql = string.Format(sql, name,lastname);
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable(name,pass);
da.Fill(dt);
con.Close();
bool can = false;
if (dt.Rows[0][0].ToString() == "1")
{
can = true;
}
return can;


}

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=library;Integrated Security=True");
البته این رو قبل از con.Open(); بنویس
بعد بیا در فرم لاگین داخل دکمه لاگین این رو بنویس
private void button1_Click(object sender, EventArgs e)
{
systemuser su = new systemuser();
Form_main f1 = new Form_main();
if (su.canlogin(textBox1.Text, textBox2.Text) == true)
{
// حالا تو این خط برو سمت کاربر رو از پایگاه داده انتخاب کن و اون رو داخل یه متغییری بریز که عمومی تعریف کردی و در فرم اصلی ازش استفاده کن
f1.Show();
this.Close();
}
else
{
MessageBox.Show("نام کاربری معتبر وارد کنید");
}
}

SuTeDell
شنبه 22 مهر 1391, 00:45 صبح
متوجه ام و میدونم که سمت در فرم لاگین انتخاب نمیشه.
منظور من این بود بعد از اینکه از معتبر بودن یوزر و پسورد مطمئن شدید با یه SP مقدار فیلد Status رو داخل متغيير سراسري كه تعريف كردي بريز و .. (گرچند ميتوني با همون SP ای که یوزر و پسورد رو چک میکنی در صورت درست بودنشون مقدار فیلد Status رو برگردونی)

اگه میشه کد اینکار رو برام بنویسید.ممنون میشم.

Nima_kyan
شنبه 22 مهر 1391, 01:08 صبح
کد پروسیجر چک کردن یوزر و پسورد:

ALTER procedure [dbo].[Check_User]
@Username nvarchar(50),
@Pass nvarchar(50),
@Result int output
as
declare @Tmpuser nvarchar(50)
declare @TmpPass nvarchar(50)
select @Tmpuser=User_Name,@TmpPass=Pass from Tbl_User
where (User_Name=@Username) and (Pass=@Pass)

if (@Username=@Tmpuser) and (@Pass=@TmpPass)
set @Result=1
else
set @Result=0
تعریف متغییر های مورد نیاز:

public static String plcUserName,plcName,plcRole;
int Res;
کد دکمه ورود فرم لاگین:

SqlConnection con = new SqlConnection("Data Source=.\\InstanceName;Initial Catalog=DatabaseName;Integrated Security=true");
SqlCommand cmd = new SqlCommand("Check_User",con);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter username = new SqlParameter("@Username", txtUsername.Text);
SqlParameter pass = new SqlParameter("@Pass", txtPass.Text);
SqlParameter result = new SqlParameter("@Result", Res);
result.Direction = ParameterDirection.Output;

cmd.Parameters.Add(username);
cmd.Parameters.Add(pass);
cmd.Parameters.Add(result);

con.Open();
SqlDataReader reader = cmd.ExecuteReader();
con.Close();

Res = int.Parse(result.Value.ToString());
if (Res == 1)
{
plcUserName = txtUsername.Text;

SqlConnection conn = new SqlConnection("Data Source=.\\InstanceName;Initial Catalog=DatabaseName;Integrated Security=true");
SqlCommand cmdd = new SqlCommand("select * from Tbl_User where User_Name='"+txtUsername.Text+"'", conn);

conn.Open();
cmdd.ExecuteNonQuery();
conn.Close();

SqlDataAdapter daa = new SqlDataAdapter(cmdd);
DataTable dtt = new DataTable();
daa.Fill(dtt);
if (dtt.Rows.Count > 0)
{
plcName = dtt.Rows[0]["Name"].ToString();
plcRole = dtt.Rows[0]["Role"].ToString();
plcUserName = dtt.Rows[0]["User_Name"].ToString();
}

FrmMain frm = new FrmMain();
frm.Show();
this.Hide();
}
else if (Res == 0)
MessageBox.Show("نام کاربری یا رمز عبور وارد شده اشتباه است", "خطا");
و کد Form_Load فرم اصلي برنامه:

label2.Text = FrmLogin.plcName;
label4.Text = FrmLogin.plcRole;
موفق باشي