Anasayfa / Yazılım / ASP.NET / Kullanıcı Giriş Paneli Örneği ? 2

Kullanıcı Giriş Paneli Örneği ? 2

Bu yazıya devam etmeden önce aşağıdaki yazıyı inceleyiniz.

Kullanıcı Giriş Paneli Örneği 1

Uygulamamıza devam edelim. Şu ana kadar tasarımı gerçekleştirdik. Örneğim için ben kullanıcı bilgi ve şifrelerini bir TXT dosyasından çekmek istediğimi belirtmiştim. Şimdi projemize bir adet txt dosyası ekleyelim. Solution Explorer’da projemize sağ tıklıyoruz ve buradan Add New Itemö diyoruz. Açılan pencerede aşağılarda yer alan TextFile türünü seçiyoruz, ben dosyanın adını değişmedim, siz isterseniz değişebilirsiniz..

Dosyamız eklendikten sonra TXT dosyamız açılıyor zaten ve içeriğine sıra ile veri giriyoruz. Ben satır satır aynen şöyle veri girdim.

ismail 11111
deneme 22222
admin 33333

Kullanıcı adları olarak ismail, deneme, admin girdim ve her bir kullanıcı adından sonra bir boşluk bıraktım ve şifre girdim. Normal hayatta aman bu kadar basit şifreler seçmeyin 🙂 Ve TXT dosyamı kaydettim.

Şimdi artık kodlama kısmına dönebiliriz. Butonun üstüne çift tıklıyoruz ve Click eventini oluşturuyoruz. Öncelikle yapmak istediğim bu kontrollerin boş geçilmesini önlemek. Bunu farklı şekillerde de yapabilirim validation kontrol kullanarak yapma imkanım mevcut ama biz şu an işin başında bir programcı gibi hareket edip. if karar yapıları ile olaya başlayalım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnGiris_Click(object sender, EventArgs e)
    {
        //ad alanını kontrol ediyorum eğer boşsa uyarı verdiriyorum.
        if (txtAd.Text == "")
        {
            lblAd.Text = "Lütfen kullanıcı adınızı giriniz!";
        }
            //ad alanında sorun yoksa, şifre alanını kontrol ediyorum, daha önceden uyarı vermiş ise bunu siliyorum.
        else
        {
            lblAd.Text = "";
            //şifre alanı boş ise uyarı verdiriyorum.
            if (txtSifre.Text == "")
            {
                lblSifre.Text = "Lütfen şifrenizi giriniz!"
            }
                //ad ve şifre ikisi de girilmişse artık boş geçme durumu söz konusu değil, alttaki else bloğum çalışır.

            else
            {
                //önceden hata vermişse, temizliyorum.
                lblSifre.Text = "";

            }
        }
    }
}

Evet boş geçme durumunu engelledik. Şimdi en içte yer alan else bloğum içinde txt dosyam içinde yer alan kullanıcı bilgilerini okuyacağım.

Açıklamarı kod içinde yazdım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnGiris_Click(object sender, EventArgs e)
    {
        //daha önceden hata mesajı aldı isem bunu temizlemek için her butona basılta lblmesaj kontrolümü sıfırlıyorum
        lblMesaj.Text = "";
        //ad alanını kontrol ediyorum eğer boşsa uyarı verdiriyorum.
        if (txtAd.Text == "")
        {
            lblAd.Text = "Lütfen kullanıcı adınızı giriniz!";
        }
            //ad alanında sorun yoksa, şifre alanını kontrol ediyorum, daha önceden uyarı vermiş ise bunu siliyorum.
        else
        {
            lblAd.Text = "";
            //şifre alanı boş ise uyarı verdiriyorum.
            if (txtSifre.Text == "")
            {
                lblSifre.Text = "Lütfen şifrenizi giriniz!";
            }
                //ad ve şifre ikisi de girilmişse artık boş geçme durumu söz konusu değil, alttaki else bloğum çalışır.

            else
            {
                //önceden hata vermişse, temizliyorum.
                lblSifre.Text = "";
                //FileStream class kullanabilmek için öncelikle namespace olarak en üste System.IO tanımlıyorum
                //FileStream classımdan bir instance alıyorum ve dosyamın yolunu server.mappath metodu ile gösteriyorum
                //Dosyamda okuma işlemi yapacağım için FileMode.Open diyorum. Erişim ise Read.
                FileStream fs = new FileStream(Server.MapPath("TextFile.txt"),FileMode.Open,FileAccess.Read);
                //byte türünde text dosyaları okumak için StreamReader nesnesini kullanıyorum, fs'yi buna bağlıyorum
                StreamReader sr = new StreamReader(fs);
                //kullanıcı giriş bilgisinin durumunu burada tutacağım, ilk anda false değerini veriyorum.
                bool girisIslemi = false;
                //streamReader okumaya devam ettikçe while döngüsü içindeki işlemleri yap
                while (sr.Peek() != -1)
                {
                    //satır satır okurken her satırdaki bilgiyi değişkene alıyorum
                    string sbilgi = sr.ReadLine();
                    //kullanıcı adı ve şifrem arasında boşluk vardı, bu boşluk karakterinin indeksini buluyorum
                    int bolunecekKelime = sbilgi.IndexOf(" ");
                    //bulmuş olduğum indeks noya göre kullanıcı ad ve şifreyi bölüyorum, çünkü tek satırdalar.
                    string ad = sbilgi.Substring(0,bolunecekKelime);
                    //textboxa girilen kullanıcı adı ile satırdaki kullanıcı adı eşleşiyor mu, kontrol ediyorum
                    if(txtAd.Text == ad)
                    {
                        string sifre = sbilgi.Substring(bolunecekKelime + 1);
                        //textboxa girilen şifre ile satırdaki şifreler eşleşiyormu kontrol ediyorum.
                        if (txtSifre.Text == sifre)
                        {
                            //kullanıcı adı ve şifre doğru olunca admin olarak oturum açtırıyorum, giriş işlemi true diyorum
                            //çünkü daha sonra lbmmesaj kontrolümde mesaj vereceğim, işlem doğru diye.
                            Session["admin"] = ad;
                            girisIslemi = true;
                            //işlemim bitsin diye döngüden çıkıyorum çünkü diyelim ki ilk satırda doğru yakalandı,
                            //devam etmesine artık gerek kalmaz.
                            break;
                        }                       

                    }
                        //kullanıcı adı veya şifrem ya da her ikisi satırdakiler ile uyuşmuyorsa lblmesaj kontrolümdeki bilgi
                        //için false diyorum

                    else
                    {
                        girisIslemi = false;
                    }
                }
                //giriş işlemim başarılı ise bu kısım çalışcak ve sıra ile nesnelerimi kapatıyorum, son açılan önce kapatılır
                if (girisIslemi)
                {
                    sr.Close();
                    fs.Close();
                    lblMesaj.Text = "Giriş Başarılı";
                }
                //giriş işlemim başarılı değilse bu kısım çalışcak ve sıra ile nesnelerimi kapatıyorum, son açılan önce kapatılır


                else
                {
                    sr.Close();
                    fs.Close();
                    lblMesaj.Text = "Giriş Başarısız";
                }
            }
        }

    }
}

Evet uygulamamızda girişi kontrol, ettik, bundan sonraki yazımızda diğer işlemleri anlatacağım. Aşağıdaki linkten uygulamanın şu ana kadar olan kısmını indirebilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir