PDA

View Full Version : چطور میشه فهمید از یک برنامه,جز روشهای اصلی خود برنامه خارج شده ایم



kuchulu
پنج شنبه 26 آبان 1390, 08:57 صبح
من یک برنامه winapp نوشتم که کاربرام با user و pass وارد سیستم میشن و در هر زمان هر نام کاربری فقط یک بار میتونه فعال باشه
تو دیتابیسم یک فیلد دارم که اگر کاربری وارد شد مقدارش 1 میشه و نشون دهنده کاربران فعال هستش
و اگر دکمه خروج برنامه رو بزنه این مقدار 0 میشه
حالا اگر به هر دلیلی از روشی جز روش خروج اصلی برنامه,برنامه پایان یابد اون مقدار 1 میمونه
و در ورود بعدی به کاربر گفته میشه که فعال است و اجازه ورود نمیده.
چطور میتونم این مشکل رو حل کنم
برنامه ام رو با زبان c# و دیتابیسم هم sql server 2008

Pouyan2010
جمعه 27 آبان 1390, 12:09 عصر
خوب چرا این مقدار رو تو ی یک فایل 0و1 نمی کنی. اینجوری چیزی تو حافظه نمی مونه

سوداگر
جمعه 27 آبان 1390, 22:28 عصر
من یک برنامه winapp نوشتم که کاربرام با user و pass وارد سیستم میشن و در هر زمان هر نام کاربری فقط یک بار میتونه فعال باشه
تو دیتابیسم یک فیلد دارم که اگر کاربری وارد شد مقدارش 1 میشه و نشون دهنده کاربران فعال هستش
و اگر دکمه خروج برنامه رو بزنه این مقدار 0 میشه
حالا اگر به هر دلیلی از روشی جز روش خروج اصلی برنامه,برنامه پایان یابد اون مقدار 1 میمونه
و در ورود بعدی به کاربر گفته میشه که فعال است و اجازه ورود نمیده.
چطور میتونم این مشکل رو حل کنم
برنامه ام رو با زبان C#‎ و دیتابیسم هم sql server 2008

چه لزومی داره که توی دیتابیس و فایل و امثال اینها ذخیره بشه؟!!
خوب یه کلاس استاتیک برای کنترل کردن لاگین بساز و یه متغیر بولین برای ورود و خروج، در نظر بگیر. اینطوری اصلا نیاز نیست به نحوه خروج کاربر فکر کنید.
موفق باشید.

kuchulu
یک شنبه 29 آبان 1390, 09:35 صبح
چه لزومی داره که توی دیتابیس و فایل و امثال اینها ذخیره بشه؟!!
خوب یه کلاس استاتیک برای کنترل کردن لاگین بساز و یه متغیر بولین برای ورود و خروج، در نظر بگیر. اینطوری اصلا نیاز نیست به نحوه خروج کاربر فکر کنید.
موفق باشید.

میشه بیشتر توضیح بدید!

zarrinnegar
یک شنبه 29 آبان 1390, 09:51 صبح
روشی که خودت در نظر داری درسته چرا که ممکنه با یک سیستم دیگه کسی با این user بخواد لاگین کنه

و چون ممکنه سیستم مثلا ریست بشه خوب دیتابیس رو همون 1 میمونه و سیستم فکر میکنه کاربر هنوز روی سیستمه

به نظر من باید 2 راه ترکیبی استفاده کنی
اول بیای برنامه رو چک کنی که یکی بیشتر روی هر کامپیوتر اجرا نشه سرچ کنی کد هاشو پیدا میکنی
دوم اینکه توی دیتابیست یک فیلد اضافه کنی که نام کامپیوتر رو ذخیره کنه
حالا اگه یه هو سیستم ریست هم بشه و طرف رو همون سیستم بخواد برنامه رو اجرا کنه چک میکنی اگه سیستم 1 بود و نام کامپیوتر همون کامپیوتر بود میگی ادامه بده و اجرا شه ولی غیر از این بود که بقیه ماجرا

سوداگر
یک شنبه 29 آبان 1390, 10:14 صبح
میشه بیشتر توضیح بدید!
من در اینجا (http://barnamenevis.org/showthread.php?314049-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%84%D8%A7%DA%AF%DB%8C%D9%86)نحوه ساختن لاگین با رجیستری رو گفتم ولی سوال شما یه چیز دیگه هست.
ببینید شما میخواهید یک متغیری داشته باشید که از روی آن بفهمید که کاربر الان وارد سیستم شده یا کسی لاگین نشده و کس دیگری میتواند لاگین شود.
خوب شما یک فایل کلاس به پروژه تون اضافه کنید(مثلا با نام Login). قبل از تعریف کلاس، از کلمه Public Static استفاده کنید تا در تمام نقاط برنامه به آن متغیری که گفتم دسترسی داشته باشید. حالا داخل این کلاس، یک متغیر از نوع Public Static تعریف کنید مثلاً:

public static class login
{
public static boolean logged=false;
}

فقط کافی است که موقع لاگین شدن کاربر، چک کنیم که آیا login.logged==false یا خیر و در هنگامی که کاربر، از سستم خارج شد آنرا False میکنیم. اگر که کاربر، به هر روشی از برنامه خارج شود، این کلاس نیز دوباره ساخته شده و مقدار آن True نمی ماند.

zarrinnegar
یک شنبه 29 آبان 1390, 12:37 عصر
من در اینجا (http://barnamenevis.org/showthread.php?314049-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%84%D8%A7%DA%AF%DB%8C%D9%86)نحوه ساختن لاگین با رجیستری رو گفتم ولی سوال شما یه چیز دیگه هست.
ببینید شما میخواهید یک متغیری داشته باشید که از روی آن بفهمید که کاربر الان وارد سیستم شده یا کسی لاگین نشده و کس دیگری میتواند لاگین شود.
خوب شما یک فایل کلاس به پروژه تون اضافه کنید(مثلا با نام Login). قبل از تعریف کلاس، از کلمه Public Static استفاده کنید تا در تمام نقاط برنامه به آن متغیری که گفتم دسترسی داشته باشید. حالا داخل این کلاس، یک متغیر از نوع Public Static تعریف کنید مثلاً:

public static class login
{
public static boolean logged=false;
}

فقط کافی است که موقع لاگین شدن کاربر، چک کنیم که آیا login.logged==false یا خیر و در هنگامی که کاربر، از سستم خارج شد آنرا False میکنیم. اگر که کاربر، به هر روشی از برنامه خارج شود، این کلاس نیز دوباره ساخته شده و مقدار آن True نمی ماند.

دوست عزیز
ایشون برنامه رو وقتی تحت شبکه اجرا میکنه چطوری بیاد و روی کامپیوتر دیگه رجیستری رو چک کنه و یا متغییر رو چک کنه که true یا false ؟
این مواردی رو که گفتید فقط روی همون سیستم قابل کنترله

البته تا اونجایی که من فهمیدم

سوداگر
دوشنبه 30 آبان 1390, 00:22 صبح
دوست عزیز
ایشون برنامه رو وقتی تحت شبکه اجرا میکنه چطوری بیاد و روی کامپیوتر دیگه رجیستری رو چک کنه و یا متغییر رو چک کنه که true یا false ؟
این مواردی رو که گفتید فقط روی همون سیستم قابل کنترله

البته تا اونجایی که من فهمیدم
دقت نکردی دوست عزیز من در ادامه رجیستری گفتم : "ولی سوال شما یه چیز دیگه هست."
ایشون گفتن تحت شبکه؟!!!

zarrinnegar
دوشنبه 30 آبان 1390, 00:34 صبح
من یک برنامه winapp نوشتم که کاربرام با user و pass وارد سیستم میشن و در هر زمان هر نام کاربری فقط یک بار میتونه فعال باشه

این یعنی کاربرام توی شبکه

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