ورود

View Full Version : کاربران آنلاین



sara.ghavam
سه شنبه 12 مرداد 1395, 15:14 عصر
سلام دوستان گلم من برای لاگین به سایتم از session استفاده می کنم، چطوری میتونم بفهمم که در حال حاضر چند نفر در سایت آنلاین هستند؟؟؟؟

من از کد زیر برای تنظیم session استفاده می کنم


$data_session = array( 'username'=>$username,
'usName'=>$usName,
'login'=>TRUE
);
$this->session->set_userdata($data_session);

منتظر پاسخ های خوبتون هستم

arash_fa
سه شنبه 12 مرداد 1395, 16:45 عصر
اگر از سشن دیتابیسی استفاده نمیکنید:


$number_of_users = count(scandir(ini_get("session.save_path")));

plague
سه شنبه 12 مرداد 1395, 19:29 عصر
یه روش قدیمی هست که از 100 سال پیش استفاده میشده
سرچ کن پیدا میکنی .. .باید با هر رفرش زمان همون لحظه رو به عنوان آخرین زمان فعالیت کاربر ذخیره کنی
بعد چک میکنی میبینی چند نفر آخرین فعلایتشون مثلا از 5 دقیقه به اینور بوده اونا لاگین هستن !

در کل روش درست و حسابی نداره چون php ماله این کار ها نیست

این روشی که دوستمون گفتن میاد سشن ها رو میشماره که با توجه به اینکه خیلی ها مرورگر رو میبندن ولی لاگ اوت نمیکنن خیلی خطای بالایی داره

arash_fa
چهارشنبه 13 مرداد 1395, 09:59 صبح
یه روش قدیمی هست که از 100 سال پیش استفاده میشده
سرچ کن پیدا میکنی .. .باید با هر رفرش زمان همون لحظه رو به عنوان آخرین زمان فعالیت کاربر ذخیره کنی
بعد چک میکنی میبینی چند نفر آخرین فعلایتشون مثلا از 5 دقیقه به اینور بوده اونا لاگین هستن !

در کل روش درست و حسابی نداره چون php ماله این کار ها نیست

این روشی که دوستمون گفتن میاد سشن ها رو میشماره که با توجه به اینکه خیلی ها مرورگر رو میبندن ولی لاگ اوت نمیکنن خیلی خطای بالایی داره

بله این که فایلا رو میشماره

بهترین روش ذخیره آخرین زمان بازدید کاربر که میتونید توی کد ها با آجاکس هر 10 ثانیه فیلد last_activity کاربر را با زمان اون لحظه آپدیت کنی و بعد بیای بگی از دیتابیس بگیر اونایی رو که مثلا last_activity بزرگتر از time() منهای مثلا 1 دقیقه هست

sara.ghavam
چهارشنبه 13 مرداد 1395, 14:54 عصر
بله این که فایلا رو میشماره

بهترین روش ذخیره آخرین زمان بازدید کاربر که میتونید توی کد ها با آجاکس هر 10 ثانیه فیلد last_activity کاربر را با زمان اون لحظه آپدیت کنی و بعد بیای بگی از دیتابیس بگیر اونایی رو که مثلا last_activity بزرگتر از time() منهای مثلا 1 دقیقه هست

مرسی دوست گلم
میشه بیشتر توضیح بدین و کدش رو بهم بگید؟؟

arash_fa
چهارشنبه 13 مرداد 1395, 16:37 عصر
در جدول user خود یک ستون یا فیلد بسازید به نام last_activity با مقدار varchar 255


حالا در کد های خود مثلا در فوتر یا هر بخشی از سایت که مشترک کل سایت هست یک آجاکس بنویسید توسط جی کوئری که هر 5 ثانیه اجرا شود

<?if(USER_IS_LOGGED){?><script>function keep_live(){$.ajax({url:MYURL
});}<?}?>$(document).ready(function(){ keep_live();setInterval( keep_live, 5000)
});</script>
کد بالا هر 5 ثانیه یک درخواست آجاکس به آدرس مورد نظر میفرستد که در اون فایل php شما باید کوئری زیر را بنویسید



'UPDATE users SET last_activity="'.time().'" WHERE user_id="'.$user_id.'" LIMIT 1'




برای گرفتن آنلاین ها هم

$last = 60*5;'SELECT * FROM users WHERE last_activity > '.(time()-$last).' '


در این بخش متغیر last میگه اگر کسی بیشتر از این مقدار حضور نداشت که الان 5 دقیقه هست
کوئری میگه کابرانی را بگیر که آخرین فعالیتشون بیشتر از 5 دقیقه نگذشته یهنی تقریبا آنلاینند;


موفق باشید