ورود

View Full Version : گذاشتن user و pass در ابتداي اجراي برنامه



navid1n2000
دوشنبه 28 مرداد 1387, 23:26 عصر
سلام
من يك پروژه دارم مينويسم كه لازمه حتما اولش user , pass كاربر چك بشه . من توي sql جدول user ها رو در آوردم و توي برنامه جايي رو براي تعريف كاربر گذاشتم ولي نمي دونم چه طور اين user و pass رو در اول برنامه چك كنم . لطفا منو راهنمايي كنين.

sarkhosh
دوشنبه 28 مرداد 1387, 23:54 عصر
دو تا textbox بذار شما! بعد مقادیر فیلد های یوزر و پسورد در دیتابیس رو با مقادیر وارد شده در textbox ها چک کن اگه درست بود که اجازه ورورد به فرم اصلی رو به کاربر بده

یه سرچ هم تو همین سایت انجام بدی کدشو بدست میاری!
خوش باشید

mehrnoosh_al62
سه شنبه 29 مرداد 1387, 08:49 صبح
سلام از کد زیر استفاده کن :

SqlCommand sqlcomm = new SqlCommand();
DataTable tbl= new DataTable();
SqlDataAdapter adp = new SqlDataAdapter();
sqlcomm.Connection = new SqlConnection();
sqlcomm.Connection.ConnectionString = "Your Connection String"
sqlcomm.Connection.Open();
sqlcomm.CommandText ="select username,password from tbluser where username='" & txtUser.Text & "' and password='" & txtPass.Text & "'");
adp.SelectCommand = sqlcomm;
adp.Fill(tbl);
If (tbl.Rows.Count > 0)

Form1.Show()
Else
MessageBox.Show("Invalid Username Abd Password")

اَرژنگ
سه شنبه 29 مرداد 1387, 16:56 عصر
سلام از کد زیر استفاده کن :

SqlCommand sqlcomm = new SqlCommand();
DataTable tbl= new DataTable();
SqlDataAdapter adp = new SqlDataAdapter();
sqlcomm.Connection = new SqlConnection();
sqlcomm.Connection.ConnectionString = "Your Connection String"
sqlcomm.Connection.Open();
sqlcomm.CommandText ="select username,password from tbluser where username='" & txtUser.Text & "' and password='" & txtPass.Text & "'");
adp.SelectCommand = sqlcomm;
adp.Fill(tbl);
If (tbl.Rows.Count > 0)

Form1.Show()
Else
MessageBox.Show("Invalid Username Abd Password")

اگر ممکن است لطفا این کد را یکمی تمیز کنید و تمیزش را بفرستید.
مرسی

h.jaza
سه شنبه 29 مرداد 1387, 23:09 عصر
public bool CanLogin(string UserName, String Password)
{
UserName = UserName.Replace("'", "''");
Password = Password.Replace("'", "''");

bool can = false;

db.Connect();

DataTable dt = new DataTable();
string sql = "select * from Member where musername = '{0}' and mpassword = '{1}'";
sql = string.Format(sql, UserName, Password);
dt = db.Select(sql);
if (dt.Rows.Count == 1)
{
can = true;
this.ID = Convert.ToInt32(dt.Rows[0]["mid"]);
this.Name = dt.Rows[0]["mname"].ToString();
this.Family = dt.Rows[0]["mfamily"].ToString();
}

//System.Windows.Forms.MessageBox.Show(db.LastExcept ion);

db.DisConnect();

return can;
}


با این تکه کد که تو لایه ی BusinessLayer می نویسی و استفاده ازش با فرستادن username و pass به این تابع در فرم لاگین، یوز و پس چک میشه.

saber4166
چهارشنبه 30 مرداد 1387, 01:03 صبح
دوست عزیز یکی از راه ها اینه که از 2 تا combobox استفاده کنی و یه textbox
در ابتدای برنامه تنها کاری که میکنه اینه که یه بار فقط یه بار دستور SELECT رو صدا بزنی
و بعد combox هاتو پر کنی در combobox1 که name هات هست ودر combobiox 2 هم id هات
البته خاصیت visible اونا رو false کن که کاربر نبینه بعد اونچه که کاربر در textuser مینویسه رو با
cmbid چک کن
کاربر بین اسامی user ها حرکت میکنه و همزمان id ها هم در cmbid
متناسب با نام کاربری تغیر میکند در این برنامه کافیست کار بر نام خود را
از درون cmbusername انتخاب کند و بعد رمزی را در txtuserID وارد کند
روش خوبیه که دائما از بانکت SELECT نکنی

