دسته بندی ها
16:18 1400/04/29

ذخیره زمان خروج کاربر در همه حالات Asp.net core

مشخصات سوال کننده :
کاربر : zoheirs     امتیاز کاربر : 5     رتبه کاربر : 110
دسته بندی : Asp.net Core Html جاوا اسکریپت جی کوئری

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3634
هوش مصنوعی

پاسخ هوش مصنوعی

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

شما می توانید از رویداد beforeunload استفاده کنید تا زمانی که کاربر در حال خروج است، یک درخواست به سرور ارسال کنید. به این صورت:

window.addEventListener("beforeunload", function (event) {
    navigator.sendBeacon("/api/your-endpoint", JSON.stringify({ exitTime: new Date() }));
});

در این کد، شما باید آدرس /api/your-endpoint را به آدرس مناسب API خود تغییر دهید که زمان خروج را ذخیره کند. با استفاده از navigator.sendBeacon، می توانید اطمینان حاصل کنید که داده ها حتی اگر کاربر بلافاصله صفحه را ببندد نیز ارسال می شوند.

سپس در سرور خود، می توانید اطلاعات زمان خروج را در دیتابیس ذخیره کنید. یک مثال از نحوه دریافت این داده ها در ASP.NET Core:

 [HttpPost]
public IActionResult YourEndpoint([FromBody] ExitTime exitTime) {
    // کد ذخیره سازی زمان در دیتابیس
    return Ok();
}

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

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 21:32 1400/04/29

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

 

نمایش پیغام قبل از بسته شدن مرورگر توسط جاوا اسکریپت

فرض کنید می خواهیم وقتی کاربر مرورگر رو بست یک پیغام نمایش داده بشه. حالا از همین مثال میتونید استفاده کنید و به جای پیغام میتونید اطلاعات رو به سمت سرور بفرستید یا اینکه در دیتابیس اطلاعاتی رو ذخیره کنید.

window.onbeforeunload = function (e) {
   e = e || window.event;
   // For IE and Firefox prior to version 4
   if (e) {
      e.returnValue = 'Sure?';
   }
   // For Safari
   return 'Sure?';
};

همونطوری که می بینید احتمالا مرورگر Chrome از دستورات بالا پشتیبانی خوبی نکنه.

 

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

$(document).ready(function () {
    window.hideWarning = false;
    window.addEventListener('beforeunload', (event) => {
        if (!hideWarning) {
            event.preventDefault();
            event.returnValue = '';
        }
    });
});

دستورات بالا رو هم چک کردم در برخی حالات جواب داد.

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
پاسخ دهنده : zoheirs 11:38 1400/04/31

با سلام و تشکر

البته این روش جواب داد اما هر بار که میخوام برم روی صفحه دیگه این کد اجرا میشه  البته در قسمت Admin  گزاشتم  این خوب نیست چون هر بار رفرش میشه و ایا کدی هست که فقط زمانی که کلا مروگر در حال بسته شدن هست استفاده بشه

به این پاسخ امتیاز بدهید    0
امتیاز: 5 رتبه: 110
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود