Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Kullanıcı Giriş
#1
Merhaba. Şuan programda kullanıcı giriş ekranı yapmak istiyorum. Editlere girilen Kullanıcı adı ve şifresini de veritabanından çekmesini istiyorum.
Kullandığım Kod; 


  Kullanici_Query.close;
  Kullanici_Query.SQL.Text:='Select * from Kullanici Where ID= ('+QuotedStr(ID.Text)+') and sifre= ('+QuotedStr(Sifre.Text)+')';
  Kullanici_Query.Open;
  if Kullanici_Query.RecordCount = 0 then
  begin
      Application.CreateForm(TForm1,form1);
      Form1.ShowModal;
  end else
  begin
      ShowMessage('Böyle kullanıcı yok');
  end;


Şuan bir hata almıyorum. Ama çalıştırdığımda şifre hatalı da olsa doğru da olsa direk yeni forma geçiyor. Nerede hatam var acaba?
Don't fear the try!
Cevapla
#2
Kayıt yoksa, (böyle kullanıcı yoksa ) Formu create et demişsin

if Kullanici_Query.RecordCount = 0 then
 begin
     Application.CreateForm(TForm1,form1);
     Form1.ShowModal;
 end

Böyle yap
if Kullanici_Query.RecordCount <> 0 then
 begin
     Application.CreateForm(TForm1,form1);
     Form1.ShowModal;
 end
WWW
Cevapla
#3
(18-01-2017, Saat: 10:36)yhackup Adlı Kullanıcıdan Alıntı: Kayıt yoksa, (böyle kullanıcı yoksa ) Formu create et demişsin

if Kullanici_Query.RecordCount = 0 then
 begin
     Application.CreateForm(TForm1,form1);
     Form1.ShowModal;
 end

Böyle yap
if Kullanici_Query.RecordCount <> 0 then
 begin
     Application.CreateForm(TForm1,form1);
     Form1.ShowModal;
 end
Dediğiniz gibi yaptım oldu. Birde ben 0 yapmışım orayı... bilgi yok ise yapmışım. 0'ı 1 olarak düzeltince de aynı işlemi yaptı. Yeni başladığım için bu yazılım işine hala arada yanlışlıklar yapabiliyorum.. Teşekkür ederim yorumunuz için ^^
Don't fear the try!
Cevapla
#4
(18-01-2017, Saat: 10:40)cudyfoster Adlı Kullanıcıdan Alıntı:
(18-01-2017, Saat: 10:36)yhackup Adlı Kullanıcıdan Alıntı: Kayıt yoksa, (böyle kullanıcı yoksa ) Formu create et demişsin

if Kullanici_Query.RecordCount = 0 then
 begin
     Application.CreateForm(TForm1,form1);
     Form1.ShowModal;
 end

Böyle yap
if Kullanici_Query.RecordCount <> 0 then
 begin
     Application.CreateForm(TForm1,form1);
     Form1.ShowModal;
 end
Dediğiniz gibi yaptım oldu. Birde ben 0 yapmışım orayı... bilgi yok ise yapmışım. 0'ı 1 olarak düzeltince de aynı işlemi yaptı. Yeni başladığım için bu yazılım işine hala arada yanlışlıklar yapabiliyorum.. Teşekkür ederim yorumunuz için ^^

Est. yeni başlayanda yıllardır tecrübeli olanlarda böyle hatalara düşebilir.

Ama bir login işlemini ben olsam böyle yapmam, adam şifresini yanlış girse böyle kullanıcı yok hatası alacak yeni kullanıcı açmaya çalışacak muhtemelen kullanıcı adı da uniqe ikinci defa açtırmayacak vs vs

Önce kullanıcı adından arat sadece (kullanıcı çoksa index ekle), Dönen kayıt adetine bakarsın 0 'sa kullanıcı yok,
1 ise devam, bu sefer parolayı kontrol et , eğer eşleşiyorsa devam eşleşmiyor ise şifre hatalı
WWW
Cevapla
#5
Bug 
Ayrıca bu yaptığınız yöntem sql injection riski içerir. Query'nin içersinde yazacağınız sql'i yazın ve dışardan alacağınız değerleri parametre olarak tanımlayın. Query'nizi execute ederken sadece parametreleri set etmeniz yeterli olacaktır.
Cevapla
#6
(18-01-2017, Saat: 11:55)edo Adlı Kullanıcıdan Alıntı: Ayrıca bu yaptığınız yöntem sql injection riski içerir. Query'nin içersinde yazacağınız sql'i yazın ve dışardan alacağınız değerleri parametre olarak tanımlayın. Query'nizi execute ederken sadece parametreleri set etmeniz yeterli olacaktır.


Kesinlikle bu öneriye kulak verin, aksi durumda programınıza az bir sql bilen programınıza giriş yapabilir!
Cevapla
#7
(18-01-2017, Saat: 14:45)pro_imaj Adlı Kullanıcıdan Alıntı:
(18-01-2017, Saat: 11:55)edo Adlı Kullanıcıdan Alıntı: Ayrıca bu yaptığınız yöntem sql injection riski içerir. Query'nin içersinde yazacağınız sql'i yazın ve dışardan alacağınız değerleri parametre olarak tanımlayın. Query'nizi execute ederken sadece parametreleri set etmeniz yeterli olacaktır.

Kesinlikle bu öneriye kulak verin, aksi durumda programınıza az bir sql bilen programınıza giriş yapabilir!

+1453

Kullanımına örnek,
with MyQuery do
 begin
  Close;
  SQL.Clear;
  SQL.Add('Select *From user where username=:user');
  ParamByName('user').AsString := pUserName;
  .
  .
  .
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Kullanıcı Giriş Onay Anahtarı OZCANK 2 741 19-08-2024, Saat: 13:06
Son Yorum: OZCANK
  Webden kullanıcı bilgilerini çekme Husv 2 1.304 25-01-2023, Saat: 18:43
Son Yorum: Husv
  domaindeki bir klasöre kullanıcı adı ve şifre ile erişme shooterman 9 2.769 23-01-2023, Saat: 12:17
Son Yorum: shooterman
  Kullanıcı Adı ve Parola Alanlarının Otomatik Doldurulması bünyamin68 4 1.953 04-11-2022, Saat: 16:52
Son Yorum: ihalilcoban
  Giriş Bilgilerini Kaydetme bnyamin86 4 2.276 03-10-2020, Saat: 16:04
Son Yorum: bnyamin86



Konuyu Okuyanlar: 1 Ziyaretçi