Delphi.Nette Şifre Formu

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Delphi.Nette Şifre Formu

Mesaj gönderen Fatih! »

Win32 uygulamalarımızda kullanıcı hazırlamış olduğumuz şifre formunu geçmeden biz is1temedikçe diğer formlara geçemez. Aynı şeyi Cokkie ile yapmak mümkün ama Web projelerinde kullanıcının pc’si üzerinde fazla hakimiyetimiz yok. Şifre formu için o kadar düşünmenize gerek yok çünkü bir-iki basit yöntemle tüm projeyi kontrol altına alabiliyoruz.
Öncelikle iki webform oluşturun. Biri ana sayfamız diğeri ise Login sayfamız olsun.
Örnek için Ana sayfamıza bir Label bileşeni ekleyip Text özelliğine sitemize hoş geldiniz yazın. Şifre formuna kullanıcı adı ve şifre girmek için; iki TextBox, griş yapabilmek içinde bir button ekleyin.
TextBox1: Kullanıcı adını; TextBox2 ise: Parolayı Girmemiz için kullanıyoruz..
Kullanıcı bilgisini veritabanında sorgulayacağız. Veritabanı olarak Access kullandığımız içinde aşağıdaki NameSpace’i Uses’a ekleyin.
”System.Data.OleDb”
Kullanıcı işlemlerinde kullanacağımız kod için de Uses kısmına “System.Web.Securty” NameSpace’ini ekleyin.
Login webformuna eklediğiniz Buttonun OnClick olayına aşağıdaki kodu ekleyin.

Kod: Tümünü seç

 procedure TWebForm2.Button1_Click(sender: System.Object; e: System.EventArgs);
  Var
   MyConnect:OleDBConnection;
   MyCommand:OleDBCommand;
   i:integer;
begin
//Bağlantıyı oluştur
MyConnect:=oleDbConnection.Create('Provider=microsoft.Jet.OLEDB.4.0;'+'data source='+Server.MapPath('/MyLoginProc/Data/Data.mdb'));
MyConnect.Open;
// bir seçim sorgusu oluşturalım. ihtiyacımız olan bir Command nesnesi
MyCommand := oleDbCommand.Create ( 'SELECT Count(*) as Toplam FROM KULLANICILAR where USERNAME='+#39+TextBox1.Text+#39+' And PASSWORD='+#39+TextBox2.Text+#39,MyConnect);
// ve komutu ExecuteReader ile işletelim. Dönüş değeri bir DataReader nesnesi.
i:=Convert.ToInt32(MyCommand.ExecuteScalar);
MyConnect.Close;
if i<1 then
Response.Write('Giriş başarısız')
else
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text,True);
end; 
Yukarıdaki kodda Veritabanına bağlanıp verilen kullanıcı adı ve şifreye sahip kaç kullanıcının olduğunu sorgulayıp dönen değeri “i” değişkenine atıyoruz. “i” değişkeni 1’den küçük ani sıfır üretirse böyle bir kullanıcı yok demektir. Aksi taktirde yani kullanıcı varsa “Else”den sonraki kod işler. Bu kod birazdan Web.Config dosyası üzerinde yapacağımız kodlamaya kullanıcı adını gönderip doğru parola olduğunu True Boolean değişkeni ile belirtir.

Şimdi Web.Config dosyasını çift tıklayıp

Kod: Tümünü seç

 <authentication mode="windows" /> 
odlarını silip, o kodun bulunduğu yere aşağıdaki kodları yazın.

Kod: Tümünü seç

 	<authentication mode="Forms">
	<forms name="logincookie" loginUrl="WebForm2.aspx" protection="All" timeout="30"/>
	  </authentication>
		  <authorization>
             <deny users="?" />
			   </authorization> 
“WebForm2.aspx” yerine kendi şifre formunuzu, “30” yerine kullanıcının kaç dakika işlem yapmazsa otomatik çıkış yapmasını istiyorsanız dakika cinsinden belirtebilirsiniz.
Deny kısmı ise kullanıcı adı olmayan kullanıcıların girişini engeller.
Not: Wev.config dosyası Büyük Küçük harfe duyarlıdır.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

