Merhaba hocam,

Öncelikle sunucuda bir adet MySQL veya MsSQL veritabanında bir tablo daha oluştur.

oluşturacağın tablonun alanlarıda:

Id(int, not null, PK), UserId(int, not null, FK), LastModifyDate(DateTime, null) şeklinde 3 alanı olsun ve user id Unique Index olsun.

client pc buraya ister direk database connection ile erişsin istersen .Net Web API ile json üzerinden erişip(Api daha güvenli olacaktır bağlantı bilgisi vermeyeceksin sonuçta) bu tablodaki alanları sorgulasın kullanıcı bu tabloda yoksa oluştursun ve LastModifyDate alanına tarih basıcaksın ama kullanıcının pc sindeki tarih farklı olabilir bu yüzden GETDATE() sorgusunu çalıştır sql den sana sunucunun tarih ve saatini dönderecektir bu durumda tarih ve saat kullanıcılardan bağımsız olacaktır. kullanıcın pc si program açıksa her 5 dk de bir buraya sorgu göndersin lastModifyDate'yi güncellesin 5 dk uzatsın her işlemde. diyelim kapadı, elektrik gitti en son saat 16:30 olarak kaldı şuan saat 16:45 ve Sunucu tarafında Quartz(C#, Vb.NET, JAVA için var diğerleri için varmı bilmiyorum) kullanarak LastModifyDate alanındaki değeri al ve tekrar GETDATE() çalıştır aradaki dakika farkı 5 dk den fazla ise IsOnline yi 0 yap. Sorun olursa Pm atarsın.

Kolay gelsin.