PDA

View Full Version : سوال: لیست سشن تمام کاربران



explod_javad
یک شنبه 26 آبان 1387, 11:19 صبح
با سلام خدمت همه دوستان.
هرکاربر که یک صفحه رو از سرور درخواست میکنه یک session درسرو براش ایجاد میشه.یا اگر یک مقدر رو در یک sesion قرار میده فقط مال خودشه و کاربران دیگر به اون دسترسی ندارند.

حالا کسی میدونی که چطور میشه لیست session های تولید شده توسط تمام کاربران را بدست آورد(تمام سشن های ایجاد شده روی سرو)

Saber_Fatholahi
یک شنبه 26 آبان 1387, 11:41 صبح
با سلام خدمت همه دوستان.
هرکاربر که یک صفحه رو از سرور درخواست میکنه یک session درسرو براش ایجاد میشه.یا اگر یک مقدر رو در یک sesion قرار میده فقط مال خودشه و کاربران دیگر به اون دسترسی ندارند.

حالا کسی میدونی که چطور میشه لیست session های تولید شده توسط تمام کاربران را بدست آورد(تمام سشن های ایجاد شده روی سرو)
سلام آملی ریکا
میشه توضیح بیشتری بدی که می خوای چیکار لیست سشن هارو شاید راه بهتری هم باشه

kiosksoft
یک شنبه 26 آبان 1387, 13:20 عصر
سلام آملی ریکا
میشه توضیح بیشتری بدی که می خوای چیکار لیست سشن هارو شاید راه بهتری هم باشه
دوست عزیز
مثلا برای تشخیص کاربرانی که اکنون آنلاین هستن.

Saber_Fatholahi
یک شنبه 26 آبان 1387, 14:19 عصر
خوب برای تشخیص کاربران آنلاین شما می تونین از کلاس های خود دات نت استفاده کنین لیست کاربران رو بگیر هر کاربری که توی سایت بود اسمش به لیستت اضافه کن من توی پروژه ای که گذاشتم روی سایت همین کارو کردم

kiosksoft
یک شنبه 26 آبان 1387, 14:30 عصر
چطور تشخیص بدم یک کاربر session دارد یا خیر یا تو سایت هست یا خیر ؟

Saber_Fatholahi
یک شنبه 26 آبان 1387, 15:13 عصر
چطور تشخیص بدم یک کاربر session دارد یا خیر یا تو سایت هست یا خیر ؟

دوست عزیز این کدش



string UserList = "";
MembershipUser user = Membership.GetUser(username);
if (user.IsOnline == true)
UserList += username + ";";



حالا فقط کافیه لیست کل یوزر هاتو با دستور
Membership.GetAllUsers()

بدست بیاری و توی کد بالا باهاش کار کنی

Saber_Fatholahi
یک شنبه 26 آبان 1387, 15:25 عصر
با سلام خدمت همه دوستان.
هرکاربر که یک صفحه رو از سرور درخواست میکنه یک session درسرو براش ایجاد میشه.یا اگر یک مقدر رو در یک sesion قرار میده فقط مال خودشه و کاربران دیگر به اون دسترسی ندارند.

حالا کسی میدونی که چطور میشه لیست session های تولید شده توسط تمام کاربران را بدست آورد(تمام سشن های ایجاد شده روی سرو)

دوست من احتمالا جوابت از اینجا (http://www.codeproject.com/KB/session/) می تونی بگیری

hassanf
یک شنبه 26 آبان 1387, 15:40 عصر
Session هر کاربر رو فقط خودش می تونه استفاده کنه و اصلا از دلایل ایجاد session همینه که اطلاعات کسی رو کاربر دیگه نتونه ببینه.

برای این کار باید از Application یا یک متغیر Static استفاده کنی.

محمدامین شریفی
یک شنبه 26 آبان 1387, 15:49 عصر
Session هر کاربر رو فقط خودش می تونه استفاده کنه و اصلا از دلایل ایجاد session همینه که اطلاعات کسی رو کاربر دیگه نتونه ببینه.

برای این کار باید از Application یا یک متغیر Static استفاده کنی.

به نظر من باید یک فیلد به عنوان ison تو جدول user قرار دهیم.اگر کاربر توی وبگاه بود(یعنی با استفاده از session خودش) این field مقدار true را برگرداند.برای نشان دادن کاربران online کافیست که count (دستور sql) ستون ison را نشان دهیم.

پیروز باشید

milade
یک شنبه 26 آبان 1387, 16:48 عصر
راه حل من ذخیره در یک aplication هست
در رویداد session_start کار کن!
موفق باشی

explod_javad
یک شنبه 26 آبان 1387, 18:41 عصر
دوست عزیز این کدش



string UserList = "";
MembershipUser user = Membership.GetUser(username);
if (user.IsOnline == true)
UserList += username + ";";



حالا فقط کافیه لیست کل یوزر هاتو با دستور
Membership.GetAllUsers()

بدست بیاری و توی کد بالا باهاش کار کنی

آملی ریکا عزیزممنون از کمکت ولی این روش برای تشخیص کاربرانی هست که لاگین کرده اند و اگر یک کاربر کلید خروج را نزند و browser خودش رو ببنده ، کماکان در لیستی که شما گفتید به عنوان یک کاربر آن لاین باقی میونه.من یک مقاله در این زمینه دیدم که براتون میزارم
:لبخند:

explod_javad
یک شنبه 26 آبان 1387, 18:47 عصر
کسی نمی دونی که چطور مینونم لیست سشن های تمام کاربرها رو بدست آورد ؟

Saber_Fatholahi
یک شنبه 26 آبان 1387, 18:48 عصر
سلام بازم
ببین دوست من در صورتی که یک کاربر بشه طی زمانی به نام TimeOnlineWindow هنوزم به عنوان آنلاین شناخته می شه تا زمانی که این مدت زمان که پیش فرضش 30 دقیقه است تمام بشه که می تونین خودتون توی وب کانفیک تنظیمش کنین
اما برای مورد دوم شما می تونین Session Timeout رو دستکاری کنین که در مدت زمان کمتری تمام بشه و ...
ته کیچیک مه

milade
یک شنبه 26 آبان 1387, 18:53 عصر
کماکان در لیستی که شما گفتید به عنوان یک کاربر آن لاین باقی میونه
البته منظورتون این بود تا زمانی که سشن از بین نره دیگه؟!

explod_javad
یک شنبه 26 آبان 1387, 21:46 عصر
با سلام
من فکر نمی کردم باید جزئیات هم بگم !


<authentication mode="Forms">
<forms loginUrl="login.aspx" defaultUrl="Default.aspx" timeout="15"/>
</authentication>

در این قسمت timeout="15 عمر یک سشن تا زمانی که هیچ درخواستی از کاربر دریافت نشود می باشد
من منظورم همین 15 دقیقه هست.یعنی 15 دقیقه یک نفر که صفحه browser خوش رو بسته و خروج کرده بعنوان کاربر آن لاین محسوب میشه که مطلوب نیست.توی اون فایل pdf که گذاشتم یک روشی رو توضیح میده که فکر کنم بهترین روش باشه .

explod_javad
سه شنبه 28 آبان 1387, 08:16 صبح
با سلام
من خودم اينجوري اين كار را كردم.
در فايل Global بعد از رخ دادن رويداد session Start ، تعداد در يك متغير (ويا اطلاعات بيشتري در Cach) ذخيره ميشه.
موقع رخ دادن رويداد Session End هم اون مشخصات حذف ميشه .
با تشكر از همه دوستان.

hassanf
سه شنبه 28 آبان 1387, 08:34 صبح
دوست عزیر
جزییاتی که گفتی اشتباهه !
عمر Session توسط تگ زیر در Web.Config مشخص می شود که مقدار Default آن فکر می کنم توسط IIS مشخص می شود.


<sessionStatetimeout="10"mode="InProc"></sessionState>


mode هم مشخص می کنه که Session در کجا ذخیره بشه و مقادیر زیر را می گیره :

1.InProc : در Server که Application در آن است ذخیره می شود.
1.StateServer : در Session Server ذخیره می شود.
1.SqlServer : در Sql Server ذخیره می شود.

متود Session_End هم اصلا قابل اعتماد نیست (بعضی وقتا کار نمیکنه)

explod_javad
سه شنبه 28 آبان 1387, 09:09 صبح
دوست عزيز ممنون.
ولي در نظر بگير حداكثر زمان معتبر بودن يك كاربري كه هيچ درخواستي را نداده باشد 5 دقيقه باشه و عمر يك سشن 10 دقيقه . مگه اينجور نيست كه سشن ها توليد شده فقط توسط كاربري كه اونو ساخته قابل دسترسي هست.كاربر كه توسط سيتم خارج شده .آيا سشن هاي اون با ژايان رسيدن اون 5 دقيقه بدون در نظر گرفتن 10 عمر سشن از بين ميره؟

hassanf
سه شنبه 28 آبان 1387, 09:34 صبح
وقتی کاربر Login می کنه , مجوز ورود به سایر صفحات برای اون صادر میشه که با Cookie که میسازه می فهه TimeOut که داخل تگ form مشخص شده مجوز تموم نشده یا نه که ربطی به Session نداره.

تازه اگه هم اینجوری که میگی باشه فرض کن عمر Session 10 و عمر مجوز 20 باشه. در این حالت کاربر
وقتی Login می کنه مجوز و Session با هم ساخته میشه , بعد از 10 دقیقه کاربر هنوز می تونه از همه صفحات استفاده کنه (TimeOut تموم نشده ) ولی عمر Session ها تموم شده!

محمدامین شریفی
سه شنبه 28 آبان 1387, 11:49 صبح
وقتی کاربر Login می کنه , مجوز ورود به سایر صفحات برای اون صادر میشه که با Cookie که میسازه می فهه TimeOut که داخل تگ form مشخص شده مجوز تموم نشده یا نه که ربطی به Session نداره.

تازه اگه هم اینجوری که میگی باشه فرض کن عمر Session 10 و عمر مجوز 20 باشه. در این حالت کاربر
وقتی Login می کنه مجوز و Session با هم ساخته میشه , بعد از 10 دقیقه کاربر هنوز می تونه از همه صفحات استفاده کنه (TimeOut تموم نشده ) ولی عمر Session ها تموم شده!

خوب دوست من،این بستگی به این داره که شما از cookie برای ورود کاربران استفاده میکنی یا session.اگر از کنترل عضویت خود asp.net استفاده کنی که همان cookie هست از روش آقا صابر باید بروی.اگر از session استفاده کنی هم فکر کنم Session End مناسب باشد.
دوستان تو کدوم مرورگرها Session End کار نمیکنه؟ و برای چی؟

hassanf
سه شنبه 28 آبان 1387, 12:17 عصر
آره عزیز برادر
ولی اگه طول عمر Session رو کمتر از مجوز بدیم که Session زودتر از بین میره ولی مجوز ورود ؟

Session_Start و Session_End روی سرور اجرا می شوند و خیلی ربطی به نوع مرورگر ندارند.
در کل چون Web application بصورت Disconnected کار میکنه و همه چیز بصورت Responce و Request است بستن فرم و خاتمه Session رو خیلی نمیشه فهمید کی اتفاق می افته .
مثلا شما اگه بخواهی کاربران آنلاین رو محاسبه کنید باید دست به هزار جور کار نا متعارف بزنی تا دقت رو بالا ببری که هیچ وقت هم نمیشه بصورت دقیق محاسبه کرد.چیزی که حتی Yahoo messenger که Windows Appliation است هم بعضی وقتا که شما On هستی Off نشون میده و اشتباه می کنه .
یا مثلا وقتی کاربر هنوز مرورگر رو نبسته ولی ارتباطش با اینترنت قطع میشه !

محمدامین شریفی
سه شنبه 28 آبان 1387, 12:56 عصر
عزیز دل انگیز!
آیا کسی میدونه membership خود asp.net از چه روشی استفاده میکنه؟
آیا کتابی برای این aspnetdb خودکار asp.net وجود دارد؟-آیا کتاب پایگاه داده در asp.net انتشارات wrox برای همین پایگاه داده است؟-

hassanf
سه شنبه 28 آبان 1387, 13:18 عصر
دوستی که اسمتو نمیدونم !
بله همه اینها وجود دارد!
بحث من در حالت کلی است . من اصلا اسم MemberShip رو نیاوردم.البته من از MemberShipاستفاده عملی هم نکردم .
اون دوستمون که گفته بودن طول عمر Session در تگ Form مشخص می شود. حال اگر ما MemberShip استفاده نکردیم و TimeOut در تگ فرم را هم مثلا 50 در نظر گرفتیم و در حالی که طول عمر Session را را در تگ SessionState 20 در نظر گرفتیم به نظر شما Session که از بین می رود ؟

milade
سه شنبه 28 آبان 1387, 13:57 عصر
جزییاتی که گفتی اشتباهه !

نیست!

آیا کسی میدونه membership خود asp.net از چه روشی استفاده میکنه؟

session و کوکی(در صورت قرار دادن)

hassanf
سه شنبه 28 آبان 1387, 14:14 عصر
اساتید لطفا یکی جواب آخرین پرسش منو بده :

اگر ما MemberShip استفاده نکردیم و TimeOut در تگ فرم را هم مثلا 50 در نظر گرفتیم و در حالی که طول عمر Session را را در تگ SessionState 20 در نظر گرفتیم به نظر شما Session که از بین می رود ؟

milade
سه شنبه 28 آبان 1387, 14:20 عصر
امتحان کن...
ولی فکر نکنم!(امتحان نکردم)

hassanf
سه شنبه 28 آبان 1387, 14:23 عصر
نیازی به امتحان کردن نیست .جواب مشخصه !

محمدامین شریفی
سه شنبه 28 آبان 1387, 14:31 عصر
اساتید لطفا یکی جواب آخرین پرسش منو بده :

اگر ما MemberShip استفاده نکردیم و TimeOut در تگ فرم را هم مثلا 50 در نظر گرفتیم و در حالی که طول عمر Session را را در تگ SessionState 20 در نظر گرفتیم به نظر شما Session که از بین می رود ؟
دوست من چقدر عجله داری اینجا که چت روم نیست!
اسم من "امین"هست
در ضمن من تو کتاب ها خوندم که باید از Session_End استفاده بشه.و اینجور به نظر میرسد که هنگامی که زمان TimeOut فرا برسد داده ها باطل میشوند(البته این رو تو شبکه خوندم!)

milade
سه شنبه 28 آبان 1387, 14:38 عصر
در ضمن من تو کتاب ها خوندم که باید از Session_End استفاده بشه.و اینجور به نظر میرسد که هنگامی که زمان TimeOut فرا برسد داده ها باطل میشوند(البته این رو تو شبکه خوندم!)
بد خوندی عزیز
وقتی یه سشن می خواد از بین بره قبلش این رویداد(Session_End)فرا خونده میشه و می تونیم با هاش کار کنیم که چی بشه

hassanf
سه شنبه 28 آبان 1387, 14:40 عصر
امین جان
عجله ای در کار نیست ! منم هیچ ادعایی ندارم .
اون چیزی که خوندی درسته و به همون دلایلی که گفتم (بر حسب تجربه ) اون مشکلات به وجود میاد .

محمدامین شریفی
سه شنبه 28 آبان 1387, 14:54 عصر
بد خوندی عزیز
وقتی یه سشن می خواد از بین بره قبلش این رویداد(Session_End)فرا خونده میشه و می تونیم با هاش کار کنیم که چی بشه
دقیقا منظور من هم همین بود که تو بالا گفتی،ببخشید اساتید اگر اشتباه مینویسم.
در ضمن به نظر من web application یک لایه از لایه های شبکه هست.
بچه ها برای به نتیجه رسیدن بهتر نیست یک نظر خواهی بگذارید؟

پیروز باشید سروران

محمدامین شریفی
شنبه 23 آذر 1387, 17:08 عصر
وقتی کاربر Login می کنه , مجوز ورود به سایر صفحات برای اون صادر میشه که با Cookie که میسازه می فهه TimeOut که داخل تگ form مشخص شده مجوز تموم نشده یا نه که ربطی به Session نداره.

تازه اگه هم اینجوری که میگی باشه فرض کن عمر Session 10 و عمر مجوز 20 باشه. در این حالت کاربر
وقتی Login می کنه مجوز و Session با هم ساخته میشه , بعد از 10 دقیقه کاربر هنوز می تونه از همه صفحات استفاده کنه (TimeOut تموم نشده ) ولی عمر Session ها تموم شده!
من تازگی داشتم شبکه میخواندم که از دوباره به این موضوع شک کردم.
بچه ها اگر طول عمر session تمام بشود و کاربر هنوز در سایت حضور داشته باشد،به نظر شما آیا برنامه session جدیدی را درخواست نمیکند؟

milade
شنبه 23 آذر 1387, 17:16 عصر
منظورتون چیه؟!
اگه منظورتون اینه که کاربر بدون هیچ تراکنشی سشنش expire بشه که اون وقت تا هنگام اینکه یه تراکنش انجام نشه سرور نمیفهمه . وقتی هم که فهمید دیگه نمیشناسدتیس و فایده ای نداره و در کل وقتی مه مدت سشن تموم بشه فرد ناشناس میمونه و server هیچ کار خاصی انجام نمیده
موفق باشید