PDA

View Full Version : حرفه ای: نمایش افرادآنلاین



parsboy
جمعه 13 بهمن 1391, 21:24 عصر
سلام دوستان من میخوام باسه سایتم نمایش افراد آنلاین بذارم کسی از دوستان میتونه کمک کنه؟

MMSHFE
جمعه 13 بهمن 1391, 21:49 عصر
راه حل قطعی برای این کار وجود نداره. یک راه مناسب، اینه که یک جدول درست کنید که دو فیلد داره: یکی برای نگهداری session_id و یکی دیگه برای آخرین timestamp که اون فرد با سایت کار کرده. بعد از این، یک اسکریپت مینویسید که توی همه صفحات باید include بشه. کارش هم اینه که session_id رو توی جدول پیدا کنه و timestamp رو با زمان جاری، بروز رسانی کنه. حالا توی قسمت نمایش افراد آنلاین، یک کوئری مینویسین و رکوردهایی که برای مثال، از آخرین فعالیتشون کمتر از 5 دقیقه گذشته رو نشون میدین.

tehro0n
شنبه 14 بهمن 1391, 13:17 عصر
خوب من ایده ای در این زمینه داشتم که متاسفانه رو برخی مرورگرها کار نمی کنه، برای همین به جای کد نویسی کامل براتون توضیح می دم شاید شما بتونید مشکل رو حل کنید
این موردی که فرمودند برای کاربرانی که کمتر از 5 دقیقه مانده اند صادق نیست و آن ها را نیز هنوز آنلاین نشان می دهد
موردهای ذخیره سیشن هم مشکلات خودش رو داره

چیزی که من می خوام بگم روش ساده کد نویسی زیر است:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(window).load(function () { alert("Hello!"); });
$(window).unload(function () { alert("Bye!"); });
</script>
منتها برخی مرورگرها هنگام خروج قسمت unload را اجرا نمی کنند :(
اگر این اتفاق می افتاد شما می تونستید با post JQuery و ایجاد یک فایل txt افرادی که load میشن رو بگیری و یک عدد اضافه کنی و هنگامی که خارج میشن نیز با همین post و curl محتویات آن فایل را کم کنی..

اما با وجود برخی مرورگرها استفاده از همین زمان هست! که خوب دقیق نیست

MMSHFE
شنبه 14 بهمن 1391, 13:21 عصر
این موردی که فرمودند برای کاربرانی که کمتر از 5 دقیقه مانده اند صادق نیست و آن ها را نیز هنوز آنلاین نشان می دهد
خوب میشه توی صفحه Logout رکورد مربوطه رو از دیتابیس حذف کرد. ازطرفی اگه بدون Logout مرورگر رو ببنده، حداکثر 5 دقیقه آنلاین نشون داده میشه. حتی میشه این زمان رو کمتر کرد.
روشی که شما گفتین هم خوبه اما همونطور که اشاره کردین، اولاً توی همه مرورگرها جواب نمیده و ثانیاً اگه کاربر JS رو غیرفعال کرده باشه (روی برخی از مرورگرهای نسخه موبایل، پیشفرض غیرفعاله که تعدادشون هم کم نیست)، اونوقت دیگه کلاً کار نمیکنه.