مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

تاپیک مورد نظر بسته شده است

کاربر سایت

mohammadd

عضویت از 1395/12/08

نحوه ثبت Log خروج از سایت با بستن مرور گر

  • دوشنبه 21 خرداد 1397
  • 09:24
تشکر میکنم

سلام 

میخواستم بدونم چجوری میشه زمان خروج کاربر از سایت رو با بستن مرورگر ثبت کرد؟؟

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

یه کد جاوا هم پیدا کردم که گذاشتم تو site master ولی هربار که کاربر تو پروفایلش یه صفحه جدید باز میکرد یه لاگ ثبت میکرد و مشخص نمیشد که کدوم لاگ خروجه

ممنون میشم راهنمایی کنید

کد Ajax سمت کاربر
<script>
    window.onbeforeunload = function (evt) {
    $.ajax({
        url: "UserService.asmx/UpdateLogoutInfo",
        contentType: "application/json; charset=utf-8",
        type: "POST",
        success: function (data) {
            //alert(data);
        },
        error: function (x, y, z) {
            alert(x.responseText + "  " + x.status);
        }
    });
}
</script>
کد سمت سرور و ثبت در فایل متنی
[WebMethod]
        public string UpdateLogoutInfo()
        {
            //create a text file and write logout time there.
            LogTimeInFile("Log Out Time is:" + DateTime.Now.ToString() + Environment.NewLine);
            return "";
        }

        public void LogTimeInFile(string strLine)
        {
            string path = Server.MapPath("~/log.txt");
            if (!File.Exists(path))
                File.Create(path).Dispose();
            File.AppendAllText(path, strLine);
        }

اینم کدی که گفتم با این کد ثبت میکنه ولی نمیخوام اسکریپتی باشه که اگه به هر دلیلی کاربر جاواش خاموش بود کار نکنه یا حداقل فقط خروج کاربرو ثبت کنه

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 21 خرداد 1397
  • 17:32
کاربر سایت

mohammadd

عضویت از 1395/12/08

  • سه شنبه 22 خرداد 1397
  • 11:50

اینم همون تیکه کدی که گذاشتم حالا برای ثبت آخرین خروج یه راهی پیدا میکنم

الان مشکلم اینه تو Site.Master که این کد Ajax رو مینویسم کار نمیکنه و داخل تابع نمیره که کدهامو اجرا کنه

کاربر سایت

mohammadd

عضویت از 1395/12/08

  • چهارشنبه 23 خرداد 1397
  • 08:51

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

برای این کار از یه WebSrvice استفاده کردم که کدهای داخلش به این صورته

 [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]

    public class Ajax_Function : System.Web.Services.WebService
    {
        [WebMethod(EnableSession=true)]
        public string Logout()
        {

        }
    }

که فقط کافیه 

 [System.Web.Script.Services.ScriptService]

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

و اینکه نکته ای که داره اینکه برای استفاده تو webService باید تابع از حالت Static خارج بشه و تنها حالت Public داشته باشه

    <script>
        window.onbeforeunload = function (evt) {
            $.ajax({
                url: "Ajax_Function.asmx/Logout",
                contentType: "application/json; charset=utf-8",
                type: "POST",
                success: function (data) {
                },
                error: function (x, y, z) {
                }
            });
        }
    </script>

اینم تیکه کد Ajax که میره داخل WebSrvice

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

تاپیک مورد نظر بسته شده و امکان درج پاسخ وجود ندارد

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)