ورود

View Full Version : تعداد کاربران انلاین سایت



samaneh63
چهارشنبه 24 آبان 1385, 01:22 صبح
سلام به همه
من در سایتم نیاز دارم تعداد کاربران انلاین رو مشخص کنم. اول خواستم از فایل global استفاده کنم (از متد application start ) این متد موقع لود شدن یک صفحه از سایت اجرا می شه . در این صورت می تونم تعداد کاربرانی که به سایت وارد شده اند را بشمارم . اما اگر کاربری از سایت خارج بشه چطور می شه فهمید؟
اگر نخوام از global هم استفاده کنم از page losd می شه همون کار رو انجام داد . ولی بازم به همون مشکل برمی خورم.
چه کار باید بکنم؟

shahroozj
چهارشنبه 24 آبان 1385, 08:02 صبح
برای این کار باید در فایل Global.asax از Session_Start استفاده کنی و برای اینکه متوجه بشی که این کاربر از سایت خارج شده است از Session_End استفاده کنید
توجه داشته باشید که Application_Start برای زمانی است که برنامه شما اجرا میشود نه برای زمانی که یک کاربر ار سایت شما دیدن می کند

nkhozooii
پنج شنبه 22 آذر 1386, 15:47 عصر
من هم دقیقا همین مشکل را دارم و نحوه استفاده از Session_start , Session_End را نمی دانم. البته با خود session آشنایی دارم. اگر ممکن است بیشتر توضیح دهید. من با visual studio .net2005 کار می کنم.

miladr
پنج شنبه 22 آذر 1386, 18:30 عصر
شما تو vs2005 خودتون یک global ایجاد کنید خود vs زحمت ایجاد تولید روال های Session_start و end رو میکشه.

وشتی حاتمی
جمعه 23 آذر 1386, 13:21 عصر
منم همین مشکل رو دارم اگه می شه بیشتر توضیح بدید

abolfazl585
جمعه 23 آذر 1386, 13:43 عصر
میتونید از MemberShipUser استفاده کنید

abolfazl585
جمعه 23 آذر 1386, 13:52 عصر
این مقاله رو بخونید:
http://barnamenevis.org/forum/showthread.php?t=41524

nkhozooii
شنبه 24 آذر 1386, 08:53 صبح
مقاله را قبلا خوانده بودم اما نتوانستم از کلاس مزبور در صفحات استفاده کنم. (نمی دانم باید چه جوری آن را فراخوانی کنم.) در مورد Session_start ,Session_end هم این مشکل را دارم که وقتی فردی وارد سایت می شود یا خارج می شود این ها چطوری عمل می کنند و من باید چه را چک کنم. البته ذکر کردم که با طرز استفاده آنها آشنا نیستم . از دوستان خواهش می کنم بیشتر توضیح دهند.

SabaSabouhi
شنبه 24 آذر 1386, 10:30 صبح
با سلام
من هم همین مشکل رو دارم، هر کارى مى‌کنم وقتى کاربر Browser رو مى‌بنده هیچ رویدادى فراخوانى نمى‌شه و متاسفانه بستن Browser متداول‌ترین کار هست.
اگه راه حلى وجود داره من هم خوش‌حال مى‌شم اونو یاد بگیرم.

صبا صبوحى

abolfazl585
شنبه 24 آذر 1386, 22:34 عصر
مورد Session_start ,Session_end هم این مشکل را دارم که وقتی فردی وارد سایت می شود یا خارج می شود این ها چطوری عمل می کنند و من باید چه را چک کنم. البته ذکر کردم که با طرز استفاده آنها آشنا نیستم
اگه Root پروژه رو نگاه کنی یه فایل با نام global.asax وجود داره. اگه نیست اون رو Add کن.
داخل این فایل حاوی چندین Event هست که Session_Start,Session_End هم داخل اونهاست
Session_Start وقتی هندل میشه که شما اپلیکیشن رو اجرا میکنید و Session_End هم وقتی که TimeOut میشه و یا از اپلیکیشن خارج میشید. به هر صورتی که باشه.
شما فقط کدهاتوون رو داخل این Event ها بنویسید، بقیه اون با دات نت.



من هم همین مشکل رو دارم، هر کارى مى‌کنم وقتى کاربر Browser رو مى‌بنده هیچ رویدادى فراخوانى نمى‌شه و متاسفانه بستن Browser متداول‌ترین کار هست.
معمولا Session_End وابستگی کامل به تنظیمات Web.Config داره، به این صورت که هر وقت timeOut شد Eventش هم هندل میشه، حالا امکان داره شما 2 دقیقه هست که Login شدین و پس از اون Browser رو بستین، در این صورت اگه Session شما روی 15 دقیقه تنظیم شده باشد، رویداد Session_End در global.asax پس از 13 دقیقه هندل میشه و این کار شاید شما رو به اشتباه انداخته باشه



