Neler yeni

Yeni mesajlar Yeni konular En çok mesaj En çok tepki En çok görüntülenen

Asp.net üye login işlemi

w@rriorhckr

🏅Acemi Tasarımcı🏅
Katılım
9 Şub 2009
Mesajlar
37
Tepkime puanı
1
:rofl::rofl::rofl::rofl:S.a
Öncelikle üyelerin bilgilerini tutacak Access veri tabanını oluşturalım.
Tablo ve Hücreler aşağıdaki gibi olacaktır.

Bu Hücreleri kendi projenize göre çoğaltabilirsiniz.
Şimdi gelelim Default.ASPx sayfamıza. Sayfamıza 2 adet Panel ekliyoruz. Birinci panelde üye girişi yapılacak bölüm, ikinci panelde ise üye girişi yapılmış bölüm görüntülenecektir. Tasarımı aşağıdaki gibi yapıyoruz. (Tabi siz daha şekil bir tasarım yapabilirsiniz )

Ve gelelim kodlarımızı yazmaya. Giriş butonuna basıldığı zaman Veri tabanına bağlanıp sorgumuzu yapıyoruz. Açıklamalar kodlar arasında verilmiştir.
protected void Button1_Click(object sender, EventArgs e)
{
//Veri Tabanı Yolunu ve Providerini belirtiyoruz.
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.oledb.4.0; Data Source=" + Server.MapPath("App_Data\\\\Uyeler.mdb"));
//Kullanıcı adı ve şifreyi alıp işletecek command nesnesi tanımlıyoruz.
OleDbCommand sorgu = new OleDbCommand("select * from Uyeler Where Kullanici=@Kullanici and Sifre=@Sifre", baglanti);
//Yukarıda tanımladığımız @Kullanıcı ve @Sifre alanlarına aşağıda değerlerini gönderiyoruz.
sorgu.Parameters.Add("@Kullanici", TextBox1.Text);
sorgu.Parameters.Add("@Sifre", TextBox2.Text);
//Bağlantımızı açıyoruz.
baglanti.Open();
//Yukarıdaki sorguyu çalıştırıp. Seçilen verileri datareader nesnesine atıyoruz.
OleDbDataReader dr = sorgu.ExecuteReader();
if (dr.Read())
{
//Eğer kayıt varsa Giren kişinin Id değerini UyeId adındaki sessiona atıyoruz.
Session["UyeId"] = Convert.ToInt32(dr["UyeId"]);
}
else
{
//Eğer kayıt seçilmemişse ekrana aşağıdakini yazdırıyoruz.
Response.Write("Kullanıcı adı veya şifre yanlış");
}
}
Bunlar Giriş butonunun kodlarıydı. Peki kişi girişi yaptı ve Idsi UyeId isimli sessiona atandı. Bu durumda panel1 in gizlenip panel2 nin gorunmesi lazım ve uye bilgilerine ulaşması lazım. Bu işlemleride Page_Load da yapıyoruz.
protected void Page_Load(object sender, EventArgs e)
{
//Sayfa ilk açılışta panel2 gizlenecek.
Panel2.Visible = false;
//Eğer UyeId değeri boş değil ise yani üye girişi yapılmışsa panel2 gorunecek.
if (Session["UyeId"] != null)
{
Panel1.Visible = false;
Panel2.Visible = true;
//Vt bağlantısını yapıp İlgili uyenin Id sine göre kişiyi seçip datareadere atıyoruz.
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.oledb.4.0; Data Source=" + Server.MapPath("App_Data\\\\Uyeler.mdb"));
OleDbCommand sorgu = new OleDbCommand("select * from Uyeler Where UyeId=@UyeId", baglanti);
sorgu.Parameters.Add("@UyeId", Session["UyeId"]);
baglanti.Open();
OleDbDataReader dr = sorgu.ExecuteReader();
while (dr.Read())
{
//kişinin adı soyadı bilgisini labelde yazdırıyoruz. Siz daha başka işlerde yaptırabilirsiniz.
Label3.Text = dr["Adi"].ToString() + " " + dr["Soyadi"].ToString();
}
}
else
{
Panel1.Visible = true;
Panel2.Visible = false;
}
}
İşte en basitinden bir üye login işlemi yapmış olduk. Geliştirmek size kalmış.
Kolay Gelsin...

:wink::wink:
 

creedwar

