Arkadaşlar merhaba. Önceki dersimizde haberayrinti.aspx sayfası tasarlayıp, haberlisteleme.aspx sayfamızda tıklanan haberin ayrıntısını göstermiştir.
Bu dersimizde ise üye giriş işlemleri gerçekleştireceğiz. Eğer bazı sayfalara sadece üyelerin girmesine izin vermek istiyorsanız üye giriş işlemleri yapmanız gerekmektedir. Web sitelerinde üye giriş işlemlerin mantığı kısaca şöyledir.
-Öncelikle kullanıcıdan giriş bilgileri alıyor (Kullanıcı adı veya eposta ve şifresi).
-Girilen bu bilgilere göre veri tabanımızdaki üyeler tablosunda böyle bir kaydın olup olmadığını kontrol ediyoruz. Eğer veri tabanında girilen bilgiler ile eşleşen bir kayıt yoksa, kullanıcıyı “Böyle bir kullanıcı yok veya bilgileri yanlış girdiniz” şeklinde uyarıyoruz.
-Eğer girilen bilgiler doğru ise veri tabanında kayıt bulduysak ozaman giriş yapan kullanıcı için SESSION komutunu kullanarak kimlik oluşturup oturum açıyoruz. Burada giriş yapan kullanıcıya özel bir değer atayıp, üye giriş gereken sayfalara bu kimlik bilgisi ile giriş yapabilmesini sağlayacağız. Kullanıcı hangi sayfaya girerse girsin bu kimlik kontrolünü yapıp, kullanıcıyı sayfaya girişine izin vereceğiz.
-Eğer kullanıcı tarayıcıyı kapatırsa veya bizim oluşturacağımız “Çıkış” veya “Oturumu Kapat” düğmesine basarsa, kullanıcıya atadığımız bu kimlik (Yani SESSION) sonlandıracağız.
Bu işlemi bir iş yerine giren misafire benzetebiliriz. İş yerine ziyaretçi geldiğinde güvenlikte (Sitemizdeki karşılığı kullanıcı giriş sayfası) güvenlik elemanları bu kişininin bilgilerini kontrol edip eğer giriş yapmaya yetkili ise ona özel bir giriş kartı veriliyor Bu kartta o kişiyi tanımlayan bir kod bulunuyor ( Bizde sitelerimizde kullanıcı giriş yaptıysa kontrol edip doğru kişi ile Session komutu ile kullanıcıya bir kimlik bilgisi atıyoruz). İş yerine ziyarete gelen kişiler bu kart ile iş yerinde dolaşabiliyor (Sitelerimizdede giriş yapan kullanıcılar sayfalarda istediği gibi kısıtlama olmadan gezebiliyor). İş yerine ziyarete gelen kişi işi bittikten sonra giriş kartını tekrar güvenliğe teslim ederek iş yerinden çıkıyor (Web sitelerimizdede kullanıcı sitemizi gezdikten sonra tarayıcıyı kapattığında veya bizim belirlediğimiz çıkış linkini tıkladığında Session komutu ile kullanıcıya özel atadığımız kimlik bilgisini siliyoruz. Ve kullanıcı oturumu kapatmış oluyor).
Şimdi işlemlerimize geçebiliriz.
-Öncelikle yeni bir sayfa oluşturup ismini giris.aspx olarak belirliyoruz.
-Sayfamıza 5 Satır 2 sütunluk tablo ekliyoruz.
-Tablomuzun ilk satırını birleştirip, Kullanıcı Girişi yazıyoruz. Sayfamıza 2 Adet TextBox, 1 Adet Button ve 1 Adet Label nesnesi ekleyip aşağıdaki gibi tasarımı gerçekleştiriyoruz.
- Eposta için ekledimiz TextBox ın id sini eposta
- Şifre için eklediğimiz TextBox’ın ID’sini sifre olarak değiştirip TextMode özelliğini password olarak ayarlıyoruz.
- Giriş için Eklediğimiz Button’un ID’sini btngiris ve
- Mesaj için Eklediğimi Label’ın ID’sini mesaj olarak değiştiriyoruz.
Tasarım işini bitirdik.
Şimdi Giriş Düşmesine tıklayıp kod ekranımıza geçelim.
Öncelikle sayfamızın üst kısmına
using System.Data;
using System.Data.OleDb;
kütüphanelerini ekliyoruz.
protected
void btngiris_Click(object sender, EventArgs e)
{
}
Bloğu arasına kodlarımızı yazmaya başlayabiliriz.
İlk olarak App_data klasörünün içindeki veri tabanına bağlantı yapmamız gerekiyor. Bu bağlantı komutunu diğer sayfalarımızda da yapmıştık. Artık öğrendik. Nasıl bağlanıyorduk?
OleDbConnection baglanti = new
OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=”+ Server.MapPath(“App_data\\proje.accdb”));
Komutunu kullanıyorduk.
Bağlantımızı open komutu ile açtıktan sonra, Uyeler tablosunda girilen eposta ve şifrenin olup olmadığını kontrol etmek için seçme sorgumuzu yazıyoruz.
baglanti.Open();//bağlantımızı açtık
OleDbCommand arasorgu = new
OleDbCommand(“Select * from uyeler where eposta=@postaadresi and sifre=@sifreniz”, baglanti);
/*eposta ve sifre alanları uyeler tablosundaki alanlar*/
arasorgu.Parameters.AddWithValue(“@postaadresi”, eposta.Text);
arasorgu.Parameters.AddWithValue(“@sifreniz”, sifre.Text);
Burada uyeler tablosundaki eposta alanı, kullanıcının formumuzda girdiği eposta adresine ve sifre alanında kullanıcının forma girdiği şifre bilgisine eşit olan kayıt’ı bul ve seç diyoruz. Sql cümlesindeki “where” ifadesi şart demek. Yani Tüm kayıtları değilde benim girdiğim şu şu şu şartlara uyan kayıtları seç işlevini yerine getiriyor.
Yukarıdaki komutun yaptığı işlev;
Giriş yapan kullanıcı, kullanıcı adına ali@veli.com yazmışsa
Şifre alanınada “12345” yazmışsa aşağıdaki gibi bir sorgu yazmış oluyoruz.
Select * from uyeler where eposta=”ali@veli.com” and sifre=”12345″
Bu sorgu çalıştığında kayıt döndürüyorsa demekki böyle bir kullanıcı var eğer bu sorgu sonucunda herhangi bir kayıt döndürmezsede böyle bir kullanıcı yok demektir.
Daha sonra ;
OleDbDataReader okunan = arasorgu.ExecuteReader();
if (okunan.Read())
{
Session[“kullanici”] = eposta.Text;
Response.Redirect(“profil.aspx”);
}
else
{
mesaj.Text = “Kullanıcı adı veya şifre yanlış veya böyle bir kullanıcı yok.”;
}
Komutlarını yazarak kodlamamızı bitiriyoruz. Burada
- OleDbDataReader okunan = arasorgu.ExecuteReader(); komutu ile sorgumuzu çalıştırdık ve dönen değeri okunan Reader nesnesine aktardık.
- İf(okunan.Read()) komutu ile gelen değer varsa okuduk. Ve kayıt varsa;
- Session[“kullanici”] = eposta.Text; komutu ile “kullanici” ismiden Session değeri oluşturk ve bu değere giriş yapan kullanıcının eposta değerini aktardık.
- Response.Redirect(“profil.aspx”); komutu ilede kullanıcıyı profil.aspx sayfasına yönlendirdik. Şuan tabi böyle bir sayfa oluşturmadık. İsterseniz şimdi profil.aspx sayfamızı oluşturabilirsiniz.
- Eğer if(okunan.read()) komutunun sonucu olumsuzsa yani üyeler tablosundan sorgu sonucunda bir kayıt seçilememişse demekki öyle bir kullanıcı yok. Ve biz buna göre mesaj label’ımızda kullanıcıya bilgi veriyoruz.
Kodlarımızın son hali aşağıdaki gibidir.
OleDbConnection baglanti = new
OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=”+ Server.MapPath(“App_data\\proje.accdb”));
baglanti.Open();//bağlantımızı açtık
OleDbCommand arasorgu = new
OleDbCommand(“Select * from uyeler where eposta=@postaadresi and sifre=@sifreniz”, baglanti);
arasorgu.Parameters.AddWithValue(“@postaadresi”, eposta.Text);
arasorgu.Parameters.AddWithValue(“@sifreniz”, sifre.Text);
OleDbDataReader okunan = arasorgu.ExecuteReader();
if (okunan.Read())
{
Session[“kullanici”] = eposta.Text;
Response.Redirect(“profil.aspx”);
}
else
{
mesaj.Text = “Kullanıcı adı veya şifre yanlış veya böyle bir kullanıcı yok.”;
}
Evet arkadaşlar bir dersin sonuna daha geldik. Dersimizin başında söylediğim gibi giriş yapan kullanıcıya kimlik verdik ve bu kimlik ile kullanıcı, üyelik gerektiren tüm sayfalarda dolaşabilir. Ben burada kimlik olarak kullanıcının eposta adresini verdim. Session, yani oturumlarda dikkat etmeniz gereken husus oturum açan kullanıcıya vereceğiniz kimlik bilgisinin benzersiz olmasıdır. Bu kimlik bilgileri kullanıcının id si, eposta adresi, tckimlik numarası, telefon numarası gibi benzersiz alanlar olması gerekmektedir.
Her kullanıcının eposta adresi farklı olduğun için;
Session[“kullanici”] = eposta.Text;
komutu ile, kullanici isminde Session değişkeni oluşturdum ve ve bu değişkene eposta adresini aktardım. Sizde isterseniz uyeler tablosundaki Kimlik alanını Session değeri olarak kullanabilirsiniz.
Not: Sayfayı kodladıktan sonra doğru bilgiler girildiğinde profil.aspx sayfasına gitmesi için projenize profil.aspx sayfası eklemeyi unutmayınız. Ayrıca giriş işlemi yaabilmek için veri tabanınızdaki uyeler tablosunda resimdeki gibi kayıt olması gerekiyor.
Bir sonraki dersimizde profil.aspx sayfamızın tasarımını ve kodlamasını yapacağız.
-Burada öncelikli sayfa açıldığında Sesssion (Oturum ) kontrolü yapacağız. Eğer kullanıcı giriş yapmamışsa “Bu sayfaya erişim hakkınız yok” diyerek kullanıcıyı giris.aspx sayfasına yönlendireceğiz.
-Eğer kullanıcı oturum açmışsa yani giris.aspx sayfasından gelmişse hangi kullanıcının oturum açtığını Session[“kullanici”] nesnesinden öğrenip o kişinin bilgilerini ekranda gösteceğiz. Ve “Çıkış” düğmesi ekleyip, kullanıcı tıkladığında oturumu kapatacağız.
Şimdilik hoşçakalın, #evdekalın