PDA

View Full Version : مبتدی: تشخیص لاگین بودن کاربر



sldvhlds
دوشنبه 23 مرداد 1396, 21:03 عصر
با سلام یک برنامه با دیتابیس SQL تحت شبکه دارم که همزمان چند تا کلاینت به سرور وصل شده واطلاعاتی رو توی سرور ذخیره میکنند سوالی که دارم در برنامه چطوری تشخیص بدم که یک کاربر لاگین کرده یا نه واگه کاربرلاگین بود اجازه ورود نداشته باشه یا به عبارت بهتر یک کاربر خاص اجازه لاگین از چند تا کلاینت نداشته باشه ممنون

رامین مرادی
سه شنبه 24 مرداد 1396, 08:40 صبح
با سلام یک برنامه با دیتابیس SQL تحت شبکه دارم که همزمان چند تا کلاینت به سرور وصل شده واطلاعاتی رو توی سرور ذخیره میکنند سوالی که دارم در برنامه چطوری تشخیص بدم که یک کاربر لاگین کرده یا نه واگه کاربرلاگین بود اجازه ورود نداشته باشه یا به عبارت بهتر یک کاربر خاص اجازه لاگین از چند تا کلاینت نداشته باشه ممنون

شما میتونید وقتی کاربر لاگین کرد مشخصاتشو ذخیره کنی .
حالا هر بار که داره لاگین میکنه بری و آخرین لاگین طرف رو نگاه کنی و ببینی آیا زمان خروج براش ثبت شده یا نه. اگه ثبت شده باشه که میتونی اجازه بدی وارد برنامت بشه اگه هم زمان خروج ثبت نشده باشه بگی که این کاربر در حال استفاده هست. و هر وقت که طرف دکمه خروج رو زد بری و آخرین لاگین رو پیدا کنی و فیلد زمان خروج رو براش مقدار دهی کنی.
البته این روش مشکلاتی هم داره که باید پیش بینیش کنی (مشکلاتی که احتمالش هست زمان خروج ثبت نشه)مثلا:
1-طرف لاگین کرد اما برنامه رو از طریق غیر معمول بست مثل بستن پروسس
2-طرف لاگین کرد اما برقا رفت
3-طرف لاگین کرد اما از برنامه خارج نشد و خطایی پیش اومد و پرسس برنامه بسته شد
4-طرف لاگین کرد اما برنامه و سیستم کرش کرد و مجبور به ریستارت شد
و کلی احتمالات دیگه ....


من خودم همچین کاری کرده بودم اما شدید اذیت میکرد. دم به دقیقه مجبور بودم مستقیم دیتا بیس رو دستکاری کنم.
البته میشه همه احتمالات رو هم چک کردو براشون کاری انجام داد ولی حوصله من نکشید:لبخند:

iceweek
سه شنبه 31 مرداد 1396, 19:21 عصر
کلا این کار خیلی دردسره ولی دم دسترین راه اینه یه تایمر بزاری و یک دقیقه یک بار زمان حال را توی ردیف یوزر توی دیتابیس اپدیت کنی.پس اگر کاربری برقش هم بره اگر زمان حال با زمان اخرین اپدیت بیشتر از یک دقیقه فاصله داشت یعنی کاربر لاگین نیست

sldvhlds
دوشنبه 20 شهریور 1396, 12:57 عصر
سلام دوستان تاپیک رو مجددا بالا میارم چون یک مطلب خیلی مهمی هست که تقریبا هر برنامه تحت شبکه ای به یک صورتی باهاش درگیره از دوستان واساتید گرامی خواهش میکنم اگر کسی راه حلی داره باکد وسایر تفصیلات ارائه بده متشکر

رامین مرادی
دوشنبه 20 شهریور 1396, 13:06 عصر
سلام دوستان تاپیک رو مجددا بالا میارم چون یک مطلب خیلی مهمی هست که تقریبا هر برنامه تحت شبکه ای به یک صورتی باهاش درگیره از دوستان واساتید گرامی خواهش میکنم اگر کسی راه حلی داره باکد وسایر تفصیلات ارائه بده متشکر

دوست عزیزمون یه راه حل برای مشکلاتی که من گفتم رو ارائه داد . اونم اینه که اگه برنامه باز باشه بره و زمان اون لحظه رو در ردیف مربوط به اون کاربر ثبت کنه. و اینکار تو بازه زمانی مثلا یک دقیقه انجام بشه.

حالا کاربر اگه برنامه ش بسته بشه به هر دلیلی اون زمان دیگه آپدیت نمیشه.

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

FastCode
سه شنبه 21 شهریور 1396, 02:50 صبح
فقط حواست به sleep سیستم عامل و dc شبکه باشه.

sldvhlds
سه شنبه 21 شهریور 1396, 11:22 صبح
فقط حواست به sleep سیستم عامل و dc شبکه باشه. دقیقا من فکر میکنم موضوع به همین سادگی هم نیست وجوانب زیادی رو باید در نظر گرفت وگرنه باید یک نفر شب روز کنار سرور بخوابه

رامین مرادی
سه شنبه 21 شهریور 1396, 11:41 صبح
دقیقا من فکر میکنم موضوع به همین سادگی هم نیست وجوانب زیادی رو باید در نظر گرفت وگرنه باید یک نفر شب روز کنار سرور بخوابه

من همین موضوع رو پیاده کردم. رو سیستم و داره به خوبی اجرا میشه. موقع لاگین آخرین فعالیت ثبت شده کاربر رو چک میکنم اگه کمتر از بیست ثانیه بود میگم کاربر هنوز تو سیستمه اگه بیشتر بود یعنی برنامه یا بسته شده یا کاربر خارج شده . مشکلی هم پیش نیومده تا حالا