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;
.
.
.