C#nedir?com
 
YAZAR HAKKINDA
Emrah Yiğit
Emrah Yiğit
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
6 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: belirli dilimi girisi kullanici kullanicilarin kullanicinin methodumuzu offline online simdiki update veritabani veritabaninda zamandan zamanin ASP.NET Emrah Yiğit
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : ASP.NET
Yayınlanma Tarihi : 25.5.2005
Okunma Sayısı : 30929
Yorum Sayısı : 5     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 7.3.2021
Turhal Temizer
Mac OS/X Removing CUDA 7.3.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 7.3.2021
Burak Selim Şenyurt
Docker Yerine Podman (Pod Manager) Kullanmak 7.3.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Kişi Bazlı Online Kullanıcılar
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu makalemizde sitelerdeki oturum yönetiminin bir parçası olan kişi bazlı online kullanıcıların gösteriminin veritabanı yardımı ile nasıl yapılacağını anlatmaya çalışacağım. Genelde siteleri ziyaret eden kullanıcıların pek azı “Çıkış” linklerini kullanarak siteyi terkeder ve bunu uygulamayan kişilerin o sistemde offline olduğunu doğrulamak çoğu zaman imkansızdır. Bu yüzden bir kullanıcının sitede sabit bir sayfada bulunduğu süre, belirli bir zaman dilimi(çoğu zaman bu on dakikadır.) kabul edilir ve bunun üzerinden hareket edilerek, o kullanıcının her faaliyet zamanının, zaman dilimi kadar fazlası veritabanında kayıtlanır. Daha sonra veritabanında kayıtlı olan zaman eğer şimdiki zamandan büyük ise o kişi online kullanıcı olarak kabul edilir .İkinci yol ise şimdiki zaman veritabanına kayıt edilerek, eğer veritabanındaki zaman şimdiki zamanın bu zaman dilimi kadar azından büyükse o kişi online kabul edilir. Biz uygulamamız birinci yola göre yapacağız. Yalnız şuna dikkat edilmesi gerekir ki, bu da o kullanıcının her sayfa değişiminde veritabanındaki zamanın update edilmesidir. İsterseniz şimdi uygulamaya geçelim. Uygulamamız basit bir üye girişi örneğinin temellerine dayanmaktadır ve şu adımlardan oluşmaktadır.

• Üye girişi yapılacak ve kullanıcı için Session oluşturulacak.
• Bu kullanıcın son giriş zamanı update edilecek.
• Online kullanıcıların gösterilme işlemi yapılacak.

Bu örneğimizi MySql veritabanı kullarak geliştiriyoruz. Öncelikle “Test” adlı veritabanı içinde “users” adlı bir tablo oluşturalım ve ilk kaydımızı girelim.



Gördüğünüz gibi tablomuzda “id”, “username”, “password”, “lasttime” adlı sütunlarlar bulunmaktadır ve şunu belirtelim ki ilk kaydımızda “lasttime”a (kullanıcının son faaliyet süresine) şimdiki zamanı girmeliyiz. Şimdi sıra geldi formumuzu oluşturmaya, basit bir üye girişi şeklinde aşağıdaki gibi bir form hazırlayabiliriz. Üye giriş formunu bir panelin içine alıyoruz. Giriş yapıldığında Panelimizin visible(görünebilirlik) özelliğine false değeri verilecek.



Daha öncede dediğimiz gibi yapmamız gereken en önemli iki kısım, kullanıcının web sayfa üzerinde yaptığı her faaliyetten sonra veritabanındaki “lasttime” sütununun şimdiki zamandan, belirli bir zaman dilimi kadar fazla olarak girilmesi ve online olan kullanıcıların gösterilmesidir. Biz uygulamamızda zaman dilimini 10 dk olarak kabul ediyoruz.Gelin şimdi uygulamamızın temelleri atalım.

İlk olarak veritabanı bağlantı nesnemizi ve Page_Load methodumuzu oluşturalım. Bu örneğimizde MySql Connector olarak MySQL Connector/ODBC (MyODBC) kullanacağız.