mehrnoosh_al62
چهارشنبه 30 مرداد 1387, 07:59 صبح
اگر ممکن است لطفا این کد را یکمی تمیز کنید و تمیزش را بفرستید.
مرسی




SqlCommand sqlcomm = new SqlCommand();
DataTable tbl= new DataTable();
SqlDataAdapter adp = new SqlDataAdapter();
sqlcomm.Connection = new SqlConnection();
sqlcomm.Connection.ConnectionString = "Your Connection String";
sqlcomm.Connection.Open();
sqlcomm.CommandText ="select username,password from tbluser where username='" & txtUser.Text & "' and password='" & txtPass.Text & "'" ;
adp.SelectCommand = sqlcomm;
adp.Fill(tbl);
if (tbl.Rows.Count > 0)

Form1.Show();

else

MessageBox.Show("Invalid Username And Password");

sarkhosh
چهارشنبه 30 مرداد 1387, 12:07 عصر
دوست عزیز یکی از راه ها اینه که از 2 تا combobox استفاده کنی و یه textbox
در ابتدای برنامه تنها کاری که میکنه اینه که یه بار فقط یه بار دستور SELECT رو صدا بزنی
و بعد combox هاتو پر کنی در combobox1 که name هات هست ودر combobiox 2 هم id هات
البته خاصیت visible اونا رو false کن که کاربر نبینه بعد اونچه که کاربر در textuser مینویسه رو با
cmbid چک کن
کاربر بین اسامی user ها حرکت میکنه و همزمان id ها هم در cmbid
متناسب با نام کاربری تغیر میکند در این برنامه کافیست کار بر نام خود را
از درون cmbusername انتخاب کند و بعد رمزی را در txtuserID وارد کند
روش خوبیه که دائما از بانکت SELECT نکنی
اقا ممکنه ایمیج فرم لاگینتونو بذارید اینجا...ممنون

اَرژنگ
چهارشنبه 30 مرداد 1387, 16:40 عصر
SqlCommand sqlcomm = new SqlCommand();
DataTable tbl= new DataTable();
SqlDataAdapter adp = new SqlDataAdapter();
sqlcomm.Connection = new SqlConnection();
sqlcomm.Connection.ConnectionString = "Your Connection String";
sqlcomm.Connection.Open();
sqlcomm.CommandText ="select username,password from tbluser where username='" & txtUser.Text & "' and password='" & txtPass.Text & "'" ;
adp.SelectCommand = sqlcomm;
adp.Fill(tbl);
if (tbl.Rows.Count > 0)

Form1.Show();

else

MessageBox.Show("Invalid Username And Password");


با تشکر از زحمتتان، ولی این روش همه چی را با هم قاطی میکند، روش بهتر این است که کد را به قسمتهایه مختلف تقسیم کنند، بعدش میشه که هر قسمت را در یک اسمبلی جداگانه گذاشت و ۳ لایه ‌ای کار کرد (این کد پائین حداقل استانداردی است که باید رعایت بشد،، میشه کلی از این هم تمیزتر کردش ولی از یک جا باید بالاخره شروع کرد):



public bool IsLoginInDatabase( string username , string password )
{
SqlCommand sqlcomm = new SqlCommand();
DataTable tbl= new DataTable();
SqlDataAdapter adp = new SqlDataAdapter();
sqlcomm.Connection = new SqlConnection();
sqlcomm.Connection.ConnectionString = "Your Connection String";
sqlcomm.Connection.Open();
sqlcomm.CommandText ="select username,password from tbluser where username=@username and password=@password";
sqlcomm.Parameters.AddWithValue( "username" , username );
sqlcomm.Parameters.AddWithValue( "password" , password );
adp.SelectCommand = sqlcomm;
adp.Fill( tbl );

if ( tbl.Rows.Count > 0 )
return true;
else
return false;
}

public bool IsValidUserNameAndPassword( string username , string password )
{
return IsLoginInDatabase( username , password );

}

if IsValidUserNameAndPassword( txtUser.Text , txtPass.Text )
Form1.Show();
else
MessageBox.Show("Invalid Username And Password");

man4toman
چهارشنبه 30 مرداد 1387, 17:09 عصر
این تاپیک رو نگاه بندازید:

http://barnamenevis.org/forum/showthread.php?t=94791