saolasın,
guzel fikirler olustu kafamda sayende...
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

Rica ederim.
birde eklemeyi unutmuşum, Kullanıcının bir buttona basarak LogOut (Çıkış) olmasını istiyorsanz aşağıdaki kodu kullanın

Kod: Tümünü seç

  Session.Abandon;
FormsAuthentication.SignOut;
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

user login olunca default.aspx sayfasına yonleniyor.
simdi kullanıcı hicbirsey yazmaya default.aspx e gitmiyormu normalde,
yoksa login formundan session nesnesi ile bu user basarıyla giris yaptı gibi bir parametre mi aktarmalıyız...
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

Login penceresi hangi sayfayı çağırırken gelmişse o sayfaya yönlendirilir.
daha bende pek bilgili sayılmam ama yönlendirilecek sayffayı belirtebiliyordun sanırım.
nasıl mı bende bilmiyorum :)
öğrenirsem yazarım
mbt
Üye
Mesajlar: 165
Kayıt: 27 Şub 2004 01:23

Mesaj gönderen mbt »

Borland'ın BDNTV kısmında bunlarla ilgili seminerler var.

http://bdntv.borland.com/delphi/Validation.html

Bu örnekte anlatılan görüntülü seminer işinizi görecektir.
Kullanıcı avatarı
şimal
Kıdemli Üye
Mesajlar: 516
Kayıt: 10 Kas 2003 09:36
Konum: ANKARA

Mesaj gönderen şimal »

merhabalar
ben
c# ile çalışıyordum kodlar yabanci gelmedi ancak:

MyCommand := oleDbCommand.Create ( 'SELECT Count(*) as Toplam FROM KULLANICILAR where USERNAME='+#39+TextBox1.Text+#39+' And PASSWORD='+#39+TextBox2.Text+#39,MyConnect);

TextBox1.Text
ve
TextBox2.Text

icindeki stringden
or gibi select cümleciğini her zaman true ya çekecek kelimeleri ayıklayan bir fonksiyon yada

if i<1 then
Response.Write('Giriş başarısız')
else

yerine

if i<1 and i>=2 then
Response.Write('Giriş başarısız')
else

derseniz doğru olur gibime geliyor.

Kalın sağlıcakla...
Boş Başak Dik Durur...
Santranç bitince şah da piyon da aynı torbaya girermiş...
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

"ELSE"den sonra aşağıdaki kodla teşekkür sayfası açabilirsin

Kod: Tümünü seç

FormsAuthentication.SetAuthCookie(TextBox1.Text, false);
HttpContext.Current.Response.Redirect(tesekkur.aspx);
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1526
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

normalde bende form authentication kullanıyorum ama bunun bi sakıncası var. örneğin, kullanıcıadı ve şifre ile sisteme girildikten sonra başka bir makinadan başka birisi aynı kullanıcı adi ve şifre ile sisteme girebilir. ama doğru olani bir user sistemi terk etmeden aynı user ile kimsenin sisteme girememesidir. - gerçi form authentication ın gerektiği durumlarda vardır muhakkak - benim duyduğum kadarıyla asp.net ve ms msql server ortaklaşa bu sorunu ortadan kaldırabiliyor ama çok fazla uğraşma imkanım olmadı daha doğrusu bu aralar .net i biraz askıya aldık. eğer bunu bulup kullanırsanız zannediyorum daha çok işinize yarayacaktır. kolay gelsin.
Resim

..::|YeşilMavi|::..
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

şimal yazdı:TextBox1.Text
ve
TextBox2.Text

icindeki stringden
or gibi select cümleciğini her zaman true ya çekecek kelimeleri ayıklayan bir fonksiyon yada
textBox1.Text ve textBox2.Text Tırnak karakterleri arasında kaldığından öyle yapamazlar heralde
Cevapla