private OdbcConnection conn = new OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};Server=localhost;database=test;uid=root;password=root123");

private void Page_Load(object sender, System.EventArgs e)
{
updatetime(); // Eğer kullanıcı giriş yapmış ise, son zamanını update ediyoruz.
onlines(); // Online kullanıcıların gösterilmesi.
}

Bağlantı nesnemizi ve Page_Load methodumuzu oluşturduktan sonra ilk methodumuzu yazmaya başlayalım. Aşağıdaki method ile eğer kullanıcı giriş yapmış ise, kullanıcının her faaliyetinde, veritabanındaki süreye şimdiki zamanın 10 dakika fazlası değerini vermeyi sağlıyoruz.

private void updatetime()
{
if (Session["id"] != null) {
OdbcCommand update = new OdbcCommand("Update users set lasttime = ’" + DateTime.Now.AddMinutes(10).ToString() + "’ where id = ’" + Session["id"].ToString() + "’", conn);
try
{
conn.Open();
update.ExecuteNonQuery();
conn.Close();
}
catch(Exception ex)
{
durum.Text = ex.Message;
}
}
}

Şimdi Sıra Online kullanıcıların gösterilmesine geldi.

private void onlines()
{
DateTime dt = new DateTime();
onlineusers.Text = "";
conn.Open();
OdbcCommand show = new OdbcCommand("Select * from users", conn);
OdbcDataReader reader = show.ExecuteReader();
while(reader.Read()) {
dt = Convert.ToDateTime(reader["lasttime"].ToString());
if (dt > DateTime.Now) // Eğer Veritabanındaki zaman şimdiki zamandan öndeyse kişi online değilse offline dır.
{
onlineusers.Text += reader["username"].ToString() + ", ";
}
}
conn.Close();
if (onlineusers.Text == "")
onlineusers.Text = "Yok";
}

Üye girişi şeklinde hazırladığımız örneğimizin sisteme giriş kısmına geldik ve bunun için yazacağımız method Button1_Click.

private void Button1_Click(object sender, System.EventArgs e)
{
OdbcDataAdapter finduser = new OdbcDataAdapter("Select * from users where username = ’" + username.Text + "’ AND password = ’" + password.Text + "’", conn);
DataTable dt = new DataTable();
finduser.Fill(dt);
if (dt.Rows.Count != 1) // Giriş Başarısız.
{
durum.Text = "Geçersiz Kullanıcı";
}
else // Giriş Başarılı(Session oluşturuluyor, Veritabanında update yapılıyor ve Online kullanıcılar gösteriliyor)
{
Session.Add("id", dt.Rows[0]["id"].ToString());
updatetime();
onlines();
Panel1.Visible = false;
durum.Text = "Giriş Başarılı";
}
}

Şimdi sıra uygulamamızı denemeye geldi. Hemen giriş yapıyoruz ve sonuçları görüyoruz.

Giriş Yaptığımız Andanki Zaman : 25.05.2005 12:06:xx



Giriş başarılı ise...


Şimdi son olarak veritabanındaki son zaman değerine bakıyoruz.

Gördüğünüz gibi veritabanındaki son zaman şimdiki zamandan 10dk ileride.

Umarım yararlı bir makale olmuştur.

emrahyigit@gmail.com
Makale:
Kişi Bazlı Online Kullanıcılar ASP.NET Emrah Yiğit
  • Yazılan Yorumlar
  • Yorum Yaz
MAY
18
2013
Güzel Teşekkürler.
MAY
17
2009
örneğinizi harfi harfine uyguladım ama hata almaktayım. şifre yazdığım textbox daki değere incorrect syntax near hatası alıyorum.
AĞU
8
2005
Güzel bir örnek olmuş ayrıca mysql kullanmanız daha da iyi olmuş. ASP.NET ile MySQL bağlantısı hakkında kaynak arıyorum. böylece bulmuş oldum.
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor