ÜYE GİRİŞİ  
Kullanıcı adı :
Parola :
 
  Üye Ol!  
 
 
ANASAYFA HABERLER ASP ASP.NET PHP C/C++ C# JAVA ARAMA İLETİŞİM

ASP.NET
  Expression Web ile Site Yapimi
  Web Server Control Yazmak - 2
  Web Server Control Yazmak - 1
  Sql Cache Dependency
  Web Kontrollerini Etkin Kullanmak
  Xslt Kullanımı
  Bir Web Sayfasının Anatomisi
  Client Script Callback
  Login Kontrollerinin Kullanımı

ASP
  ASP Nesneleri
  29 Soruda ASP
  Matematiksel Uygulamalar
  Select Case Yapısı 2
  Fonksiyon(Function) Kullanımı
  IF-ELSE...
  GET Yöntemi ile İşlemler
  Asp de Tarih ve Saat fonksiyonları
  While-wend döngüsü

C Sharp (C#)
  C#'da klasör işlemleri
  C# ile diziyi tersine çevirme
  Çok Kullanılan Kontroller-1
  C# ile Kronometre Uygulaması
  Overloaded Metotların Gücü
  C# ile XMLQuery Örneği
  Rastgele Kod Üretimi
  Kontroller ile Çalışma
  Düzenli İfadeler Nedir?

DUYURULAR

F# Microsoft dil teknolojisinin en yeni üyesi.Common Lisp-Slime-Emacs tarzında etkileşimli,kıvrak,sonuçların anında görülebildiği ve yüksek performanslı bir betik dil olarak özetleyebiliriz bu yeni dili. devamı >>


Türk Telekom'dan yapılan yazılı açıklamada, Telekomünikasyon Kurumu'nun onayladığı yeni tariflerin, internet servis sağlayıcı şirketlerin maliyetlerini önemli oranlarda düşüreceği aktarıldı. devamı >>


Kişi Bazlı Online Kullanıcılar | Asundinay.Com
Asp.Net İçin Eklenmiş Makale
 Makale Adı  :  Kişi Bazlı Online Kullanıcılar
 Yayın Tarihi :  12.08.2007 18:11:18 Ekleyen :  Kazım Aydın Okunma : 202

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.


 

Kaynak : csharpnedir.com


 

Asp.Net İçin Eklenmiş Tüm Makaleler
Asp.Net İçin En Son Eklenen 5 Makale
 Makale Adı  :  Expression Web ile Site Yapimi
 Yayın Tarihi :  12.08.2007 19:57:26 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Web Server Control Yazmak - 2
 Yayın Tarihi :  12.08.2007 19:52:45 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Web Server Control Yazmak - 1
 Yayın Tarihi :  12.08.2007 19:48:59 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Sql Cache Dependency
 Yayın Tarihi :  12.08.2007 18:36:18 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Web Kontrollerini Etkin Kullanmak
 Yayın Tarihi :  12.08.2007 18:34:25 Ekleyen :  Kazım Aydın Makaleyi Oku  

C/C++
  C ögreniyorum -8-
  C ögreniyorum -7-
  C ögreniyorum -6-
  C ögreniyorum -5-
  C ögreniyorum -4-
  C ögreniyorum -3-
  C ögreniyorum -2-
  C ögreniyorum -1-
  İlk C++ Programımız

JAVA
  Java ile Histogram Eşitleme
  JAVA İçinde Thread Kullanımı
  Serialization İşlemleri 2
  Serialization İşlemleri
  İlk Bakışta JSP
  Servletler ile Web Sayfaları
  Java ile Grafik Çizim
  Java, MySql Bağlantısı
  JBuilder ile Database

PHP
  php dersleri -1-
  php/access ile silme işlemi
  php ile access'e bağlanma - 2
  php ile access'e bağlanma - 1
  Döngü ve Diziler - BÖLÜM 5
  Döngü ve Diziler - BÖLÜM 4
  Döngü ve Diziler - BÖLÜM 3
  Döngü ve Diziler - BÖLÜM 2
  Döngü ve Diziler - BÖLÜM 1

İSTATİSTİKLER
  Toplam ziyaret :  24742
  Toplam üye sayısı :  1081
  Asp makale sayısı :  20
  Asp.Net makale sayısı :  54
  Php makale sayısı :  26
  C/C++ makale sayısı :  51
  C# makale sayısı :  29
  Java makale sayısı :  33
  Toplam makale saıysı :  213
Copyright asundinay® 2007 Her Hakki Saklidir
Tasarim & Programlama asundinay®