موفق باشید

SabaSabouhi
پنج شنبه 29 آذر 1386, 08:38 صبح
معمولا Session_End وابستگی کامل به تنظیمات Web.Config داره، به این صورت که هر وقت timeOut شد Eventش هم هندل میشه، حالا امکان داره شما 2 دقیقه هست که Login شدین و پس از اون Browser رو بستین، در این صورت اگه Session شما روی 15 دقیقه تنظیم شده باشد، رویداد Session_End در global.asax پس از 13 دقیقه هندل میشه و این کار شاید شما رو به اشتباه انداخته باشه
موفق باشید

با سلام
از پاسخ‌گویى شما سپاس‌گزارم، شاید مشکل من همین بوده، این رو امتحان مى‌کنم و اکنون یک پرسش نهایى:
آیا fire شدن این وقفه گارانتى شده هست؟ یعنى حتماً اتفاق مى‌افته؟

صبا صبوحى

mehrdad201
پنج شنبه 29 آذر 1386, 15:48 عصر
تو اونجا که من میدونم آره .


البته اگه واسر سرور اتفاقی نیفته حتماباید session_end فراخوانی بشه

abolfazl585
شنبه 01 دی 1386, 19:36 عصر
بله، گارانتی الماس داره.


موفق باشید

SabaSabouhi
یک شنبه 02 دی 1386, 08:50 صبح
با سلام
سپاس‌گزارم از دوستان،

پس اگه من بیام تو یه Database باز شدن و بسته شدن هر Session رو Log کنم با فاصله زمانى SessionTimeout حتماً براى هر باز شدن یک بسته شدن هم دیده مى‌شه و این‌طورى مى‌تونم با Filter کردن رکوردها، کاربران Online سایت رو چند درصد خطا به دست بیارم.

صبا صبوحى

chaalesh
یک شنبه 02 دی 1386, 09:17 صبح
این مقاله ای که دوستمان لینکشو دادن http://barnamenevis.org/forum/showthread.php?t=41524 چیزه توپیه
من از این روش استفاده کردم بدون مشکل کار میکنه اگه در موردش سوالی داشتی من الان ازش بخوبی استفاده میکنم میتونم کمکت کنم

khz-web1
یک شنبه 02 دی 1386, 15:12 عصر
تو این سایت چند تا مقاله راجبه جلسه گزاشتم شاید بدرد بخوره ، ابته به صورت کامل نیست چون زنجیره وار درس میدیم

www.poyesh.ir (http://www.poyesh.ir)

hesam_a110
یک شنبه 02 دی 1386, 15:45 عصر
با درود بر دوستان گرامی اینم راه حلی که من ازاش استفاده کردم
خوش و نیک باشد


void Application_Start(object sender, EventArgs e)
{
Application["visitors"] = 0;
}

void Application_End(object sender, EventArgs e)
{
Application["visitors"] = 0;
}

void Application_Error(object sender, EventArgs e)
{
}
void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["visitors"] = int.Parse(Application["visitors"].ToString()) + 1;
Application.UnLock();


}
void Session_End(object sender, EventArgs e)
{
Application.Lock();
Application["visitors"] = int.Parse(Application["visitors"].ToString()) - 1;
Application.UnLock();
}

nkhozooii
چهارشنبه 05 دی 1386, 18:19 عصر
جناب chaalesh اگر طریقه استفاده از کد گفته شده و نحوه فراخوانی آن در صفحات سایت تان را برایمان توضیح دهید بی نهایت ممنون می شویم. بنده چند بار مقاله را خواندم اما باز نتوانستم از آن استفاده کنم. من در برنامه ام مشابه کد hesam-a110 نوشته ام. اما برایم این سوال پیش می اید که ایا این روش اعتبار دارد (یه جورایی به دلم نمی شینه) و اینکه ایا راهی وجود دارد که بدانم چه کسی از سایت خارج شده و اصلا ندانستن آن برایم مشکل ایجاد نمی کند؟ همچنین از چه طریقی time out سشن ها را تنظیم کنم(اصلا اطلاعی راجع به این موضوع ندارم.)

