نمایش لیست کاربران آنلاین

taghtagh

عضو جدید
سلام دوستان و خسته نباشید.
من یه سوال دارم : از من لیست کاربران آنلاین رو خواستن ، کاری که الان انجام دادم اینه که یه فیلد تو دیتابیس گزاشتم isonline که موقع لاگین true میشه و موقع logout یا موقع رخ دادن session end این فیلد false میشه ، معمولی که کار میکنم درسته منتها بعضی وقتا (احتمالا به خاطر آنلاین شده کاربرای زیاد) سشن ها از بین میرن ، کاربر برمیگرده صفحه لاگین ، رویداد session end هم اجرا میشه ولی سشن مربوط به یوزر من از بین رفته و نمیدونه باید چه کاربری رو آفلاین کنه :( ، شما ها برای لیست کاربرای آنلاین چیکار میکنین ؟ تعداد نمیخوام ها ، اسماشون رو میخوام ؟
مــــــــــــــــــــــرسی
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام دوستان و خسته نباشید.
من یه سوال دارم : از من لیست کاربران آنلاین رو خواستن ، کاری که الان انجام دادم اینه که یه فیلد تو دیتابیس گزاشتم isonline که موقع لاگین true میشه و موقع logout یا موقع رخ دادن session end این فیلد false میشه ، معمولی که کار میکنم درسته منتها بعضی وقتا (احتمالا به خاطر آنلاین شده کاربرای زیاد) سشن ها از بین میرن ، کاربر برمیگرده صفحه لاگین ، رویداد session end هم اجرا میشه ولی سشن مربوط به یوزر من از بین رفته و نمیدونه باید چه کاربری رو آفلاین کنه :( ، شما ها برای لیست کاربرای آنلاین چیکار میکنین ؟ تعداد نمیخوام ها ، اسماشون رو میخوام ؟
مــــــــــــــــــــــرسی

نباید مشکلی پیش بیاد در صورتی که از Signout استفاده کنید برای صفحه. session ها سمت کلاینت هست. اگر هر کلاینت تنها در آن واحد با یک آی دی بتونه وارد شه مشکلی پیش نمیاد :gol:
 

Sharif_

مدیر بازنشسته
والا اطلاع زیادی در مورد Asp.net ندارم ولی تا اونجایی که سوادم قد میده فکر کنم شما از SessionID به عنوان شناسایی کاربر استفاده نمی کنید
البته کلاس های بهتری هم برای این کار وجود داره
برای شما بهتره همون جا که فیلد isonline رو ایجاد کردید یک فیلد SessionID هم اضافه کنید و در رخداد SessionEnd کاربر رو با استفاده از ID از لیست افراد آنلاین حذف کنید
 

taghtagh

عضو جدید
نباید مشکلی پیش بیاد در صورتی که از Signout استفاده کنید برای صفحه. session ها سمت کلاینت هست. اگر هر کلاینت تنها در آن واحد با یک آی دی بتونه وارد شه مشکلی پیش نمیاد :gol:
سشن سمت سروره نه کلاینت ، لوکال هم مشکلی نداشتم ولی وقتی آپلود شد این مشکل پیش اومد :(



والا اطلاع زیادی در مورد Asp.net ندارم ولی تا اونجایی که سوادم قد میده فکر کنم شما از SessionID به عنوان شناسایی کاربر استفاده نمی کنید
البته کلاس های بهتری هم برای این کار وجود داره
برای شما بهتره همون جا که فیلد isonline رو ایجاد کردید یک فیلد SessionID هم اضافه کنید و در رخداد SessionEnd کاربر رو با استفاده از ID از لیست افراد آنلاین حذف کنید

متوجه نشدم منظورتون از SessionID چی هست ؟ من سشن رو خودم میسازم ، Session["user"] ، که موقع لاگین ساخته میشه و موقع خروج یا وقتی که رویداد SessionEnd تو فایل Globa;.asax اجرا میشه این سشن از بین میره و قبل از، از بین رفتنش من فیلدم رو تو دیتا بیس فالس میکنم ، وقتی اون قسمتی رو که تو global.asax هست کامنت میکنم مشکل ندارن :(
 

Sharif_

مدیر بازنشسته

متوجه نشدم منظورتون از SessionID چی هست ؟ من سشن رو خودم میسازم ، Session["user"] ، که موقع لاگین ساخته میشه و موقع خروج یا وقتی که رویداد SessionEnd تو فایل Globa;.asax اجرا میشه این سشن از بین میره و قبل از، از بین رفتنش من فیلدم رو تو دیتا بیس فالس میکنم ، وقتی اون قسمتی رو که تو global.asax هست کامنت میکنم مشکل ندارن :(
هر جلسه ای که ایجاد می کنید به انحصار یک SessionID بهش تعلق میگیره
SessionID یک قسمت از کوکی هست که به مرورگر ارسال میشه
با استفاده از SessionID است که کوکی های سمت کلاینت رو به جلسه ذخیره شده در سرور وصل می کنیم
شما SessionID رو هم در بانک ذخیره کنید بعد میتونید فرد موردنظر رو پیدا و از لیست کاربران انلاین حذف کنید
اینا تجربه من تو PHP بود و اگر هم اشتباه نکنم می تونید با استفاده از دستور زیر SessionID جلسه فعال رو دریافت کنید
کد:
sSessionID = HttpContext.Current.Session.SessionID
یا وقتی جلسه رو ساختید ازSession.SessionID استفاده کنید
 
آخرین ویرایش:

taghtagh

عضو جدید
ممنون دوستان ، یه مقاله دیدم در مورد کاربران آنلاین در ASP.net که استفاده کردم و فعلا که داره جواب میده :D ، اینم لینکش که دوستان دیگه هم بتونن استفاده کنن فقط یه دو تا for توش نوشته که شرطش جالب نیست و بعضی وقتا باگ میده ، اون for ها رو یه مدل دیگه بنویسین حله ، مثلا داره :
i!=dt.Rows.Count;
که بنویسیم : i < dt.Rows.Count بهتره و مشکلی پیش نمیاد

http://www.how2learnasp.net/pdf/8ae70d8c-6f62-4148-8089-71069693ae1f.pdf

 

heil

عضو جدید
آی دی کاربران آنلاین رو توی لایه aplication (روی رم سرور) ذخیره کنید ....
اینجوری با ورود و خروج زیاد کاربران .... بابای دستابیستون در نمیاد ..
و با سرعت بسیار بالا هم بهش دسترسی خواهید داشت. >>>> مشکل منقضی شدن سشن هم نخواهید داشت ....
یا حق
 

heil

عضو جدید
مقالتو رو دیدم..


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

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

younesr

عضو جدید
درخواست کمک در مورد session

درخواست کمک در مورد session

سلام دوستان.
من یک لوگین ساختم بعد توی مستر پیج یک botton برای خروج گذاشتم و visibel ان رو false کردم و قسمت session همان طور که در پایین می بینید گفتم اگه کاربر مهمان بود این botton رو نشون نده و اگر true بود botton خروج رو نشون بده اما مشکل اینجاست که و قتی صفحه ای رو run می کنم در هر دو حالت botoon رو نشون میده مشکل چیه اگر کسی میدونه کمک کنه ممنون میشم.منتظرم .با تشکر

کد:
if (Session["uname"] == "false")
        {

            Label3.Text = "کاربر مهمان";
            btnout.Visible = false; 
        }
        else

            Label3.Text = " " + Session["uname"].ToString();
        btnout.Visible = true;
        
    }
 

Similar threads

بالا