PDA

View Full Version : سیستم لاگین



Masoomeh.H
جمعه 27 آبان 1390, 18:16 عصر
سلام
می دونم موضوعم تکراریه ولی با اینکه توی تاپیک ها سرچ کردم نتونستم فایل های موجود برای لاگین به سیستم رو دانلود کنم(اغلب برای سال 89 بودن و اصل فایل پاک شده بود)
اساتید محترم به من کمک کنید یه سیستم لاگین بنویسم. اصلا نمی دونم باید چه شکلی کار کنم :گریه:

2ndesigner
جمعه 27 آبان 1390, 18:46 عصر
اینجا (http://www.codeproject.com/KB/miscctrl/Application_Login.aspx) کلیک کن

شاید کمکت کنه

2ndesigner
جمعه 27 آبان 1390, 18:50 عصر
اگه user pass می خواد اینو وارد کن
email:
email@emeil.ir
pass:
as123

s3rv3r
جمعه 27 آبان 1390, 19:43 عصر
سلام
می دونم موضوعم تکراریه ولی با اینکه توی تاپیک ها سرچ کردم نتونستم فایل های موجود برای لاگین به سیستم رو دانلود کنم(اغلب برای سال 89 بودن و اصل فایل پاک شده بود)
اساتید محترم به من کمک کنید یه سیستم لاگین بنویسم. اصلا نمی دونم باید چه شکلی کار کنم :گریه:

سيستم لاگين :
يه جدل بساز به اسم users كه سه تا فيلد داره id - uname - upass
حالا يه فرم درست كن كه يوزر پس بخواد.

بقيش T SQL هستش. اگه بلد نيستيد اول بايد T SQL رو يادبگيري بعد بيايي سراغ برنامه نويسي



Select id,uname,upass from tbl where uname='' and upass=""

نتيجه اين كوئري رو بريز تو Datatable بعد


if(dt.rows.count==1)
{
//Login
}


اون id,uname,pass هم بعدها ميفهمي به چه دردت ميخورن.
براي پسورد عوض كردن پسورد قبلي رو لازم داري البته دلبخواهي هستش
uname صرفا جهت نمايش كه ديگه كوئري نزني از رو Id در بياري
id هم براي ثبت كردن يه چيزي كه مشخص بشه اين كاربر ثبت كرده

zarrinnegar
جمعه 27 آبان 1390, 21:18 عصر
نظر های مختلفی برای نوشتن سیستم لاگین وجود داره

چند تا سوال هست که باید جواب داده بشه
1 - ورود به سیستم برای یک application هست یا برنامه چند تا application داره؟ مثل ورود به برنامه ای که هم حسابداری داره هم چک داره هم حقوق و دستمزد و ...
2 - با ورود به سیستم کنترلی روی منوها و سایر فرم های سیستم داشته باشه یا نه؟ یعنی کاربر مجوز استفاده از برنامه هارو داشته باشه یا نه
3 - اگه رمز عبور فراموش شد تو صفحه لاگین بتونه رمز خودشو بدست بیاره یا نه
4 - ...

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

Masoomeh.H
جمعه 27 آبان 1390, 22:12 عصر
از دوستان ممنون که کمکم کردند
zarrinnegar: فقط بتونه وارد سیستم بشه البته خود برنامه از 3 تا فرم تشکیل شده که یکیش فرم لاگین هست و بقیه فرم های خود برنامه.
متاسفانه SQl رو هم بلد نیستم
اگه یه کمکی بکنید ممنون می شم

zarrinnegar
جمعه 27 آبان 1390, 22:25 عصر
ساده ترین بدون sql و دیتابیس


if ( textbox1.text == "Ali" )
if ( textbox2.text == "1234")

messagebox.show("خوش آمدید");
else
{
messagebox.show("ورود ناموفق");
this.close();
}


نمیدونم sql چقدر بلدی بهتر توضیح بدم

MaHyaR.DrAcOulA
جمعه 27 آبان 1390, 22:47 عصر
zarrinnegar :
اگه بخواد تاثیر بر یه سری از کنترل ها و فرم ها بذاره چیکار باید کنیم ؟؟؟

zarrinnegar
جمعه 27 آبان 1390, 22:53 عصر
اون وقت مثلا میخوای فرم 2 توسط علی باز شه و فرم 3 توسط مریم

میشه

form frm1 = new form2();
if (textbox1.text=="Ali")
frm1.show();

form frm2 = new form3();
if (textbox1.text=="maryam")
frm2.show();

Masoomeh.H
جمعه 27 آبان 1390, 23:21 عصر
ببینید من اصلا sql بلد نیستم ولی اگه توضیح بدین زودی یاد می گیرم. تازه باید قابلیت تغییر یوزر و پسورد هم وجود داشته باشه
ممنون می شم اگه کمکم کنید

MaHyaR.DrAcOulA
جمعه 27 آبان 1390, 23:22 عصر
نه منظورم فعال و غیر فعال کردن یه سری کنترل ها و فرم ها برای کاربران زیاده
مثلا ما 1000 کاربر داریم و بخوایم که به عنوان مثال 50 نفر پرسنل دسترسی به همه فرم ها و کنترل ها داشته باشن
و بقیه که کاربر عادی هستن دسترسی به فرم ها و کنترل ها محدود بشه
راهی هست؟؟؟

zarrinnegar
جمعه 27 آبان 1390, 23:24 عصر
راه که هست ولی یخورده مفصله

MaHyaR.DrAcOulA
جمعه 27 آبان 1390, 23:25 عصر
میشه بی زحمت یه توضیحی بدین ؟؟؟

h-rafiee
جمعه 27 آبان 1390, 23:27 عصر
یکی از راهها چک کردن کد آیدی هنگام لود فرمها است مثلا شماره کارمند عادی از 1000 تا 5000 اِ اما کاربرهای ارشد کد مرکب از ارقام و حروف دارن.
بعد دگ .Enable=true اِ و بس

Masoomeh.H
جمعه 27 آبان 1390, 23:30 عصر
راه حلی برای من هم هست/؟؟؟؟

wolf_majid
جمعه 27 آبان 1390, 23:34 عصر
نه منظورم فعال و غیر فعال کردن یه سری کنترل ها و فرم ها برای کاربران زیاده
مثلا ما 1000 کاربر داریم و بخوایم که به عنوان مثال 50 نفر پرسنل دسترسی به همه فرم ها و کنترل ها داشته باشن
و بقیه که کاربر عادی هستن دسترسی به فرم ها و کنترل ها محدود بشه
راهی هست؟؟؟


این یک مثال
private void button1_Click(object sender, EventArgs e)
{
Users objUser = new Users();
switch (objUser.userAccess)
{
case Access.user:
//محدودیت های مورد نظر اعمال شود
break;
}
}

private enum Access
{
admin,
manager,
personel,
user
//و غیره
};

private struct Users
{
/// <summary>
/// نام کاربر
/// </summary>
public string name;
public string family;
public int id;
public Access userAccess;
};

wolf_majid
جمعه 27 آبان 1390, 23:40 عصر
ببینید من اصلا sql بلد نیستم ولی اگه توضیح بدین زودی یاد می گیرم. تازه باید قابلیت تغییر یوزر و پسورد هم وجود داشته باشه
ممنون می شم اگه کمکم کنید

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

Masoomeh.H
جمعه 27 آبان 1390, 23:48 عصر
شما از بانکی برای ذخیره کاربران استفاده کرده اید ؟
اگر نکردید :
آیا کاربران سیستمتون مشخص و محدودند ؟

فقط یکی کاربر وجود داره.

h-rafiee
شنبه 28 آبان 1390, 00:10 صبح
فقط یکی کاربر وجود داره.

خوب از دستور if استفاده کن

if(textbox1.text=="123")
{
from2 x=new form2();
x.showdialog();
}
else
...

سوداگر
شنبه 28 آبان 1390, 01:04 صبح
ببینید من اصلا sql بلد نیستم ولی اگه توضیح بدین زودی یاد می گیرم. تازه باید قابلیت تغییر یوزر و پسورد هم وجود داشته باشه
ممنون می شم اگه کمکم کنید

فقط یکی کاربر وجود داره.
اگه فقط یکی دو کاربر داری از رجیستری ویندوز استفاده کن. من لاگین پروژه پایانیم رو با خوندن و نوشتن توی رجیستری نوشتم. فقط کافیه خوندن و نوشتن از رجیستری رو بلد باشی.
موفق باشی.

Masoomeh.H
شنبه 28 آبان 1390, 07:44 صبح
اگه فقط یکی دو کاربر داری از رجیستری ویندوز استفاده کن. من لاگین پروژه پایانیم رو با خوندن و نوشتن توی رجیستری نوشتم. فقط کافیه خوندن و نوشتن از رجیستری رو بلد باشی.
موفق باشی.

می شه یه مقدار توضیح بدید؟؟؟

سوداگر
شنبه 28 آبان 1390, 22:17 عصر
می شه یه مقدار توضیح بدید؟؟؟
البته!
ببینید، شما برای اینکه یک لاگین داشته باشید، نیاز دارید که رمز عبورتان را جایی ذخیره کنید که کاربر به سادگی، آن را پیدا نکند. برای اینکه از رجیستری استفاده کنید باید دستور خواندن و نوشتن روی رجیستری را بلد باشید + کارهای ابتکاری دیگری که برای جلوگیری از رویت کلمه عبورتان انجام میدهید.
این فایل را ضمیمه کردم.

"فایل ضمیمه حذف شد، کدها را در پست 24 گذاشتم"

به این صورت عمل میشه که اول آدرسی رو که میخوای پسورد رو توش ذخیره کنی، چک میشه، اگه چیزی نوشته نشده بود که خودت یه پسورد و یه یوزر بهش میدی.
توجه:
موقع خواندن آدرس اشتباه، Exception روی میدهد، از این خاصیت استفاده کردم تا بفهمم که برنامه برای بار اول است که اجرا میشود یا نه. اگر بار اول بود، یوزر و پسورد خودم رو توی رجیستری مینویسم و اگر کلید، وجود داشت یعنی ما قبلا آنرا ایجاد کرده ایم(حداقل یکبار برنامه اجرا شده که این کلید در رجیستری هست).
پس در قسمت Try، کد خواندن یوزر و پسورد قرار میگیرد و در قسمت Catch، کد نوشتن در رجیستری.
منظورم از کارهای ابتکاری دیگری که برای جلوگیری از رویت کلمه عبورتان انجام میدهید این بود که میتوانی با استفاده از توابعی مثل GetHashCode، یوزر و پسورد رو بصورت ناخوانا در رجیستری ذخیره کنی و موقع خوندن پسورد از PasswordBox، تابع GetHashCode رو فراخوانی کنید.
boolean isUser=(passwordBox1.Password.GetHashCode()==int.P arse(PasswordKey));
if(isUser)
{
//Show Form
}

یا اینکه مثلاً اسم Key ایجاد شده را یک نام تابلو نگذارید (شماره سریال CPU خوب چیزیه!)
موفق باشید.

Masoomeh.H
شنبه 28 آبان 1390, 23:30 عصر
البته!
ببینید، شما برای اینکه یک لاگین داشته باشید، نیاز دارید که رمز عبورتان را جایی ذخیره کنید که کاربر به سادگی، آن را پیدا نکند. برای اینکه از رجیستری استفاده کنید باید دستور خواندن و نوشتن روی رجیستری را بلد باشید + کارهای ابتکاری دیگری که برای جلوگیری از رویت کلمه عبورتان انجام میدهید.
این فایل را ضمیمه کردم.

ببخشین فایل دانلودنمی شه
اگه امکانش هست دوباره آپ کنید
ممنون

سوداگر
یک شنبه 29 آبان 1390, 00:02 صبح
حالا نخواستی دانلودش کنی یه نگاه به این کدا بنداز:
اول :
using Microsoft.Win32;
دوم:
public partial class LoginWindow : Window
{
public LoginWindow()
{
InitializeComponent();
}
//Define Public variables

string strManagerUsername,strManagerPassWord, strPath,strEmployeeUsername,strEmployeePassword;

private void btnOK_Click(object sender, RoutedEventArgs e)
{
try
{
strPath = "Computer\\HKEY_USERS\\MyKey";
RegistryKey regKeyApp = Registry.CurrentUser.OpenSubKey(strPath);
strManagerUsername = (string)regKeyApp.GetValue("ManagerUsername");
strManagerPassWord = (string)regKeyApp.GetValue("ManagerPassword");
strEmployeeUsername = (string)regKeyApp.GetValue("EmployeeUsername");
strEmployeePassword = (string)regKeyApp.GetValue("EmployeePassword");
if (passwordBox.Password == strManagerPassWord && userNameBox.Text == strManagerUsername)
{

//Show Main Form Or SplashScreen (Manager Access)

}
else if (strEmployeeUsername == userNameBox.Text && strEmployeePassword == passwordBox.Password)
{

//Show Form Or SplashScreen (User Access)

}
else
{

MessageBox.Show("نام کاربری یا رمز عبور صحیح نیست", "هشدار", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
catch
{
strPath = "Computer\\HKEY_USERS\\MyKey";

strManagerUsername = "sa";
strManagerPassWord = "da";
strEmployeePassword = "da";
strEmployeeUsername = "sa";
RegistryKey regKeyAppRoot = Registry.CurrentUser.CreateSubKey(strPath);

regKeyAppRoot.SetValue("ManagerUsername", strManagerUsername);
regKeyAppRoot.SetValue("ManagerPassword", strManagerPassWord);
regKeyAppRoot.SetValue("EmployeeUsername", strEmployeeUsername);
regKeyAppRoot.SetValue("EmployeePassword", strEmployeePassword);
MessageBox.Show("شما می توانید با\nنام کاربری: sa\nرمز عبور: da\nوارد شوید","توجه! توجه!",MessageBoxButton.OK);

//Show Form with Manager Access
}
}

private void btnCancel_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}