Delphi.Nette Şifre Formu
FAOsoft28.09.2005 - 13:23:33
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.
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
<authentication mode="windows" />

odlarını silip, o kodun bulunduğu yere aşağıdaki kodları yazın.
<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.
 
gkimirti28.09.2005 - 13:33:13
saolasın,
guzel fikirler olustu kafamda sayende...
 
FAOsoft28.09.2005 - 14:57:26
Rica ederim.
birde eklemeyi unutmuşum, Kullanıcının bir buttona basarak LogOut (Çıkış) olmasını istiyorsanz aşağıdaki kodu kullanın
Session.Abandon;
FormsAuthentication.SignOut;
 
gkimirti28.09.2005 - 15:17:44
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...
 
FAOsoft28.09.2005 - 15:36:18
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
 
mbt28.09.2005 - 18:13:35
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.
 
şimal29.09.2005 - 09:31:32
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...
 
FAOsoft30.09.2005 - 09:09:18
"ELSE"den sonra aşağıdaki kodla teşekkür sayfası açabilirsin
FormsAuthentication.SetAuthCookie(TextBox1.Text, false);
HttpContext.Current.Response.Redirect(tesekkur.aspx);
 
lazio30.09.2005 - 12:24:12
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.
 
t-hex30.09.2005 - 14:03:06
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
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com