Kreatif Stratejist
👑Efsanevi Grafiker👑
Katılım
17 Haz 2008
Mesajlar
7,974
Tepkime puanı
104
Session atama kısmını biraz açarmısın?
 

soguzhank

🌱Yeni Üye🌱
Katılım
2 Şub 2009
Mesajlar
1
Tepkime puanı
0
bence kullanılmaması gereken bi login sistemi. yani eğitim amaçlı vermişsiniz, mantık olarakda doğru sayılabilir ancak çok mantıksızlıklar da var.
bence gerçek bir login sistemi için öncelikle membership sınıfı kullanılmalı, sadece küçük ölçekli projelerde bu tarz (asp mantığı) login olabilir. yani bi e-mağaza da ya da benzeri bir uygulamada bu kod yürümez.

kullanıcı id sini sessiona atıyoruz tamam attık, peki ama neden diğer sayfada bu id ile kullanıcı adını alıyoruz ki, hem de sadece oraya yazdırmak için! bence yanlış, illa bunu yazdıracaksak neden 2 tane session atamayalaım ki, session(uyeadi) ve session(id). hatta ben bazı projelerde sifreyi de tuttum, tuttuğu şifreyi db den gelen döngüden değil, textbox dan aldım ki bütün sayfalarda yediden login işlemi yaptım. heee bu performansı düşürür mü, düşürür ancak yukarıdaki örnekten bi farkı yok.

bir diğer hata ise page_load da ölesine bi bağlantı yapmak hiçbir korumama almamak. tamam panel1 i doldurdun. ancak kullanıcı panel1 haricinde sayfada bir işlem yaptı, mesela ürünleri karşılaştır dedi. ne olacak? ürün karşılaştırma döngüsü çalıştıktan sonra sayfa postback olacak ve senin üye adı yazdırma bağlantın yeniden bağlacak. bunu durdurmak için ya page_load yerine pageload_complated içinde kullanman ya da if not ispostback karar döngüsü içine sokman gerekli. ama bence her halukarda hatalı. sadece kullanıcı adını almak için connection açmak hata!!!

sözüm meclisten dışarı, kimseye bir sözüm yok ancak eğer birileri birşeyler öğrenecekse bence bu yukarıdaki kod olmalalı.

hatam olmuşsa affola
 

deptiacreative

🌱Yeni Üye🌱
Katılım
26 Eki 2009
Mesajlar
8
Tepkime puanı
0
en basiti bu mudur yani :) kaç satır kod var orda arkadaşım programcılık öyle basit bir iş değil bunu unutma ve kopyala yapıştır yapma , programcı insan kodları en basite en az satıra indirgeyerek çalışma yapar , gereksiz kodlardan arınalım lütfen. :)
 

tayfun37

🌱Yeni Üye🌱
Katılım
20 Ara 2009
Mesajlar
6
Tepkime puanı
0
BİR TANEDE BN YAZAYIM :) HATALI BI YER GORURSENIZ BELIRTINIZ.
imports system.data
imports system.data.oledb
(kod kısmının en ustene yazıyoruz)

button1.click
dim veribagi as new oledbconnectıon
veribagi.connectionstring="provider=microsoft.jet.oledb.4.0; data source" & server.mappath("app_data/vt1.mdb")
veribagi.open()


dim sorgu as string
sorgu="select from uyeler where kadi=" & textbox1.text & " and sıfre=" & textbox2.text & "



dim adp as new oledbdata adapter(veribagi,sorgu)
dim ds as new dataset
adp.fills(ds)


if ds.tables(o).rows.count=1 then
response.write("Bilgilerınız doğdulandı başarıyla giriş yaptınız")
session("uyeadi")="textbox1.text"
else
response.write("Bilgilerınızde hata var")
end if



Anlatıma gelince...
Aslında bız okulda bunları kalıp olarak gorduk ama bildiğim kadarıyla anlatmaya çalışıcam.


1.paragrafta veribatabı ile baglantı kuruluyor. Provider kısmı sabıt bişi ezberlenecek bi yer data source" ye kadar server.mappath(app_data/vt1.mbd") veritabının yolu server.mappath, klasör adı ve ve verıtabanı adını yazınca bilgisayarın neresınde olursa olsun bulur getırır aksi takdırde yolu tamamıyle yamanız gerekir.C:documant and..... gibi. ve baglantımızı kurduk

2.Paragrafta sorgu adında bı degısken tanımlıyoruz.sora verıtabanımızdaki uyeler tablosundan bılgılerı eşleştiriyoruz. kullanıcı adı textbox1.text(bu textbox2 de 3 de olabilir kullancı adını hangı textbox a yazıcanıza baglı) şifreıde textbox2.text le eşleşiyor.

yıne 3. paragrafta tamamıyle kalıp(öğrendıgım bu)
4.paragrafta ise girdimiz bilgiler eğer bı satıra denk geliyorsa(yanı verıtabanında varsa) Bilgilerınız doğdulandı başarıyla giriş yaptınız yazıyor ardından ilk giristeki misafir olan kullanıcı adını sizin kullanıcı adınıza ceviriyor. eğer girdiniz bilgilerın oldugu bi satır bulunamazsa bilglerınızde hata var yazıyor.



bu kadar dediğim gibi yerınde hata bulursanız belırtınız gozen kacırdıgım bişi olabilir bnde insanım :) duzeltelım hemen

biraz uzun oldu kusura bakmayın...

NOT: SADECE GİRİŞ BUTONU KODLARIDIR PANELLER FELAN SOKUP KAFA KARIŞTIRMAK ISTEMEDIM...
 
Son düzenleme:

tayfun37

🌱Yeni Üye🌱
Katılım
20 Ara 2009
Mesajlar
6
Tepkime puanı
0
uye login işlemi

BİR TANEDE BN YAZAYIM HATALI BI YER GORURSENIZ BELIRTINIZ.
imports system.data
imports system.data.oledb
(kod kısmının en ustene yazıyoruz)

button1.click
dim veribagi as new oledbconnectıon
veribagi.connectionstring="provider=microsoft.jet. oledb.4.0; data source" & server.mappath("app_data/vt1.mdb")
veribagi.open()


dim sorgu as string
sorgu="select from uyeler where kadi=" & textbox1.text & " and sıfre=" & textbox2.text & "



dim adp as new oledbdata adapter(veribagi,sorgu)
dim ds as new dataset
adp.fills(ds)


if ds.tables(o).rows.count=1 then
response.write("Bilgilerınız doğdulandı başarıyla giriş yaptınız")
session("uyeadi")="textbox1.text"
else
response.write("Bilgilerınızde hata var")
end if



Anlatıma gelince...
Aslında bız okulda bunları kalıp olarak gorduk ama bildiğim kadarıyla anlatmaya çalışıcam.


1.paragrafta veribatabı ile baglantı kuruluyor. Provider kısmı sabıt bişi ezberlenecek bi yer data source" ye kadar server.mappath(app_data/vt1.mbd") veritabının yolu server.mappath, klasör adı ve ve verıtabanı adını yazınca bilgisayarın neresınde olursa olsun bulur getırır aksi takdırde yolu tamamıyle yamanız gerekir.C:documant and..... gibi. ve baglantımızı kurduk

2.Paragrafta sorgu adında bı degısken tanımlıyoruz.sora verıtabanımızdaki uyeler tablosundan bılgılerı eşleştiriyoruz. kullanıcı adı textbox1.text(bu textbox2 de 3 de olabilir kullancı adını hangı textbox a yazıcanıza baglı) şifreıde textbox2.text le eşleşiyor.

yıne 3. paragrafta tamamıyle kalıp(öğrendıgım bu)
4.paragrafta ise girdimiz bilgiler eğer bı satıra denk geliyorsa(yanı verıtabanında varsa) Bilgilerınız doğdulandı başarıyla giriş yaptınız yazıyor ardından ilk giristeki misafir olan kullanıcı adını sizin kullanıcı adınıza ceviriyor. eğer girdiniz bilgilerın oldugu bi satır bulunamazsa bilglerınızde hata var yazıyor.



bu kadar dediğim gibi yerınde hata bulursanız belırtınız gozen kacırdıgım bişi olabilir bnde insanım duzeltelım hemen

biraz uzun oldu kusura bakmayın...

NOT: SADECE GİRİŞ BUTONU KODLARIDIR PANELLER FELAN SOKUP KAFA KARIŞTIRMAK ISTEMEDIM...
 
Son düzenleme:

tayfun37

🌱Yeni Üye🌱
Katılım
20 Ara 2009
Mesajlar
6
Tepkime puanı
0
1.paragrafın 1.satırında "dim veribagi as new oledbconnectıon" yazan kısım " dim veribagi as new oledb.oledbconnection " olucak (" " işaretlerını sadece belirtmek için kullandım kodla ilgisi yoktur) kusura bakmayın yanlış olmuş :)
 
Üst