PDA

View Full Version : بهترین راه حل فهمیدن آنلاین و آفلاین بودن کاربر لاگین کرده ؟ چیست ؟



tarsim
چهارشنبه 07 فروردین 1392, 17:50 عصر
سلام دوستان من چندیدن راه رو دیدم که میشد فهمید کاربر الان آنلاینه یا آفلاینه اما همش زیاد جالب نبود. مطمئنم که یک راه حل خوب باید باشه.خب تا اینجا که من میدونم باید و قتی کاربر لاگین میکنه حالا توی بانک با هر جای دیگه یک فیلدی به عنوان 0 یا 1 یه هر چیز دیگری که نشان میده کاربر لاگین کرده ثبت شده خب تا ینجای کار مشکلی نیست و مثلا مقدار 1 ثبت میشه . ووقتی logout کرد مقدار 0 میشه. مشکل اینجاست شاید کاربر کل مرورگر با تبش رو ببنده که همه به نظر من بیشتر اینکار رو میکنن تا اینکه logout کنن من توی همین سایت برنامه نویس مطالب زیادی راجبش خوندم و لی فکر کینم راه حل قطعی نباشه مثلا کاربر وارد هر صفحه ای شده تاریخ ورودش ثبت شه و تخمین زده شه و ... . شما سایت ف ی س ب و ک رو ببینید خیلی از این سایت ها هستن تا کار بر آف میشه نهایت 5 ثانیه بعد نشوون داده میشه . حالا به نظر شما این چه الگوریتمی داره ؟ دوستان لطفا اگر کسی نظری داره و تکراری نیست کمک کنه .مرسی

fakhravari
چهارشنبه 07 فروردین 1392, 20:08 عصر
میتوانید زمان ورود کاربر نام کاربری اونو درون یک لیست قرار دهید.
و در سشن یا کش بزارید.

tarsim
پنج شنبه 08 فروردین 1392, 16:02 عصر
تشکر از جواب شما اما این راه هم خوب زیاد دقیق نیست . من چون با این روش من باید یه تایمی به سیشن بدم خب فکر نمیکنم راه حل اساسی باشه . مشکل اساسی انجاست از کجا باید فهمید کاربر مرورگرش یا تبش رو بسته ؟آیا این روش شما میتونه خوب باشه ؟

saeed31641
پنج شنبه 08 فروردین 1392, 18:34 عصر
درست دوست عزیز راه حل اقای فخروی مناسب نیستند منم شدیدا دنبال چنین راه حلی البته برای اینکه هر کاربر یه با یوزر و پسوردش لوگین بشه

tarsim
پنج شنبه 08 فروردین 1392, 19:31 عصر
سلام دوست عزیز به احتمال زیاد روش های بهتری هم هست من از دوستان خواهش میکنم نظرات خودشون رو بیان بازگو کنن تا با همفکری هم بهترین رو استفاده کنیم.

omid yeganeh
سه شنبه 11 شهریور 1393, 18:24 عصر
با سلام
اول یه فیلد توی دیتابیس میسازی مثلا status و Type این فیلد رو bit میذاری که فقط True , False میگیره که True یعنی کاربر آنلاینه و False یعنی کاربر آفلاینه
حالا به پروژت یه Global.asax اضاف میکنی و توی Session_End باید بگی که وقتی کاربر لاگین کرد مقدار False رو به True تغییر بده این یعنی کاربر انلاینه
و بهد میای توی Web.config و بین دو تگ <system.web> این کد رو اضافه میکنی <sessionState timeout="1" cookieless="AutoDetect"/> حالا میتونی timeout رو هر زمانی خواستی بذاری در حال حاضر اگه کاربر پس از لاگین کردم مرورگر رو ببنده به از 1 دقیقه True به false تبدیل میشه و کاربر افلاین میشه

اینو تست کن ببین چطوره اگر هم راه بهتری پیدا کردی منم در جریان قرار بده ممنون

موفق باشی داداش

CsharpNevisi
چهارشنبه 12 شهریور 1393, 23:11 عصر
خب ببین ما دوتا معقوله اینجا داریم .. !!!
یک این که کاربر خارج شه و بعد از رفرش شدنصفحه چراغش خاموش شه ....
دوم این که بعد از خروج همون لحضه بدون پست بک و رفرش شدن چراغش خاموش شه.. !!
برای راه کار اول همون دیتابیس خوبه و میتونه کارتو راه بنداز
از این کد استفاده کن ... !!!
ین کدهای اچ.تی.ام.الت میشه :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>


<!DOCTYPE html>


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body runat="server" id="Bodyy" onunload="Bodyy_Unload">
<form id="form1" runat="server">
<div>

</div>
</form>
</body>
</html>

اینم کدهای C# و بیهایند کدت میشه :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace WebApplication2
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{


}


protected void Bodyy_Unload(object sender, EventArgs e)
{
// اینجا کدهاتو اضافه کن
System.IO.File.WriteAllText(Server.MapPath(".") + "/mohsen fathi.txt", "Unload");
// اینجا کدهاتو اضافه کن
//********************************************* تو این رویداد میتونی بانکتو به روز کنی
}
}
}
برای کار دوم تو باید پیغام لحضه ای برای اپدیت بفرستی که با اسفاده از signalr این امکان هست ... !!!!
یه معقوله ایه برای خودش ... !!!
سوالی بود در خدمتم .. !!!

AmirGhasemi
جمعه 14 شهریور 1393, 09:52 صبح
سلام
معمولا بهترين روشي كه توصيه ميشه روش اميدآقاي يگانه است كه در بالا اشاره كرد
اما اگر مي‌خواهي لحظه اي متوجه آفلاين شدن بشي با عر معذرت روش دوست عزيزمون محسن آقاي فتحي خيلي جالب نيست
براي دريافت لحظه‌اي در ادامه كدهاي آقاي اميد يگانه مي‌توانيد از SignalR استفاده كنيد كه با جاوااسيكريپ اعلام مي كنه

CsharpNevisi
جمعه 14 شهریور 1393, 10:25 صبح
اما اگر مي‌خواهي لحظه اي متوجه آفلاين شدن بشي با عر معذرت روش دوست عزيزمون محسن آقاي فتحي خيلي جالب نيست


من خواستم کدیو کامل کنم که
tarsim (http://barnamenevis.org/member.php?268101-tarsim)
http://barnamenevis.org/images/statusicon/user-offline.png خودش نوشته بود .. !!!
برای لحضه ای که من به عنوان روش دوم مطرح کردم مسلما بانک چیز خوبی نیست .. !!!
همچین کاراییو میشه خیلی خیلی راحت تر با جی کوئری اناج م داد تا asp ... درست مثل کاری که خودم تو پشتیبانی انلاین سایتم که که تماما جی کوئری هستش انجام دادم