PDA

View Full Version : من از کجا بفهمم کاربرم logout نکرده پنجره رو بسته



hamed_bostan
پنج شنبه 25 اسفند 1384, 18:03 عصر
باسلام .
من هنگام login کاربر id , ip اون ذو داخل دیتا بیسم ذخیره می کنم (روشی که فکر کنم اقای حامد محمدی توی یکی از تاپیک ها گفته بودن) تا تعداد و مشخصات کاربران آنلاینم رو داشته باشم تو بلوک session_Start نوشتمش و توی session_end هم کد حذف اون id , ip رو نوشتم . insrert می کنه توی دیتا بیس اما پاک مکیکنه . من چیکار کنم و ضمنا اگر من این کار رو توی session_Start نذارم و وقتی طرف login کرد این کار رو بکنم اگر طرف logout نکرده صفحه explorer رو بست من چطوری بفهمم که اون رفته و از سایت خارج شده . از session هم نمی خوام استفاده کنم .

منون می شم کامل راهنماییم کنید

manager
جمعه 26 اسفند 1384, 01:28 صبح
چرا باید وقتی یه کاربر login کرد بعد از ذخیره اطلاعات اون کاربر online چیزی از بانک حذف کنید و به event پایان کار کاربر احتیاج دارید !؟؟؟

hamed_bostan
جمعه 26 اسفند 1384, 10:42 صبح
من یه پروژه آزمون الکترونیکی دستم هست که مال سازمان فنی حرفه ای هست . کاربرا میان امتحان میدن و میرن .می تونن هم توی قسمت گزارشات گشت و گذار کنن و موقعیت درسی و نمرات و نتایج امتحاناتشون رو ببینند . 1- مب خوام یه کاربر از 2 جا یا بیشتر نتونه login کنه یعنی با یه یوزر نشه از چند تا station لوگ این کرد . دوما می خوام کاربر با صفحه و بدون logout کردن هم خود به خود logout بشه و session اون از بین بره و نیازی به سپری شدن timeout سشن نباشه . 2- تعداد کاربرای فعال رو بتونم داشته باشم با طبقه بندی role .یعنی بدونم کدوم کاربر با چه وضعیتی الان انلاین هستش. و در اخر اینکه log گیری کنم از ورود وخروج ها که اگه دانشجویی روی زمان امتهان یا ... لعتراضی داشت بتونم مستند حرف بزنم .
ممنوم از توجهتون . البته خودم به یه نتایج دلچسبی رسیدم واگه جواب بده می ذارم همین جا

iekrang
جمعه 26 اسفند 1384, 11:31 صبح
میتونید برای اینکار هنگام ورود کاربرها ip اون رو توی جدول ذخیره کنید.و چک کنید که ip تکراری اضافه نشه.و هنگام خروج اون کاربر رو از جدول حذف کنید.

hamed_bostan
جمعه 26 اسفند 1384, 15:47 عصر
میتونید برای اینکار هنگام ورود کاربرها ip اون رو توی جدول ذخیره کنید.و چک کنید که ip تکراری اضافه نشه.و هنگام خروج اون کاربر رو از جدول حذف کنید.

دوست عزیز شما اصلا تاپیک اول منو خوندین؟!؟!؟!

iekrang
جمعه 26 اسفند 1384, 17:44 عصر
بله حق باشماست نخوانده بودم:ی
دقیقاً این کاریه که من برای فروشگاه مجازی با کمک دوستان انجام دادم.البته شاید دیده باشید...
http://www.barnamenevis.org/forum/showthread.php?t=29768&highlight=%DD%D1%E6%D4

manager
شنبه 27 اسفند 1384, 07:35 صبح
البته من راه کار دوستمون برای فروشگاه مجازی رو نخوندم ولی می تونید هر بار که کاربر پنجره خودش رو بست یه پیغام بفرستید به سرور برای این کار هم می تونید از واقعه ی onunload شیئی window استفاده کنید. اتفاقا این کار با asp.net خیلی ساده ست و شما می تونید هر بار که کاربر پنجره خودش رو بست حالا شناسه دستگاه هر چی هست رو به سرور گزارش بدین..

دو حالت پیش می یاد یا کاربر پنجره خودش رو می بنده که شما متوجه می شوید یا نمی بنده و disconnect می کنه که در این حالت session شما اوتوماتیک expire می شه.

اگر خواستید کدشو من براتون می نویسم..

hamed_bostan
شنبه 27 اسفند 1384, 09:09 صبح
با سلام کدشو بذارین داخل تاپیک که بد نیست شاید دیگران هم استفاده کنند اما من خیلی تو اینترنت گشتم . بهترین روش همون session_tart و session_end هست و فکر می کنم بهتره استاندارد عمل کنیم . وبی خوب هر کسی بسته به سلیقه و برنامه اس می تونه هر طور دوست ذاره برخورد کنه . به هر حال از همراهی شما ممنونم

nazaninam
سه شنبه 01 فروردین 1385, 01:49 صبح
این دقیقا مثل قضیه کاربران آنلاین هست جناب راد توضیح کامل دادن یه سرچ کنید بد نیست
در ضمن این که می گید Ip تکراری.... اصلا جالب نیست چون اگه دقت کنید اکثر ارگان ها که از یک سرور dhcp استفاده می کنن با Ip یکسان کانکتن و وقتی از چند جای اون ارگان به سایت شما وصل شن ip های یکسان برای شما ارسال میشه... موفق باشید

hamed_bostan
سه شنبه 01 فروردین 1385, 12:13 عصر
شما می تونید با یه تیکه کد چک کنید اگر ip اصلی هست که استفاده کنید در غیر اینصورت Ip پشن سرور رو به دست بیارید




Dim ClientIPAdress As String = ""
ClientIPAdress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If ClientIPAdress = Nothing Then
ClientIPAdress = Request.ServerVariables("REMOTE_ADDR")
End If

nazaninam
سه شنبه 01 فروردین 1385, 20:04 عصر
مرسی حامد جان جالب بود به کارم اومد

iekrang
پنج شنبه 03 فروردین 1385, 01:43 صبح
این راه حل فقط زمانی جواب میده که پروکسی ست شده باشه و برایnat ( Network address translation ) جواب نمیده.

hamed_bostan
پنج شنبه 03 فروردین 1385, 10:14 صبح
این راه حل فقط زمانی جواب میده که پروکسی ست شده باشه و برایnat ( Network address translation ) جواب نمیده.

خوب.راه حل بدین . منتظریم

iekrang
پنج شنبه 03 فروردین 1385, 13:14 عصر
والا خیلی گشتم، ولی فکر میکنم یه راهش اینه که یه Activex یا java بنویسی روی کلاینت که IP رو برگردونه!شاید بقیه دوستان راهی رو بلدند،به هرحال اگر پیداش کردم حتماً مینویسم.

General-Xenon
پنج شنبه 20 اسفند 1388, 04:48 صبح
سلام....!
این کار خیلی سادست....


وقتی می خوای یک یوزر رو اسمشو در بیاری چجوری عمل میکنی......!
توی همون کلاس ، یک کلاس دیگه داره که میتونه چک کنه....خودش اینکاره برات می کنه....
اگر خواستی تغییراتی هنگام بستن ( Log out ) داشته باشی کافیه یک کلاس برای Sesion End یا Loguot Button بنویسی....