Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: Kullanıcı Sistemi [Gizli soru ve Aynı Kullanıcı Dikkate Alarak]  (Okunma sayısı 2398 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı SelçuK

  • Delphi XE Level 2
  • **
  • İleti: 668
  • Rep: +21/-3
  • Cinsiyet: Bay
  • Pc_CoPaT
    • Her Zaman Keşfetmek İçin Bak....
Merhaba Arkadaşlar forumda parça parça vermişte olsam sanırım bir başlık altında toplamak
ulaşılabilirlik açısından daha iyi olacktır.

Giriş Ekranında Yer alan Giriş Butonunun içeriği

Kod:  (Unknown Language)
  1. procedure TFormGiris.btn_girisClick(Sender: TObject);
  2. begin
  3. FormAna.QuerySorgu.Sql.Clear;
  4. FormAna.QuerySorgu.Sql.Add('Select * From data.db Where kul_adi='''+txt_kullaniciadi.text+''''+
  5. ' and sifre='''+txt_sifre.Text+'''');
  6. FormAna.QuerySorgu.Open;
  7. If FormAna.QuerySorgu.RecordCount>0 Then Begin
  8. Formana.Show;
  9. FormGiris.Hide;
  10. End Else Begin
  11. Showmessage('Kullanıcı Adı Veya Şifreniz Yanlış');
  12. end;
  13. end;
  14.  

Aslında kod gayet açık ama kısacadeğinelim. query ile table a bir sorgu gönderiliyor.
sorgu sonucunu miktarsal olarak görmek adına RecordCount u kullandık. Ve dönen değer
Sıfır'dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. O halde kullanıcıya ana formu göster.
Aksi taktide Kullanıcıyı bilgilerin yanlış olduğu yönünde uyar.

Şifremi unuttum butonunun içeriği

Kod:  (Unknown Language)
  1. FormAna.QuerySorgu.Sql.Clear;
  2. FormAna.QuerySorgu.Sql.Add('Select * From data.db Where kul_adi='''+txt_kullaniciadi.text+'''');
  3. FormAna.QuerySorgu.Open;
  4. If FormAna.QuerySorgu.Recordcount>0 Then Begin
  5. lbl_gizlisoru.Caption :='Gizli Sorunuz= '+FormAna.QuerySorgu.FieldByname('GizliSoru').Asstring;
  6. FormGiris.Height := 250;
  7. lbl_gizlisoru.visible := True;
  8. label4.Visible := true;
  9. txt_gizlicevap.Visible := true;
  10. btn_CevapGoster.Visible := true;
  11. end else begin
  12. ShowMessage('Gizli Soruyu Görmek İçin Kullanıcı Adı Doğru Girilmelidir');
  13. end;
  14. end;
  15.  

query ile table a bir sorgu gönderiliyor.
sorgu sonucunu miktarsal olarak görmek adına RecordCount u kullandık. Ve dönen değer
Sıfır'dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. o zaman formun boyunu az büyüt ve
kullanıcının bilgileri gireceği kontrollerin visible(görünürlüğü) true yap. Aksi halde kulanıcı adının yanlış
olduğu yönünde kullanıcıyı uyar.

Şifreyi Göster Butonunun İçeriği

Kod:  (Unknown Language)
  1. procedure TFormGiris.btn_CevapGosterClick(Sender: TObject);
  2. begin
  3. FormAna.QuerySorgu.Sql.Clear;
  4. FormAna.QuerySorgu.Sql.Add('Select * From data.db Where'+
  5. ' kul_adi='''+txt_kullaniciadi.text+''' and GizliCevap='''+txt_gizlicevap.text+'''');
  6. FormAna.QuerySorgu.Open;
  7. If FormAna.QuerySorgu.RecordCount>0 then begin
  8. ShowMessage('Şifreniz: '+FormAna.QuerySorgu.FieldByName('sifre').Asstring);
  9. FormGiris.Height := 150;
  10. lbl_gizlisoru.visible := false;
  11. label4.Visible := false;
  12. txt_gizlicevap.Visible := false;
  13. btn_CevapGoster.Visible := false;
  14. end else begin
  15. Showmessage('Gizli Cevabınız Yanlış. Küçük Büyük Harfe Dikkat Ediniz');
  16. end;
  17. end;

query ile table a bir sorgu gönderiliyor.
sorgu sonucunu miktarsal olarak görmek adına RecordCount u kullandık. Ve dönen değer
Sıfır'dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. O zaman kullanıcıya bu dönen
değerdeki Sifre alanındaki değer gösteriliyor. Kullanıcı Mesaja Evet dediği anda büyüttüğümüz
form tekrardan küçültülüyor ve görünür hale gelen nesneler tekrardan görünmez oluyor.

Kullanıcı Kayıt Formunun İçeriği

Kaydet Butonunun İçeriği

Kod:  (Unknown Language)
  1. procedure TFormAna.btn_kaydetClick(Sender: TObject);
  2. begin
  3. QuerySorgu.Sql.Clear;
  4. QuerySorgu.Sql.Add('Select * From data.db Where kul_adi='''+DBEdit1.text+'''');
  5. QuerySorgu.Open;
  6. If FormAna.QuerySorgu.Recordcount>0 Then begin
  7. ShowMessage('Bu Kullanıcı Adı Kullanılmaktadır. Başka Bir Tane Deneyiniz');
  8. TableKayit.Cancel;
  9. Exit;
  10. end else begin
  11. if Not (TableKayit.State in [dsInsert,dsEdit]) then begin
  12. ShowMessage('Lütfen Yeni Kayıt Veya Düzenle Butonunu Tıklayınız');
  13. Exit;
  14. end else begin
  15. if (DBEdit1.Text='') or (DBEdit2.Text='') or (DBEdit3.Text='') then begin
  16. ShowMessage('Lütfen Tüm Alanları Doldurunuz');
  17. Exit;
  18. end else begin
  19. TableKayit.Post;
  20. end;
  21. end;
  22. end;
  23. end;
  24.  

query ile table a bir sorgu gönderiliyor.
sorgu sonucunu miktarsal olarak görmek adına RecordCount u kullandık. Ve dönen değer
Sıfır'dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. O zaman DBEdit1 e girilen isimle
bir kullanıcı kaydı yapılmış demektir. Kullanıcıyı uyarıyoruz.
Eğer yoksa işleme devam ediliyor.
İkinci kontrol tablonun insert yada edit modda olup olmadığı ki bunuda "dataset not edit or insert mode"
hatasını almamak adına yapıyoruz.
Eğer iki moddan birinde değilse kullanıcıyı bunları kullanmaya yönelten bir mesaj veriyoruz.
Eğer edit veya insert modda ise devam ediyoruz.
Bu kezde bilgi kutularının dolu olup olmadığını kontrol ediyoruz. Değlse mesaj ile uyarıyoruz.
Eğer bilgi giriş kutularımız da dolu ise
Tüm şartlar yerine geldiğinden dolayı kayıt işlemini yapıyoruz.

Eksik yada olumsuz yönlerim olaiblir. Bu konuda uyarırsanızgrekli düzenlemeleri yapabiliriz.
Aslında
Kod:  (Unknown Language)
  1. Var
  2. Giris:String='query ile table a bir sorgu gönderiliyor.
  3. sorgu sonucunu miktarsal olarak görmek adına [b]RecordCount[/b] u kullandık. Ve dönen değer
  4. Sıfır dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. O zaman';
Bölümünü Global Olarak tanımlayacaktım ama arkadaşların kafası karışmasın diye yapmadım ;D

Kayıt bölümündeki standart kayıt sil, düzelt, yeni kayıt bölümlerini buraya yazma ihtiyacı duymadım.
Çünkü onlar zaten gündelik hayatta kullandığımız kodlardandır ;D
Sağlıcakla kalın.
« Son Düzenleme: 05 Mayıs 2008 17:09:31 by SelçuK »
İnanki Başarasın, Başarki İnanasın!

Çevrimdışı ozan_007

  • Delphi 1 Level 5
  • *****
  • İleti: 42
  • Rep: +0/-0
oldukca yararlı ve okadar sade bı olay yazalı cok olmus ama bunların belırtılmesı oldukca faydalı

Çevrimdışı Subhan

  • Delphi XE2 Level 5
  • *****
  • İleti: 818
  • Rep: +1/-0
  • Cinsiyet: Bay
Çok güzel makale. Teşekürler Selçuk abi
En Güzel Azeri Programlama Sitesi.

Proqramlasdirma.Com