نمایش انلاین بودن در کنترل پنل

Goroop.ir

Member
سلام .

دوستان من یک کدی میخام که بتونم باهاش بفهمم چه کسانی در ادمین انلاین هستن .

مثلا من مدیر سایت هستم و الان به دیتا وصل شدم و میخام انلاین بدونم رو در یک صفحه نمایش بدم .


یعنی اگر من به دیتا وصل بودم عکس انلاین رو نمایش بده و اگر هم انلاین نبودم هم عکس افلاین رو نمایش بده .

مثل نمایش انلاین و افلاین یاهو مسنجر .

اگر بتونید کمکی بکنید ممنون میشم
 
آخرین ویرایش:
این بستگی داره به روش authentication شما داره ، یکی از راهها اینه که session ID هر کاربر رو با user ID اون کاربر توی دیتابیس داشته باشید و هر بار نیز اون رو آپدیت کنید اینجوری میتونید بفهمید که چه کسانی آنلاین هستند البته فراموش نکنید که باید تابعی هم داشته باشید که با هر با لود شدن صفحات رکوردهایی که مدت زمان معینی ازشون گذشته رو از دیتا بیس حذف کنه.

همونطور که گفتم بهتره اول بگین چجوری کاربر ها رو Authenticate میکنید تا بتونیم بیشتر توضیح بدیم.
 

Goroop.ir

Member
میشه یک نمونه بدید ؟

نمیدونم این امکان رو phpnuke داره یا نه . مثلا یک کاربر لاگین کرده باشه و در صفحه اصلی اسم اون کاربر رو بنویسه .

یا مثل همین سایت مجید انلاین که نمایش میده چه کاربرانی الان در سایت لاگین کرده اند (کاربران فعال)

فکر کنم الان دیگه منظورم رو بهتر فهمیده باشید . من همچین کدی رو میخام
 
دوست عزیز كدی رو كه میخواهید باید با توجه به ساختار دیتابیس و نحوه نگهداری اطلاعات كاربران خودتان بسازید، من كلیات رو براتون شرح دادم نباید خیلی سخت باشه !
  • به یك table برای نگهداری session و id كاربر مربوطه احتیاج دارید
  • به یك table برای نگهداری اطلاعات كاربر (نام كاربر، رمز عبور و ....) كه در این table آخرین زمان ورود به سیستم كاربر ثبت شده
  • به یك روال (function) كه در تمام صفحات در ابتدای صفحه اجرا بشه و هر بار آخرین زمان ورود كاربر رو چك كنه و اگه از زمان معینی (مثلا 15 دقیقه) بیشتر شد اون كاربر رو آفلاین اعلام كنه.
در این روش فرض شده كه یك روال در ابتدای بار گذاری صفحات كوكی كاربر رو چك میكند و در صورت وجود session_id در كوكی كاربر آنرا با مقدار موجود در table session مقایسه میكند و اگر یكی بود كاربر را به سیستم وارد میكند و همچنین زمان آخرین ورود را به زمان جاری تغییر میدهد.

امیدوارم بتونه بهتون كمك كنه
من با nuke و vBulletin ندارم و نسخه از اونها رو هم ندارم كه ساختار دیتابیس و نحوه authentication كاربری اونها رو ببینم ولی اكثر این برنامه ها از همین ساختار تبعیت می كنند.
 

Goroop.ir

Member
bmossavari جان ممنونم از اینکه وقتت رو صرف این تاپیک کردی . ولی اگر یک نمونه میزاشتی ممنونت میشدم .


من دقیقا همین نمایش انلاین و افلاین بودن کاربر میخام . مثل همین مجید انلاین . که وقتی شما login میکنید یوزرنیمتون میره در قسمت کاربران فعال و اگر هم logout کنی هم یوزرنیمت از بخش کار بران فعال پاک میشه .

من همین رو میخام .
کسی نیست یک نمونه کد بزاره اینجا ؟


حالا اگر یک نفر بیاد این کد رو بزاره بعد همه هم میان یکم کد رو ویرایش میدن و میگن بفرما همینو فقط میخاستی ؟

ادم هایی مثل .. ... .. . . . .. و .... . و .... و .... که خیلی ادعا دارن این کار هارو میکنن وقتی بلد نیستن پست ارسال نمیکنن و منتظر میمونن تا یک نفر بیاد جواب رو بده و بعد اونها هم شروع میکنن تا تاپیک رو ببرن روی هوا .



خلاصه اگر کسی هست نمونه بزاره ممنونش میشم .
 

jhoseini

