Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


Asp.net Sayaç Yapımı

Yazar: Adem AKTEPE

Kategori: ASP.NET

Eklenme Tarihi: 16.12.2008 10:03:19

Merhaba arkadaşlar bu makalemizde asp.net sayaç yapımını göreceğiz. Online ziyaretçiyi, bugünün ve dünün toplam tekil ve çoğul ziyaretlerini ve genel ziyaretçi sayısını bulmak için bir sayaç yapıcaz. Tablolarımızı oluşturalım.

Merhaba arkadaşlar bu makalemizde asp.net sayaç yapımını göreceğiz. Bir önceki Asp.Net ile Reklam Yönetimi adlı makalemde size bir class dosyasını tanıtmıştım. Aynı class dosyasını veri tabanı işlemleri için buradada kullanıyoruz. Bu makaleyi ilk kez açanlar bir önceki makalemden class dosyasını inceleyebilirler. Online ziyaretçiyi, bugünün ve dünün toplam tekil ve çoğul ziyaretlerini ve genel ziyaretçi sayısını bulmak için bir sayaç yapıcaz. Tablolarımızı oluşturalım.


SayacHit adında bir tablo oluşturup yukarıdaki gibi hücrelerimizi ekliyoruz. Bu tablomuzu günlere göre tekil, çoğul ve toplam ziyaretler için kullanacağız


SayacIp adında bir tablo oluşturup yukarıdaki gibi hücrelerimizi ekliyoruz. Bu tablomuzu Ip kayıtları için kullanacağız

Sayfamızada aşağıdaki gibi ilgili label kontrollerini ekleyelim.

Kontrollerimizin adı yukarıda labellerin üzerinde yazıyor.


Online ziyaretçiyi bulmak için Global.asax dosyası oluşturuyoruz. Bu dosyamızın Session_Start ve Session_End bloglarını kullanacağız. Kullanıcı giriş yaptığında start eventi çalışıp OnlineUsers adlı değişkenimizin değerini 1 artıracak, çıkış yaptığında End eventi çalışarak OnlineUsers değişkenimizi 1 azaltıcak.. Hemen kodlarımızı yazalım.

    void Session_Start(object sender, EventArgs e)
    {
        Application.Lock();
 
        Application["OnlineUsers"] = Convert.ToInt32(Application["OnlineUsers"]) + 1;
 
        Application.UnLock();
    }
 
    void Session_End(object sender, EventArgs e)
    {
        Application.Lock();
 
        Application["OnlineUsers"] = Convert.ToInt32(Application["OnlineUsers"]) - 1;
 
        Application.UnLock();
    }

Şimdi sayfamıza gelip aşağıdaki metodu ekleyelim ve pageload eventinde metodumuzu çağıralım. Kodların içerisinde teker teker ne işlem yaptığımızı anlatıyoruz.
public void Istatistik()
    {
        string IpAdres = Request.ServerVariables["REMOTE_ADDR"].ToString();//Ip Adresini alıyoruz.
        string Tarih = DateTime.Now.ToShortDateString();
        lblOnlineZiyaretci.Text = Application["OnlineUsers"].ToString();//Online ziyaretçi
        
        //Ogüne Ait Hit Bilgi Güncelleme
        DataRow drHit = system.GetDataRow("Select * from SayacHit Where Tarih='" + Tarih + "'");
        if (drHit == null)
        {
            //Bugüne ait kayıt yoksa bugunün ilk siftahını yap
            system.cmd("Insert into SayacHit(Tarih,Tekil,Cogul) values('" + Tarih + "',1,1)");
        }
        else
        {
           
            string SayfaAdi = Page.ToString().Replace("_aspx", ".aspx")).Remove(0, 4); //Sayfa adını alıyoruz.
            if (SayfaAdi == "default.aspx") span style="COLOR: green">//Güncelleme işlemini sadece anasayfadaysa yapıyoruz
            {
                //Bugüne ait kayıt varsa Çoğulu 1 artırıyoruz.
                system.cmd("Update SayacHit set Cogul=Cogul+1 Where Tarih='" + Tarih + "'");
            }
 
            //Tekil artımı için önce Ip kontrolü yapıyoruz.
            DataRow drIpKontrol = system.GetDataRow("select * from SayacIp Where Ip='" + IpAdres + "'");
            if (drIpKontrol == null)
            { //Eğer ip yoksa tekilide artırabiliriz. Ip kayıtlı ise artırma işlemi yapmıyoruz.
                system.cmd("Update SayacHit set Tekil=Tekil+1 Where Tarih='" + Tarih + "'");
            }
        }
 
 
        //Giren Kişinin IP sini Kaydetme
        DataRow drIp = system.GetDataRow("Select * from SayacIp Where Ip='" + IpAdres + "'");
        if (drIp == null)
        {
            system.cmd("Insert into SayacIp(Ip,Tarih) values('" + IpAdres + "','" + Tarih + "')");
        }
 
 
        //Ekrana Bilgileri Yazdırabiliriz
        DataRow drSonuc = system.GetDataRow("Select * from SayacHit Where Tarih='" + Tarih + "'");
        lblBugunTop.Text = drSonuc["Cogul"].ToString();
        lblBugunTekil.Text = drSonuc["Tekil"].ToString();
        //Dün Bilgilerini Çekme
        DataRow drDun = system.GetDataRow("Select * from SayacHit Where Tarih='" + DateTime.Now.AddDays(-1).ToShortDateString() + "'");
        DataRow drGenel = system.GetDataRow("Select SUM(Tekil) as Toplam from SayacHit");
        if (drDun != null)
        {
            lblDunTop.Text = drDun["Tekil"].ToString();
        }
        else
        {
            lblDunTop.Text = "0";
        }
       
        lblGenelTop.Text = drGenel["Toplam"].ToString();
    }

İşte basit ama işe yarar bir sayaç yapmış olduk :) Bir sonraki makalede görüşmek üzere. Kolay Gelsin.

Yazar Hakkında 4 Yorum Yorum Yaz Yazara ait diğer Makaleler
Tema
Anket
ASP.NET MVC'yi Projeleriniz de kullandınız mı?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2013 © Tüm Hakları Saklıdır.