• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چگونه بفهمیم که یک کاربر افلاین شد؟
#1
سلام دوستان....
من یک اسکریپت طراحی کردم...تو قسمت انلاین نشون دادن کاربرد که مشکلی نیست( اطلاعاتشو تو تیبل انلاین یوزر ذخیره میکنم) اما چطوری بفهمم که کاربرم از سایتم خارج شده و اونو از تیبل انلاین یوزر حذف کنم؟ یعنی چطوری بفهم سشنش از بین رفته و صفحه بسته شده!
  پاسخ
تشکر شده توسط : Muhammad-Ali
#2
شما چه جوری آنلاین ها رو مشخص میکنی؟ همنجوری آفلاین ها رو هم مشخص کن .
در حقیقت یه بازه بذار ، اگر کاربر بعد از 5 دقیقه هیچ اکشنی رو اجرا نکنه ، آفلاین شده
  پاسخ
تشکر شده توسط : ali786
#3
الان مشکل منم تو همین بازه گذاشتن و چک کردن اونه! اگه امکانش هست یک مثال ساده بزنید!
  پاسخ
تشکر شده توسط :
#4
از سسشن استفاده کنید .
هر بار که کاربر صفحه ای رو باز کرد ، توی سسشن timestamp بریزید .
ریاضی هم که بلدید انشااللهBlush
  پاسخ
تشکر شده توسط : ali786 hamid_80386 Muhammad-Ali
#5
شما لازم نیست یه جدول دیگه واسه اعضای آنلاین ایجاد کنی!
شما تو همون جدولی اطلاعات اعضا رو داری یه ستون اضافه کن به اسم مثلا آخرین فعالیت.
بعد هر بار که کاربرت یه فعالیتی تو سایت کرد اون ستون رو با تایم استمپ آپدیت کن.
(حالا این فعالیت می تونه تو ساده ترین حالت می تونه صفحه عوض کردن باشه؛ تو حالات پیشرفته تر هم می تونی با ای جکس از هر چند دقیقه چک کنی ببینی همون کاربر تو سایت هست یا نه)
بعد تو لیست اعضای آنلاین از جدول اعضا یه کوئری بگیر هر جا که آخرین فعالیت مثلا به قول این دوستمون واسه 5 دقیقه آخر باشه.
اینجوری اگه طرف تا 5 دقیقه هیچ فعالیتی نکنه دیگه اسمش تو لیست اعضای آنلاین نمیاد و آفلاین محسوب میشه.
  پاسخ
تشکر شده توسط : hamid_80386 ali786 Muhammad-Ali
#6
کوئری چرا حروم میکنی ؟
سشن بزن Dodgy
  پاسخ
تشکر شده توسط :
#7
(۱۳۹۱ مهر ۱۲, ۱۲:۰۷ ق.ظ)Reza نوشته: کوئری چرا حروم میکنی ؟
سشن بزن Dodgy

رضا منم ترکیب دیتابیس و سشن استفاده میکنم

منظورت از سشن خالی چیه؟
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :
#8
بابا شما برای اینکه تایم استمپ آخرین فعالیت کاربر رو ذخیره کنید میاید هر بار کوئری میدی به دیتابیس که فلان رکورد از تیبل یوزر رو آپدیت کن .
من میگم هر بار تو سسشن بریزید .
بعد هر 5 دقیقه یکبار ، یه کوئری بدید بریزید توی دیتابیس و خلاص !

برای آفلاین و آنلاین هم کلاً از سسشن استفاده کنید .

کد میخواد بنویسم؟
  پاسخ
تشکر شده توسط : Muhammad-Ali
#9
ببین رضا جون گیج بازی های من شروع شد

وقتی کاربر میای توی سشن username اسم رضا رو میریزه و تو سشن تایم زمان جاری رو

من مدیر که خودم به نوعی کاربر دیگه هستم چطور بیام اول: چه کاربر هایی الان واس خودشون سشن درست کردن

بعدم چطوری به سشن های دیگر کاربران دسترسی داشته باشم؟
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :
#10
وقتی کاربر لاگین میکنه
کد پی‌اچ‌پی:
//وقتی کاربر داره لاگین میکنه
$time time() ;
$sql "update user set last_activity=$time";
$_SESSION['first'] = $time ;
$_SESSION['last_activity'] = $time 

وقتی کاربر داره توی سایت میچرخه
کد پی‌اچ‌پی:
//وقتی کاربر داره توی سایت میچرخه
$time time();
$_SESSION['last_activity'] = $time ;

if( 
$_SESSION['last_activity']-$_SESSION['first'] > 300)
{
    
$sql "update user set last_activity=$time";
    
$_SESSION['first'] = $time ;


وقتی میخوای آفلاین و آنلاین بودن رو نشون بدی
کد پی‌اچ‌پی:
// برای چک کردن آفلاین و آنلاین بودن
if( $_SESSION['last_activity']-$_SESSION['first'] > 300)
{
    echo 
'آفلاین';
}
else
{
    echo 
'آنلاین';


حله داش ؟
البته یه ذره باید خودت میزونش کنی ، مثلاً به جای
کد پی‌اچ‌پی:
$_SESSION['first'
یه کلید سختتر بذار .
کد پی‌اچ‌پی:
$_SESSION[sha1($user_name)]['first'

نقل قول:من مدیر که خودم به نوعی کاربر دیگه هستم چطور بیام اول: چه کاربر هایی الان واس خودشون سشن درست کردن

بعدم چطوری به سشن های دیگر کاربران دسترسی داشته باشم؟
تو بعنوان مدیر به جای دسترسی به سسشن ، از فیلد last_activity جدول یوزرها استفاده میکنی .
و به جای بازه 5 دقیقه ، از بازه 10 دقیقه استفاده میکنی .
  پاسخ
تشکر شده توسط : hamid_80386 aziminia Muhammad-Ali


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان