PDA

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



hamedfarahabady
چهارشنبه 18 اسفند 1389, 23:36 عصر
سلام کد تعداد کاربران آنلاین را به چه روشی باید ینویسم؟

MMSHFE
پنج شنبه 19 اسفند 1389, 07:39 صبح
با سلام، يك جدول ايجاد كنيد كه فقط يك فيلد داره: ID
ID افراد موقع Login توي اين جدول ثبت ميشه و كافيه تعداد سطرهاي اين جدول رو بعنوان تعداد افراد آنلاين نمايش بدين. موقع Logout هم ID مربوطه از اين جدول حذف ميشه. در مورد اينكه چطور بفهميم فرد ديگه آنلاين نيست (حتي اگه مرورگر رو ببنده و روي Logout كليك نكنه) هم اگه خواستين، بگين تا يكي دو روش رو بگم.
موفق و مؤيد باشيد.

hamedfarahabady
پنج شنبه 19 اسفند 1389, 08:11 صبح
سلام مشکل اصلی من در درست کردن تعداد کاربران آن لاین اینه که چه جوری بفهمم فردی که مرورگر رو بسته و روی خروج از سیستم کلیک نکرده دیگه آنلاین نیست؟

رضا قربانی
پنج شنبه 19 اسفند 1389, 08:34 صبح
باید از طریق آی پی عمل کنی

یعنی ای پی طرف رو بگیری و تا زمانی اون آی پی در سایت هست اون نفر یک کاربر آنلاین باشه

xoogle.ir
پنج شنبه 19 اسفند 1389, 09:52 صبح
یک راهش اینه که زمان آخرین فعالیتش رو در دیتابیس ذخیره کنی و اگر مثلا یک ساعت از آخرین فعالیتش گذشته بود و logout نکرده بود از دیتابیس پاکش کنی.

MMSHFE
پنج شنبه 19 اسفند 1389, 10:09 صبح
سلام مشکل اصلی من در درست کردن تعداد کاربران آن لاین اینه که چه جوری بفهمم فردی که مرورگر رو بسته و روی خروج از سیستم کلیک نکرده دیگه آنلاین نیست؟
با سلام، از طريق جاوا اسكريپت توي رويداد onUnload همه صفحات بجز logout.php، كاربر رو به صفحه logout.php هدايت كنيد و بستن پنجره رو لغو كنيد. اينطوري اگه مرورگر رو بخواد ببنده، به صفحه logout.php هدايت ميشه و اونجا ميتونه صفحه رو ببنده چون توي رويداد onUnload اون صفحه چيزي ننوشتيد.
يك راهش هم همونه كه دوستمون گفتن. البته بهتره يك فيلد در جدول كاربران آنلاين اضافه كنيد كه زمان آخرين فعاليت در سايت رو نشون ميده و در هر صفحه، فيلد مربوطه رو براي كاربر (اگه آنلاين بود و ID اون فرد توي جدول ID وجود داشت)، اين فيلد رو با زمان جاري تنظيم كنيد. بعد يك فايل PHP درست كنيد كه از توي اين جدول، ركوردهايي كه زمان فعلي سرور 20 دقيقه يا بيشتر (بطور دلخواه) از زمان ثبت شده در فيلد مربوطه در اون ركوردها بيشتره رو حذف كنه. حالا كافيه اين فايل رو هم ابتداي همه صفحات include كنيد. البته يادتون نره كه از اين به بعد براي بررسي اينكه كاربر لاگين كرده يا نه، از Session نبايد استفاده كنيد بلكه ملاك ورود كاربر بايد اين فايل باشه چون ممكنه يك كاربر توي اين جدول حذف شده باشه ولي هنوز Session باز داشته باشه (مثلاً هنوز مرورگر رو نبسته ولي 20 دقيقه است كه كاري نكرده). همين سايت برنامه نويس هم داره از اين روش استفاده ميكنه.
شرمنده كه يكم خلاصه و تا حدودي تخصصي توضيح دادم. اگه توضيح بيشتري خواستين، بفرماييد تا با مثال و دقيق تر راهنمايي كنم.
موفق و مؤيد باشيد.

hamedfarahabady
پنج شنبه 19 اسفند 1389, 13:10 عصر
بی زحمت اگه میشه یک نمونه کد از روش اول برام بذارید

abbas3zaar
دوشنبه 30 مرداد 1391, 10:06 صبح
شما که میگی آی پی چک بشه، شاید تعدادی با یک آی پی وارد بشن! (وـی پـی ان)

soroush.r70
دوشنبه 30 مرداد 1391, 12:08 عصر
کد اصلی

/////////////////////////////کاربران آنلاین/////////////////////////////////////////
$config = array(
user_time => time(),
user_ip => $_SERVER['REMOTE_ADDR'],
file_name => 'users.txt'
);
$new_line = $config['user_ip'] . "|" . $config['user_time'] . "\r\n";
file_put_contents($config['file_name'], $new_line); //Write File
$online_file = file_get_contents($config['file_name']);
$online_file = explode("\r\n", $online_file);
foreach($online_file as $online_users)
{
$users = explode("|", $online_users);
if($users[1] >= time() - 300)
{
$online++;
}
}



ایجاد فایل users.txt

فراخوانی


<?php echo number_format($online); ?>

رضا قربانی
دوشنبه 30 مرداد 1391, 13:44 عصر
با سلام خدمت همگی دوستان
شرمنده چند روزی نبودم

اینجا کمک خوبی بهتون می کنه:
http://webilix.com/article/view/online-visitors-number-with-php-and-mysql/