PDA

View Full Version : تعریف کاربر



jafari_m246
پنج شنبه 24 خرداد 1386, 05:38 صبح
سلام
من میخواهم برای برنامه ام کاربر تعریف کنم و برای هر کدام محدودیت هایی در برنامه ایجاد کنم ولی راه آ» را نمی دانم

m_nejad
پنج شنبه 24 خرداد 1386, 07:34 صبح
یک جدول کاربر بساز و دسترسی ها به هر منو یا بخش و یا ... را نیز توی اون ذخیره کن.

jafari_m246
پنج شنبه 24 خرداد 1386, 07:59 صبح
سلام
من یک جدول در sql ساخته ام و حالا می خواهم تعریف کنم که اگه username &passwordوارد شده توی textboxبااونهایی که در sql است مساوی بود فرم 2 را نمایش بده
و اینکه نمی دونم در فرم دو چطور تشخیص بدهم که الان کدام userاین فرم را باز کرده
در ضمن سایت ات هم باز نمی شه

benighted.boy
پنج شنبه 24 خرداد 1386, 08:14 صبح
سلام .یه الگوریتم ساده در این مورد هست که فوق العاده کار سازه.
اونم اینه که یه جدول تهیه کن که توش یه سری مشخصات کاربر مثل username ,password و... به همراه یه سری جوازهای دسترسی مثل اجازه edit ,delete ,addو... از نوع booleanبعد از اینکه فرم loginرو چک کردو خواست وارد فرم مادر شه تمام اون جوازهارو از DBبخون و در یه سری متغییرPublicقرار بده .و در ادامه برای هر کاربر در طول برنامه از این متغییر ها استفاده کن.این ساده ترین شکل جواز دادن به کاربره که یک حسن بزرگ داره
DBیک بار در ابتدا باز شده و موارد مورد نیازرو در متغییر ریخته و بسته میشود در این حالت هم امنیت بالا رفته هم برای برنامه نویس رفع اشکال ساده تر است و هم به دلیل استفاده از متغییر در داخل برنامه بجای باز کردن و بستن مکرر DB سرعت برنامه بالا تر میرود

poya011
پنج شنبه 24 خرداد 1386, 10:35 صبح
private void Form10_Load(object sender, EventArgs e)
{
cn = new OleDbConnection("data source ="+Application.StartupPath+"\\yadasht.mdb (file://\\yadasht.mdb) ; provider = microsoft.jet.oledb.4.0");
cn.Open();
da = new OleDbDataAdapter("select * from Table1", cn);
ds = new DataSet();
da.Fill(ds);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
}
private void button1_Click(object sender, EventArgs e)
{
int i;
for (i = 0; i<ds.Tables[0].Rows.Count; i++)
{
if (textBox1.Text == ds.Tables[0].Rows[i]["namk"].ToString() && textBox2.Text == ds.Tables[0].Rows[i]["ramz"].ToString() && ds.Tables[0].Rows[i]["taid"].ToString()== "yes")
{
Form3 f = new Form3();
f.label2.Text = textBox1.Text;
f.Text = ds.Tables[0].Rows[i]["namd"].ToString();
f.ShowDialog();
Close();
return;
}
}

MessageBox.Show("نام کاربری شما مورد تایید نیست");

}
private void button2_Click(object sender, EventArgs e)
{
Form11 f = new Form11();
f.ShowDialog();
}


من کپی کد برنامه خودم را برات گذاشتم که نام دیتا بیس yadasht و نام تیبل table1 در این برنامه میاد تکس باکس 1 و2 با فیلد مقایسه می کنه آگر درست بود وارد برنامه میشه در ضمن در مورد yes بالا اگر مساوی با yes نباشه وارد نمی شود این yes برای تایید نام کاربری است که در ثبت نام توسط سرور مورد تایید قرار می گیره. مشکل داشتی بگو تا یک برنامه مشابه آن برات بزارم

Sorenaa_s
پنج شنبه 24 خرداد 1386, 11:06 صبح
دوست عزیز مثالی که من تو یه تاپیک دیگه گذاشته بودم میتونه کمک کنه:
http://barnamenevis.org/forum/showthread.php?t=68253

jafari_m246
جمعه 25 خرداد 1386, 11:52 صبح
با سلام
و تشکر فراوان از دوستانی که در این زمینه من را راهنمائی کردند

Future
پنج شنبه 31 خرداد 1386, 01:07 صبح
سلام دوست عزیز, من هم یک زمانی با این مساله روبرو شده بودم که از روشی که Sorena ذکر کرده بودند به نتیجه رسیدم ولی یکی از دوستان می گفت که از طریق تعریف role در اس کیو ال هم میشه اینکار را کرد.
ممنون میشم اگه یکی از دوستان بفرمائیند role ها چی هستند و چطوری باید از آنها داستفاده کرد.

jafari_m246
دوشنبه 11 تیر 1386, 09:37 صبح
namespace example
{
public partial class Form1 : Form
{
SqlConnection my_cn=new SqlConnection ("server=(local);database=university;integrated security=true;");
DataSet ds = new DataSet();

public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
SqlDataAdapter my_da = new SqlDataAdapter("select * from login",my_cn );
my_da.Fill(ds);
SqlCommandBuilder my_cb = new SqlCommandBuilder(my_da);
my_cn.Open();
}
private void button1_Click(object sender, EventArgs e)
{
int i;
for (i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if ((textBox1.Text == ds.Tables[0].Rows[i]["namk"].ToString()) && (textBox2.Text == ds.Tables[0].Rows[i]["ramz"].ToString()))
{
Form3 f = new Form3();
f.Show();
//f.label2.Text = textBox1.Text;
//f.Text = ds.Tables[0].Rows[i]["namd"].ToString();
//f.ShowDialog();
//Close();
return;
}
}
MessageBox.Show("نام کاربری شما مورد تایید نیست");
}
}
}


برای اینکه به sql وصل بشوم کد را اینطوری تغیر دادم و لی جواب نمی ده
می شه کمکم کنید
ممنون

jafari_m246
دوشنبه 11 تیر 1386, 09:39 صبح
نمی دانم چرا خطوط کد را جابجا کرد
امیدوارم بتوانی آن را بخوانی

jafari_m246
دوشنبه 11 تیر 1386, 09:43 صبح
نمی دانم چطور بنویسم که خطوط کد را بدونه جابجایی نمایش بدهد
امیدوارم بتوانی آن را بخوانی

alireza1384
دوشنبه 11 تیر 1386, 10:17 صبح
دوست گرامی Jafari_m246 سوال شما مبهم است. کجای برنامه ات پیغام خطا دریافت می کنی ؟ درضمن بهترین راه جهت به دست آوردن ConnectionString کامل و مطمئن استفاده از Server Explorer ----> data connections ----> add connection است که می توانی از کد تولید شده جهت اتصال به بانک مورد نظر استفاده کنی .

jafari_m246
سه شنبه 12 تیر 1386, 12:39 عصر
کدی که توی صفحه قبل است اجرا می دهد ولی برای همه کاربران پیام میدهد که نام کاربری صحیح نمی باشد

jafari_m246
پنج شنبه 28 تیر 1386, 06:52 صبح
privatevoid button1_Click(object sender, EventArgs e)
{
SqlCommand cm = newSqlCommand("select * from login where namk='" + textBox1.Text + "' and ramz= '" + textBox2.Text + "'", cn);
SqlDataReader dr;
dr = cm.ExecuteReader();
while (dr.Read())
{
a += 1;
}
dr.Close();
if (a == 1)
{
this.Hide();
mainfrm mnfrm = newmainfrm();
mnfrm.Show();
mnfrm . Owner = this;

return;

}
MessageBox.Show("نام کاربری اشتباه می باشد");
textBox1.Focus();



}
FieldCount


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

jafari_m246
سه شنبه 02 مرداد 1386, 10:15 صبح
کسی نیست که تا حالا برای برنامه اش کاربر تعریف کرده باشه؟؟؟؟؟
من با کد بالا مشکل ام حل شد و توانستم که با چک کردن نام و رمز وارد برنامه بشوم
ولی حالا نمی دانم چطوری توی فرم اصلی تشخیص بدهم که کدام کاربر وارد برنامه شده است

اگر بتوانم نام کاربری را که در تکست باکس وارد می کنند را روی یک لیبل در فرم اصلی نمایش بدهم فکر کنم بتوانم مشکل ام را حل کنم