PDA

View Full Version : تست آنلاین بودن کاربرهای سایت



hsl_hsv
یک شنبه 21 خرداد 1391, 12:36 عصر
مثل این لیستی که پائین انجمن هست چطور میشه فهمید کدوم کاربر آنلاین هست؟
اگر که یک فیلد داخل جدول کاربر در نظر بگیریم و با لاگین کردن اون فیلد مثلا 1 شود و با تست اون فیلد که اگر 1 است پس کاربر آنلاین است تا یک جاهائی از کار حل میشه اما اگه کاربر لاگ اوت نکنه که اون فیلد 0 شه تا بفهمیم آفلاین شده و فقط پنجره رو ببنده اینجا چطور میشه فهمید آفلاین شده؟

MMSHFE
یک شنبه 21 خرداد 1391, 12:55 عصر
میتونید یک ترفند رو به کار ببرین:
فیلدی به نام last_action (یا هر نام دلخواه دیگه) و از نوع int بگذارین و هرموقع فرد لاگین میکنه، timestamp اون لحظه رو توی اون فیلد از جدول کاربران و رکورد همون کاربر قرار بدین. از اینجا به بعد هم توی هر صفحه ای که کاربر میره، اون فیلد رو با تاریخ ورود به اون صفحه Update کنید. حالا کافیه چک کنید ببینید اختلاف اون فیلد با timestamp جاری چند ثانیه است. مثلاً اگه میخواین کاربران بعد از 10 دقیقه که با سایت کار نکردن، خارج شده از سایت محسوب بشن، باید این اختلاف کمتر از 600 باشه. اگه بیشتر بود یعنی کاربر بیش از 10 دقیقه هست که کاری با سایت نداشته. حالا یا مرورگر رو بسته و یا اینکه توی همون صفحه که بوده، جابجا نشده. الآن کافیه برای نمایش کاربران آنلاین، timestamp جاری رو بدین بیارین و ازش 600 واحد کم کنید و بعد، رکوردهایی که این فیلد توی اونها بزرگتر از عدد حاصل هست رو نشون بدین. مثال:


$ts = time() - 600;
$online = mysql_query("SELECT `name` FROM `users` WHERE (`last_action`>'{$ts}') ORDER BY `name`");

موفق باشید.