Sajjad.Aghapour
چهارشنبه 30 مرداد 1387, 17:56 عصر
سلام
اولا جناب آرژنگ راست میگن و همون طور که man4toman لینک تاپیک مربوط به این موضوع رو معرفی کردن ،برنامه ای که در اون قرار داره از برنامه نویسی 3 لایه پیروی کرده.........
دوما فکر نمی کنید یه خورده زیادی متغیر تعریف کردی.در کد بالا می تونستید به جای تعریف SqlDataAdapter و DataTable با تعریف یک SqlDataReader کدتون رو از اینی که هست به قول استاد آرژنگ خیلی تمیزترش کنید....

navid1n2000
پنج شنبه 31 مرداد 1387, 14:52 عصر
سلام
اينم ايميج فرم ورودم .
http://i34.tinypic.com/2dkh2s0.jpg
مي دونين قضيه چيه ؟‌ توي برنامه من سه قسمت هست : مالي - اداري - نظارتي
و هر كاربر با تشخيص مدير برنامه مي تونه به يكي از قسمت ها بره . من توي جدول SQL اين قسمت براي هر كدوم از قسمت ها يك متغير از نوع bit گذاشتم . يعني كاربر در combo box ميتونه بخش مربوط به خودشو انتخاب كنه . يعني در ابتدا بايد سه قسمت چك بشه : User و Pass و دسترسي به بخش

Sajjad.Aghapour
پنج شنبه 31 مرداد 1387, 15:35 عصر
خوب لزومی نداره که برای این قسمت هم فیلدی در نظر بگیرید.چون تعداد اونها 3 تاست و محدود، میتونید همین طوری اونها رو کنترل کنید.یعنی با comboBox.SelectedIndex اون رو چک کنید که مربوط به کدوم قسمته......
دیگه مشکل خاصی فکر نکنم وجود داشته باشه.......

navid1n2000
پنج شنبه 31 مرداد 1387, 15:38 عصر
سلام
آخه بعضي از كاربرا فقط مي تونن به يك قسمت دسترسي داشته باشن . و مثلا مدير عامل به هر سه تا . و اينا در طول اجراي برنامه معلوم ميشه . يعني مديرعامل مي تونه براشون يوزر و پسورد تعيين كنه و معين كنه كه به كدون بخش دسترسي داشته باشن . من گيج شدم . از كد هايي كه نوشتين . ميشه يه بار از اول بگين من چه طوري يوزر و پسوردمو چك كنم ؟

Sajjad.Aghapour
پنج شنبه 31 مرداد 1387, 18:21 عصر
نگاه کن.صرفه نظر از اون چیزی که شما می خواین و بدون در نظر گیری استاندارد 3 لایه نویسی می تونید این طوری اون رو چک کنید.
من جدولی دارم به نام members که دارای دو فیلد به نامهای username , pass هست.


SqlConnection conn = new SqlConnection("server=(local);database=login;integrated security=true");

SqlCommand cmd = new SqlCommand("select * from members where username=@user and pass=@pass", conn);

cmd.Parameters.AddWithValue("@user", txtUID.Text);
cmd.Parameters.AddWithValue("@pass", txtPass.Text);

خوب تا اینجا که معلومه چه کار کردم.همه فیلدها رو از دیتابیس login و جدول members انتخاب کردم در حالی مقدار فیلد username رو برابر متنی گذاشتم که کاربر در textBox مربوط به اسم کاربری وارد می کنه و مقدار فیلد Pass رو برابر رمز.


conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
MessageBox.Show("true");
else
MessageBox.Show("false");
reader.Close();
conn.Close();

در اینجا یه SqlDataReader برای خوندن اطلاعات تعریف میشه که دستورات مربوط به SqlCommand اجرا شده و نتیجه این دستورات در اون ریخته میشه.حالا با یه شرط که اگه reader بتونه اطلاعات رو بخونه(یعنی یه همچین کاربری با همچین کلمه عبوری وجود داشته باشه) یه پیغام حاوی true نمایش داده میشه.(که در اینجا باید کاربر به صفحه مربوطه راهنمایی بشه).
البته دوست عزیز این کد باید به صورت سه لایه نوشته بشه.(لایه های PL(Presentation Layer),BLL(Businnes Logic Layer),DAL(Data Access Layer)).می تونی در موردش این پست رو ببینی
http://barnamenevis.org/forum/showpost.php?p=349649&postcount=2
نمونه برنامه هم در این مورد توی سایت هست.می تونی از همون لینکی که man4toman معرفی کرد یکیشو بگیری.
موفق باشی.......