Member
همونطور که جناب bmossavari فرمودن زیاد سخت نیست، یه روشش رو من اینجا مینویسم
بالاي فايل اصلي (فايلي که تو هر بار load شدن صفحه include ميشه)
PHP:
<?
...
$login_appearance = 600; // 10min, agar karbar bedune logout karan, safhe ro close kone, system baiad bad az ie zaman e moshakhas ke karbar access nemikone ip sho az list kharej kone
mysql_query(" delete from `online_users` where `last_access_time`<".date("U")."+$login_appearance ");
if(user_login($_SESSION['username'], $_SESSION['password'])){
	$user_ip = $_SERVER['REMOTE_ADDR'];
	$res = mysql_query(" select * from `online_users` where `user_ip`='$user_ip' liumit 1 ");
	if(mysql_num_rows($res)==1){
		mysql_query(" update `online_users` set `username`='".$_SESSION['username']."' , `last_access_time`='".date("U")."' where `user_ip`='$user_ip' liumit 1  ");
	} else {
		mysql_query(" insert into `online_users` (`username`, `user_ip`, `last_access_time`) values ('".$_SESSION['username']."','".$user_ip."', '".date("U")."') ");
	}
}
...
?>
داخل تابع مربوط به logout يه خط ,ysql_query اضافه کنيد که ip کاربر رو از تيبل اعضاي آنلاين حذف کنه
حالا با يه select از تيبل online_users ميتونيد اعضاي آنلاين رو در بياريد
اگه شرط user_login رو برداريد و ... ميتونيد کاربران ميهمان رو هم ثبت کنيد




اینم هست (نمیدونم hba یا m_tabib نوشته بود
169.gif
):
PHP:
<؟
session_start();

/* Define how long the maximum amount of time the session can be inactive. */
define("MAX_IDLE_TIME", 3);

function getOnlineUsers(){

if ( $directory_handle = opendir( session_save_path() ) ) {
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) ) {
if($file != '.' && $file != '..'){
// Comment the 'if(...){' and '}' lines if you get a significant amount of traffic
if(time()- fileatime(session_save_path() . '\\' . $file) < MAX_IDLE_TIME * 60) {
$count++;
}
}
closedir($directory_handle);

return $count;

} else {
return false;
}

}  
?>


این هم شاید بدرد بخوره:
PHP:
<?
include('http://www.irdesigners.com/usersonline/users.php');
?>

-----------------------------------

آقاي Goroop.ir
لطفاً از بچه ها انتظار نداشته باشيد اين کارهاي ساده رو براتون انجام بدن
اين يه جور توهينه که انتظار داريد بقيه کاراي شما رو انجام بدن تا شما فکر کنيد چيزي بارشونه
اميدوارو منظور منو درک کنيد
هرچي دانش آدم بيشتر ميشه، مشغلش بيشتر ميشه، و حوسلش کمتر

موفق باشيد : )
 
آخرین ویرایش:

Goroop.ir

Member
اقا دم همتون گرم - bmossavari و jhoseini از کمکتون مممممممممممممممممممممممممممممممنونم


لطفاً از بچه ها انتظار نداشته باشيد اين کارهاي ساده رو براتون انجام بدن

دوست عزیز میلیارد ها نفر هستن که همین الان دنبال همچین چیزی هستن بعد شما به این میگید یک کار ساده ؟ اگر ساده بود که من جواب رو خیلی جلو تر از این ها میگرفتم . چطور بچه میرن برای یک نفر که سوالش یک چیز نامفهومه کمک میکنن بعد من که سوالم در مورد خود Php هستش باید بهش بگید یک کاره ساده و بچه ها نباید به این سوال من پاسخ بدهند ؟




________________________________________________________________________________________

در ضمن من از کدی که شما دادید استفاده نکردم و یک اسکریپت پیدا کردم که این داخلش بود و منم کپی کردم و جای گزین کردم .

تشکر از شما هم بخاطر این بود که وقتتون رو صرف این تاپیک کردی . خلاصه از من نارحت نشین اخه دلم از دنیا خیلی پوره . اره درسته . من نباید این ها رو اینجا بگم ولی جایی بهتر از اینجا پیدا نکردنم .
 
آخرین ویرایش:
خوشحالم که موفق شدید مشکلتون رو حل کنید.
پیشنهاد می کنم اسکریپتی که پیدا کردید رو اینجا بگذارید تا دوستان دیگر با مشکل مشابه هم بتونند از آن بهره ببرند :wink:
 

جدیدترین ارسال ها

بالا