رفتن به مطلب

سوال از نحوه تشخیص آنلاین بودن کاربر


ارسال‌های توصیه شده

سلام خدمت دوستان واساتید محترم انجمن 

IPS از چه طریقی تشخیص میده کاربری الان آنلاین هست ؟ بطور مشخص می دانید چطور با مرور گر دراین خصوص مرتبط میشه و یا کدامیک از فیلدهای دیتابیس IPS در این خصوص می باشد؟

برای اپلیکیشن سایت لازمش دارم ، ظاهرا گذاره هایی که خود IPS برای اینکار برای ما قرار داده ، در نسخه های رایگان غیرفعال می باشد ! لذا دنبال شیوه کارش هستم .

باتشکر 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده

درود.

شما می توانید با Load کردن کاربر مورد نظر آن را فراخوانی کنید (ایجاد Object ممبر و لود کاربر)، سپس با دستور زیر وضعیت Online بودن آن را بررسی کنید :

$member->isOnline(): Return whether the member is currently online or not.

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

https://invisioncommunity.com/4docs/advanced-usage/development/working-with-members-r179

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

فعلا تنها روش استفاده از اسکریپت PHP می باشد با بررسی که کردم.

موفق باشید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام اگه دارید جدا از IPS کار می کنید یا به نوعی api برای کلاینت مینویسید میتونید داخل تیبل core_members فیلد last_activity زمان آخرین فعالیت کاربر هست و فیلد last_visit زمان آخرین بازدید دقیق تر میخواید تیبل core_member_history آخرین اقدامی که کاربر انجام داده هست که زمان هم داره . @};-

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده
در 10 ساعت قبل، حسن قاسمی نیا گفته است :

سلام اگه دارید جدا از IPS کار می کنید یا به نوعی api برای کلاینت مینویسید میتونید داخل تیبل core_members فیلد last_activity زمان آخرین فعالیت کاربر هست و فیلد last_visit زمان آخرین بازدید دقیق تر میخواید تیبل core_member_history آخرین اقدامی که کاربر انجام داده هست که زمان هم داره . @};-

درود.

ایشون دقیقا Online و Offline بودن کاربر رو می خواستن و تنها راهش همان isOnline هستش.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 19 دقیقه قبل، محمد قاسمی گفته است :

درود.

ایشون دقیقا Online و Offline بودن کاربر رو می خواستن و تنها راهش همان isOnline هستش.

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

<?php

$username = '....';
$password = '....';


require ('../init.php');

$member  = \IPS\Member::load($username, 'name');

if ( !$member->member_id )
{
    echo'Username doesnt exist ';
}
elseif ( password_verify( $password, $member->members_pass_hash ) or ( $member->members_pass_salt and mb_strlen( $member->members_pass_hash ) === 32 and $member->verifyLegacyPassword( $password ) ) )
{
    try
    {
        \IPS\Login::checkIfAccountIsLocked( $member, TRUE );
        
        echo ' Login successful - authenticated member is $member';
    $member->isOnline($member);
    echo $member;
    
      
        
    }
    catch ( \IPS\Login\Exception $e )
    {
        echo' Account is locked due to too many failed logins';
    }
}
else
{
    echo'Password incorrect';
}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده

باید اینجوری استفاده کنید :

if($members->isOnline() == 1){
}

isOnline یک متد بازگشتی می باشد.

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

 

موفق باشید.

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 46 دقیقه قبل، محمد قاسمی گفته است :

باید اینجوری استفاده کنید :


if($members->isOnline() == 1){
}

isOnline یک متد بازگشتی می باشد.

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

 

موفق باشید.

 

 

متشکرم از راهنماییتون 

ولی یک نکته ، اونم اینکه چرا وقتی با این php  وارد حساب کاربری می شوم ، در صفحات دیگر مرور گر

قاعدتا باید با رفرش کردن اون صفحات سایت  که ازقبل بازه ، بایددراونها هم  کاربر خودکار login بشه ولی چنین اتفاقی نمی افته !

چطور اینو میشه به مرورگر اطلاع داد؟ ظاهرا login کردن کاربر در سایر صفحات مرور گر هم بااین دستور نمیشه فهمید! 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده
لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 15 ساعت قبل، محمد قاسمی گفته است :

درود.

ایشون دقیقا Online و Offline بودن کاربر رو می خواستن و تنها راهش همان isOnline هستش.

سلام و عرض ادب ؛

 

معمولا تو طراحی وب سرویس از کلاس های داخلی اسکریپت استفاده نمیشه تنها از دیتابیس استفاده میشه چون کلاس های داخلی مستلزم لود قالب هم هستن و یک برنامه سنگین برای api هست لذا همیشه وب سرویس رو با ابتدایی ترین متد های php مینویسن برای بارگذاری و لود سریع تر دیتا برای همین فیلد و جدول معرفی کردم که بتونه زمان آخرین فعالیت کاربر رو دستی بررسی کنه

و استفاده از isOnline تنها راه بر اساس توابه خود IPS هست جدا از این تابه میشه دستی با کلاس های داخلی IPS هم این موردو چک کرد @};-

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده
در 8 ساعت قبل، حسن قاسمی نیا گفته است :

سلام و عرض ادب ؛

 

معمولا تو طراحی وب سرویس از کلاس های داخلی اسکریپت استفاده نمیشه تنها از دیتابیس استفاده میشه چون کلاس های داخلی مستلزم لود قالب هم هستن و یک برنامه سنگین برای api هست لذا همیشه وب سرویس رو با ابتدایی ترین متد های php مینویسن برای بارگذاری و لود سریع تر دیتا برای همین فیلد و جدول معرفی کردم که بتونه زمان آخرین فعالیت کاربر رو دستی بررسی کنه

و استفاده از isOnline تنها راه بر اساس توابه خود IPS هست جدا از این تابه میشه دستی با کلاس های داخلی IPS هم این موردو چک کرد @};-

درود بر شما.

شما اگر N کلاس را لود کنید و  تا زمانی که از آنها استفاده نکنید فقط مقداری فضای RAM استفاده شده است و ربطی به قالب نداره! به صورت پیش فرض در RAM موجود هستند.

از این رو 1 بار لود شدن و بارگذاری در RAM کافیست و نیازی به لود مجدد نیست، سیستم های مدیریت محتوا به همین دلیل از Class ها و Framework ها استفاده می کنند.

برای مثال، Application های اندرویدی که با زبان JAVA فقط RAM اشغال می کنند و تا زمانی که برنامه باز باشد Class ها لود شده اند و آماده استفاده چند باره.

رقابت در بین Framework های PHP بر سر کمتر مصرف شدن Resource های میزبانی آنها و سرعت است، همانطور که برتری اصلی سایت ساز IPS به نسبت ما بقی انجمن ساز ها و سایت ساز ها میزان مصرف Resource میزبانی کم و لود سریع می باشد که این امر با Cache کردن تنظیمات به صورت فایلی در پوشه DataStore و به صورت پایگاه داده ای برای مطالب و محتوای قالب و ... استفاده می کند،  برای مشاهده سرعت واقعی کافیست 1 بار کش را از "پشتیبانی > بررسی مشکل" پاک کنید و مشاهده کنید، که در آخر متوجه خواهید شد بعد از 1 بار لود شدن دیگر نیاز به لود مجدد نیست و سرعت واقعی سیستم را مشاهده خواهید کرد، و یا در زمانی که Web سرویس میزبان شما Restart شود برای 1 بار یک زمان بارگذاری اولیه زیادی خواهید داشت و این تغییرات قابل مشاهده هستند می توانید بررسی کنید.

موفق باشید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...