Delphi Can

Orjinalini görmek için tıklayınız: Kullanıcı Giriş
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
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?
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
(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 ^^
(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ı
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.
(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!
(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;
  .
  .
  .