PDA

View Full Version : سوال: بدست آوردن تعداد افراد آنلاین



mehrdad85
شنبه 11 دی 1389, 11:30 صبح
سلام
دوستان کسی میتونه کمکم کنه که با استفاده از session تعداد افرادی که داخل سیستم میشن و به عبارتی log in را بشمارم و نشون بدم؟


مرسی

ایمان مدائنی
شنبه 11 دی 1389, 11:45 صبح
شما ميتوني با استفاده از session_start و session_end هربار كه كاربر وارد و خارج ميشه دربانك ذخيره كني
بايد كدهاشو بنويسي
كه وقتي كاربر وارد شد بره توبانك و به مقدار كابران آنلاين يكي اضافه كنه و نمايش بده و وقتي خارج شد يكي از اون مقدار كم كنه

mehrdad85
شنبه 11 دی 1389, 12:11 عصر
یعنی داخل بانک در جدول کاربران یه فیاد تحت عنوان onlline در نظر بگیرم که با وارد شدن یا به عبارتی مقدار گرفتن session اون کاربر این فیلد تغییر میگنه
بهد داخل page_load به بانک متصل بشم و این تعداد را بشمارم؟درست متوجه شدم؟

ایمان مدائنی
شنبه 11 دی 1389, 12:29 عصر
دقيقا
حالا ميتوني يك جدول درست كني كه بتوني كل كابران و بازديد هاي كل و ديروز رو هم دربياري تا بتوني نشان بدي

javad_r_85
شنبه 11 دی 1389, 12:30 عصر
شما برای شمارش اعضا می تونید از جدول استفاده کنید برای کاربران حاضر در سایت نیز به صورت زیر عمل کنید::::

ابتدا در فایل global کدهای زیر را اضافه کنید (اگر در پروژه دارید به پروژه اضافه کنید)


void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
int counter = 0;
if (Application["cnt"] != null)
counter = (int)Application["cnt"];
else
Application.Add("cnt", 0);
counter++;

Application["cnt"] = counter;

}


در صفحه مورد نظر نیز کد زیر را اضافه کنید





protected void Page_Load(object sender, EventArgs e)
{
if (Application["cnt"] != null)
Response.Write(Application["cnt"].ToString());
}




در فایل کانفیگ نیز کد زیر>




<system.web>


<sessionState mode="InProc "/>

mehrdad85
شنبه 11 دی 1389, 13:38 عصر
ممنون
ولی دوست عزیز اینجا که نوشته کد php?

ایمان مدائنی
شنبه 11 دی 1389, 13:42 عصر
دوستمون نمونه كدها رو داخل تك php گذاشتن مشكلي نيست ميتونيد استفاده كنيد

reuonis
شنبه 11 دی 1389, 15:20 عصر
میشه کدهاتون رو توضیح بدید که چکار می کنه؟

ایمان مدائنی
شنبه 11 دی 1389, 15:29 عصر
اين كدهايي كه دوستمون گذاشتن با استفاده از جلسه جاري اين كار رابرات انجام ميده
و در صورت بسته شدن مرورگر توسط كاربر از بين ميره
روش خوبي هست ولي براي بدست آوردن كل بازديد و بازديد ها امروز و ديروز دوبار كاره است
بستگي به شما داره از كدام روش استفاده كنيد

mehrdad201
شنبه 11 دی 1389, 18:18 عصر
البته اگه از system.web.security.membership استفاده میکنید ممکنه استفاده از سشن نتیجه صد در صد درست رو به شما برنگردونه

چون سیستم ممبرشیپ از سشن استفاده نمیکنه که بخواد در سشن استارت یا سشن اند تغیر بکنه. به راه هم استفاده از کش هست

Vahid_moghaddam
شنبه 11 دی 1389, 20:59 عصر
اين كدهايي كه دوستمون گذاشتن با استفاده از جلسه جاري اين كار رابرات انجام ميده
و در صورت بسته شدن مرورگر توسط كاربر از بين ميره
روش خوبي هست ولي براي بدست آوردن كل بازديد و بازديد ها امروز و ديروز دوبار كاره است
بستگي به شما داره از كدام روش استفاده كنيد

با سلام
کد نوشته شده از Application State استفاده می کنه و ارتباطی به session کاربر نداره. در صورت از بین رفتن Session هم، در کد بالا چیزی وجود نداره که به برنامه اطلاع بده آمار افراد انلاین رو کاهش بده. روش صحیح تر دخالت دادن زمان شروع session در شمارش افراد آنلاین هست. در این حالت با شروع هر درخواست باید چک بشه چه رکوردهایی از حافظه پاک بشن. مثلا فرض کنید (یک مثال کاملا ابتدایی ) اطلاعات کاربر رو در کلاسی مثل زیر نگهداری می کنید:

class user
{
string ip {get;set;}
DateTime SessionStartTime {get;set;}
}

در Application State لیستی از کلاس user رو قرار می دیم. در هر درخواست جدید این لیست رو بررسی می کنیم اگر درخواست مربوط به کاربری هست که در لیست موجوده، زمان رو به روزرسانی می کنیم. اگر کاربر در لیست وجود نداشته باشه، اون رو به لیست اضافه می کنیم. در نهایت زمان جاری رو با زمان هر کاربر در لیست مقایسه می کنیم و اگه اختلاف زمان از یه مقداری مثلا 5 دقیقه بیشتر بود، کاربر رو از لیست حذف می کنیم . تعداد اعضای موجود در لیست، تعد اد کاربران آنلاین هست

Mcraft
دوشنبه 26 تیر 1391, 18:13 عصر
میشه لطفا یک نمونه کد بزارین؟؟؟ همه ممنون میشن!

saeed_sho
دوشنبه 26 تیر 1391, 20:01 عصر
اگه کاربر لاگ اوت نکنه و مرورگر رو ببنده و ما بخوایم همون لحظه آمارمون آپدیت بشه و صبر نکنیم تا سشن خودش باطل بشه باید چکار کنیم؟
اگه کاربر چندتا تب باز کنه آمار زیاد میشه برای اون چه فکری دارید؟
از کجا میفهمیم کاربر تب های دیگه از برنامه رو بسته؟
جواب این سؤال ها رو اگه کسی میدونه لطفا جواب بده

rezayeman
دوشنبه 22 آبان 1391, 14:02 عصر
سلام دوستان
من یک کلاس برای این کار پیدا کردم که فکر کنم خیلی عالی هستش

http://www.4shared.com/office/x0DGlRBi/Count_User_Online.html

فقط مشکلم اینه که نمیدونم از این کلاس چجوری در صفحات استفاده کنم از دوستان کسی وارده لطفا توضیحشو بزاره و مثال بزنه
مرسی

rezayeman
سه شنبه 23 آبان 1391, 08:38 صبح
کسی نتونست کمک کنه؟

rezayeman
چهارشنبه 24 آبان 1391, 09:09 صبح
از اساتید کسی نمی خواد کمکی بکنه؟