abolfazl585
چهارشنبه 05 دی 1386, 23:23 عصر
از چه طریقی time out سشن ها را تنظیم کنم
تو Web.Config خیلی راحت میتونی Sessionها رو مدیریت کنی.
اگه این کار سخته ، برو تو ControlPanel و AdministrativeTools و Internet Information Service(IIS) و روی Virtual Directory که درست کردی یه Properties بگیر.
حالا میتونی تو قسمت Web Configش بری و هر بلایی که میخوای سر Sessionها در بیار.
و حالا اگه فایله Web.Config رو باز کرده باشیی، کدهاتون اونجا حضور دارند و به شما چشمک می زنند.



موفق باشید

khazon
پنج شنبه 06 دی 1386, 01:29 صبح
با سلام
الله من چند روز پیش یه مقاله ی کامل نوشتم ولی نمی دونم چی شد ...

به هر حال لینکش رو تو این سایت ندارم و خودتون باید بگردین پیداش کنین ... خود مقاله رو هم خواستم اینجا ثبت کنیم ولی Error داد ( دو نوشته ی پاک شده ی بالا یه همین دلیله )

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

نمایش افراد آنلاین سایتمان ( گام به گام ) (http://dotnetsource.com/fa/forum/default.aspx?g=posts&t=3895)

اگه به جواب نرسیدی بهم بگو ...

chaalesh
پنج شنبه 06 دی 1386, 02:23 صبح
بعد از نوشتن یک کلاس پایه - طبق مقاله - شما میتونید صفحاتتون رو از این کلاس ارث ببرید . بجای System.Web.UI.Page در فایل کد صفحات اسم کلاستو مینویسی
بطور مثال : یک صحفه جدید با نام َAbout.aspx به پروژت اضافه کن
توی فایل cs بجای
public partial class About : System.Web.UI.Page
مینویسی
public partial class About : User
در اینجا نام کلاس من User است
حالا اگه طبق اون مقاله پیش رفته باشی باید توی Page_Load این صحفه جدیدت تابع Page_Load اون کلاس پایه رو هم صدا بزنی با این دستور :


base.Page_Load(sender, e);
البته اضافه کردن کلمه override ما بین protected و
void Page_Load توی فایل About.aspx.cs یادت نره یعنی اینجوری
protected override void Page_Load(object sender, EventArgs e)
{
base.Page_Load(sender, e);
}

حالا هنگام فراخوانی این صحفه تابع page_Load اون کلاس پایه اجرا میشه و اطلاعات کاربر رو ذخیره میکنه توی cache

SabaSabouhi
پنج شنبه 06 دی 1386, 08:40 صبح
با سلام
اگه دوست دارین به لینک پایین سری بزنین .

نمایش افراد آنلاین سایتمان ( گام به گام ) (http://dotnetsource.com/fa/forum/default.aspx?g=posts&t=3895)

اگه به جواب نرسیدی بهم بگو ...

با سلام
من سرى به این لینک زدم ولى مقاله‌اى پیدا نکردم، حتا با جستجوى "افراد آنلاین" هم چیزى پیدا نشد.

صبا صبوحى

khazon
پنج شنبه 06 دی 1386, 09:05 صبح
با سلام
من سرى به این لینک زدم ولى مقاله‌اى پیدا نکردم، حتا با جستجوى "افراد آنلاین" هم چیزى پیدا نشد.

صبا صبوحى

شاید قبلش باشد عضو بشین ...
این لینکشه : http://dotnetsource.com/fa/forum/default.aspx?g=posts&t=3895
همونی که بالا گذاشتم ...
نمی دونم ...

SabaSabouhi
یک شنبه 09 دی 1386, 10:00 صبح
با سلام
حق با شما بود، با شناسایى متن رو پیدا کردم.

سپاس‌گزارم
صبا صبوحى

nkhozooii
پنج شنبه 25 بهمن 1386, 18:05 عصر
دوستان من از روش session ها استفاده کردم اما باز به نظر می آید که مشکل دارد . من زمان session را مثلا 20 دقیقه می گیرم . اول اینکه وقتی شخصی وارد شود و بعد از 5 دقیقه قطع شود 15 دقیقه دیگر باید طول بکشد تا آن شخص حذف شود و مشکل فجیع تر اینکه اگر 19 دقیقه طول کشیده و حالا یک شخص جدید در این زمان وارد شده و به مقدار سشن یکی اضافه شده بعد سر 20 دقیقه یکدفعه همه چیز ریست می شود و مقدار session صفر می گردد. اصلا من چطور می توانم بفهمم که شخص خارج شده و در session-end چگونه آن را چک کنم. و یا چگونه ip اشخاص را بگیرم و مثلا چک کنم که اگر یه نفر یه سایت را دو بار باز کرده به تعداد نفرات آنلاین آن افزوده نشود.