ASP.net ile online Üyelerin İsimlerini Göstermek

Merhaba
Bu  yazımda bir jquery  ajax işlemileri ile örnek bir uygulama yapacaktım ancak istek üzerine başka bir konu ile ilgili örnek uygumla yapıyorum.Bu yazının konusu ASP.net ile online üyeleri göstermek olacak.  Hemen örneği yapamaya başlayalım ve ilk olarak bir veritabanı  hazırlayalım. Ben Sqlserver 2005 e kullanacağım Access  için yapılması gereken sadece NameSpace olarak Data.SqlClient yerine oledb kullanmak.

 

Veritabanı aşağıdaki gibi :

 

CREATE TABLE [dbo].[Users](

            [User_ID] [int] IDENTITY(1,1) NOT NULL,

            [User_Name] [nvarchar](50) COLLATE Turkish_CI_AS NULL,

            [Password] [nvarchar](50) COLLATE Turkish_CI_AS NULL,

            [Email] [nvarchar](50) COLLATE Turkish_CI_AS NULL,

            [Age] [int] NULL,

            [Last_Login_Date] [datetime] NULL

)


Olayın mantığına bakalım ;
İlk olan üye login sayfasından kullanıcı adı ve şifresi ile sistemem girş yapacak giriş başarılı ise üyenin veritabaındaki  Last_Login_Date alanına o anki sistem satimizden 10 dakika sonrasını yazıyoruz.  Bu süre isteğe bağlı tabi ama genel olarak 10 dk. Kullanılır. Bu mantıkla bakınca online üyeler veritabındaki tarih alanı şuanki tarihten büyük olanlar olacak. Sonra masterpage de session kontrolü yapıp session var ise sayfa her yüklenidiğinde tarih alanını 10 dk ileri alacağız.

Önce login sayfaımızı yapalım ben bunu Default.aspx sayfasında yaptım.

 

Şimdi Default.aspx.cs nin kodlarına geçelim ;

 

 

   17  SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["bag"].ToString());

   18 

   19     protected void Page_Load(object sender, EventArgs e)

   20     {

   21 

   22     }

   23     protected void btnGiris_Click(object sender, EventArgs e)

   24     {

   25         cnn.Open();

   26         string kullanici = txtUserName.Text.Trim();

   27         string sifre = txtPass.Text.Trim();

   28         SqlCommand cmd = new SqlCommand("Select * From Users where User_Name = '" + kullanici + "' and Password='"+sifre+"'",cnn);

   29         SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

   30         if (dr.Read())

   31         {

   32             Session["user_id"] = dr["User_ID"].ToString();

   33             dr.Close();

   34             UpdateLoginTime();

   35         }

   36         cnn.Close();

   37         Response.Redirect("Default.aspx");

   38     }

   39 

   40     private void UpdateLoginTime()

   41     {

   42        cnn.Open();

   43 

   44         DateTime dt=DateTime.Now.AddMinutes(10);

   45         SqlCommand cmd2 = new SqlCommand("UPDATE Users set Last_Login_Date=@mydate where User_ID=@user_id ", cnn);

   46         cmd2.Parameters.AddWithValue("@mydate", dt);

   47         cmd2.Parameters.AddWithValue("@user_id", Int32.Parse(Session["user_id"].ToString()));

   48         cmd2.ExecuteNonQuery();

   49         cnn.Close();

   50 

   51 

   52     }

 

 

MasterPage kodları.

Master pagenin html koduna bir adet asp label ekleyelim ID sini de lblOnlineUsers yapalım.

Şimidi master pagedeki kodlara bakalım. Burarda veritabaından online olan üyeleri getireceğiz ve sitedeki üyenin session daki değeri boş değilse veritababında o üyeye ayit tarih alanını 10 dk. İleri alacğız

 


   17  SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["bag"].ToString());

   18 

   19     protected void Page_Load(object sender, EventArgs e)

   20     {

   21        GetOnlineUsers();

   22         UpdateDate();

   23 

   24     }

   25 

   26     private void UpdateDate()

   27     {

   28         if (Session["user_id"] != null)

   29         {

   30             cnn.Open();

   31 

   32             DateTime dt = DateTime.Now.AddMinutes(10);

   33             SqlCommand cmd2 = new SqlCommand("UPDATE Users set Last_Login_Date=@mydate where User_ID=@user_id ", cnn);

   34             cmd2.Parameters.AddWithValue("@mydate", dt);

   35             cmd2.Parameters.AddWithValue("@user_id", Int32.Parse(Session["user_id"].ToString()));

   36             cmd2.ExecuteNonQuery();

   37             cnn.Close();

   38         }

   39     }

   40 

   41     private void GetOnlineUsers()

   42     {

   43         lblOnlineUsers.Text = "";

   44         cnn.Open();

   45       SqlCommand cmd = new SqlCommand("Select * FROM Users Where Last_Login_Date >@tarih ", cnn);

   46         cmd.Parameters.AddWithValue("@tarih", DateTime.Now);

   47         SqlDataReader dr = cmd.ExecuteReader();

   48         lblOnlineUsers.Text = "<b>Online Üyeler</b> <br>";

   49         while (dr.Read())

   50         {

   51             lblOnlineUsers.Text += dr["User_Name"].ToString() + "<br>";

   52         }

   53         cnn.Close();

   54     }

 

 

Görüşmek Üzere

 

 

 

Bunu beğen
Paylaş

Yorumlar
Yorum Yaz
İsim : (*)
E-mail :
Web Adresi:
:
(*)
 
Kapat