Membuat Validasi Login User Berbasis Database dengan Borland Delphi

Saturday, February 9, 2008

Jika Anda membuat aplikasi untuk beberapa user group atau user level. Misalnya aplikasi anda digunakan untuk mengolah data penjualan suatu barang dan di aplikasi anda tersebut misalnya terdapat beberapa modul/menu diantaranya input data barang, input data penjualan, input data pembelian, laporan barang masuk, laporan barang keluar, laporan rugi laba, administrasi user dan lain sebagainya.




Nah tidak semua orang/user tentunya mempunyai hak untuk mengakses semua modul/menu tersebut. Misalnya ada dua level user yaitu Administrator dan operator. Operator hanya bertugas untuk menginput data barang, input data pembelian, input data penjualan, laporan barang masuk dan laporan barang keluar. Untuk Laporan Keuangan Rugi Laba dan administrasi user hanya boleh diakses oleh Administrator yang mempunyai kewenangan penuh terhadap seluruh aplikasi. Untuk itu tentunya aplikasi anda membutuhkan sebuah validasi user yaitu lewat sebuah proses login.



berikut ini saya akan memberikan sebuah contoh pembuatan aplikasi untuk validasi login user berbasis databases di borland delphi. Disini saya menggunakan borland delphi versi 7.



Sebelum mulai dengan Delphi anda harus membuat dahulu sebuah database misalnya kita gunakan database Microsoft Access.




  • Masuk ke Microsoft Access buat database baru : File | New | Blank Database. Simpan di folder C:\APP\Login dengan nama DelphiTutorial.mdb.

  • Buat table baru : Insert | Table. Pada kotak dialog yang muncul pilih Design View klik ok.




Buat struktur tabel seperti dibawah ini :























Filed Name Data Type Size
Username Text 30
Password Text 50
Status Text 1


Field Status digunakan untuk pengenalan level user (0 untuk operator dan 1 untuk administrator). Berikan primary key pada field Username dan simpan table dengan nama Login. Kemudian isikan beberapa data, contoh :



















Username Password Status
yana belajar 0
yanadoe delphi tutor 1





  • Buat sebuah project baru di Delphi : File | New | Aplication

  • Tambahkan dua buah komponen Edit dan dua buah komponen Button dan dua buah komponen Label

  • Tambahkan sebuah form lagi : File | New | Form.



Set property tiap komponen sebagai berikut :










































































Nama Komponen Nama Property Nilai
- Form1 Name FLogin
- Form2 Name FMenu
- Label1 Name Label1
  Caption Username
- Label2 Name Label2
  Caption Password
- Edit1 Name EUsername
- Edit2 Name EPassword
  PasswordChar *
- Button1 Name BtnOk
  Caption Login
- Button2 Name BtnCancel
  Caption Batal



Sehingga tampilannya seperti ini :





  • Simpan project di C:\APP\Login dengan nama PLogin.dpr.
  • Klik Flogin, tambahkan sebuah komponen AdoQuery (ada di tab ADO)

  • Set Property Namenya : AQLogin

  • Set Property ConnectionString : Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DelphiTutorial.mdb;Persist Security Info=False

  • klik form Fmenu kemudian tambahkan komponen MainMenu.

  • Dobel klik komponen MainMenu dan tambahkan satu menu dan beberapa submenu sehingga tampilannya seperti dibawah ini :






  • dobel klik komponen BtnOk di form FLogin kemudian isikan kode berikut :





aqlogin.Close;

aqlogin.SQL.Text := 'select * from login where username = :un and password = :pw';

aqlogin.Prepared := true;

aqlogin.Parameters[0].Value := EUsername.Text;

aqlogin.Parameters[1].Value := EPassword.Text;

aqlogin.Open;


if aqlogin.RecordCount < 1 then // jika data tidak ada, tampilkan pesan error

begin

Messagedlg('Username tidak dikenal',mterror,[mbok],0);

Exit;

end

else if aqlogin.RecordCount > 0 then // jika data ada, cek status

begin

if aqlogin.FieldValues['status'] = '0' then // jika status 0, maka menu administrator disembunyikan

begin

fMenu.caption := 'Contoh Database Login ...on ['+

uppercase(aqlogin.FieldValues['username'])+'] as Operator';

fmenu.Administrator1.visible := false;

end

else if aqlogin.FieldValues['status'] = '1' then

fMenu.caption := 'Contoh Database Login ...on ['+

uppercase(aqlogin.FieldValues['username'])+'] as Administrator';

else

begin

Messagedlg('User level tidak jelas, login gagal',mterror,[mbok],0);

exit;

end;

end;

flogin.Hide;

fMenu.show;





  • Dobel klik komponen BtnCancel, kemudian tambahkan kode berikut :




application.Terminate;



Kode pada BtnOk akan memeriksa username dan password dengan data yang ada di tabel login. Jika data ada aplikasi kemudian akan memeriksa status user. Jika status user tersebut "0" maka yang menu yang ditampilkan di form FMenu hanya menu untuk operator saja dan apabila status user "1" maka semua menu di form FMenu akan ditampilkan.



Main Form untuk project ini adalah Flogin jadi jika anda menutup form FMenu, maka seolah-olah aplikasi sudah tertutup, padahal sebenarnya aplikasi tersebut masih berjalan di background, karena Flogin yang jadi Main Form belum tertutup. Untuk membuktikannya, klik kanan di taskbar dan pilih Task Manager. Klik pada tab Proses kemudian cari entry dengan nama Plogin.exe.



Untuk mengatasi masalah tersebut, klik di FMenu kemudian pada Object Inspector klik tab Events kemudian dobel klik pada event OnClose, lalu tambahkan kode berikut :




application.Terminate;



Dengan demikian aplikasi akan di terminate ketika anda menutup form Fmenu

.

9 comments:

JohnWarezz said...

sorry nih, kemaren applikasi ini masih error ada yang kelewat maklumlah bikinnya buru-buru. tutorial ini udah di update tanggal 22 februari 2008.

raditYa99 said...

trima kasih atas tutorialnya.
Apakah login ini sudah bisa untuk merubah password?

Anonymous said...

makasih mas raditya udah komen di blogku. script delphi ini hanya buat validasi login user kalau buat rubah password mas raditya tinggal rubah sql statementnya sama statement sql update seperti ini :
update login set password= :pw where username = :un.

mudah-mudahan bisa membantu.

Unknown said...

mas kode login delphi itu udah siap menghadapi sql injection..? masalahnya sy juga bikin yg rada mirip...ternyata kode sy rentan thdp sql injection dengan memasukkan di username "' or 1 = 1 --" dan voalla user bisa masuk sebagai pengguna yg data nya terdaftar pertama di DB...
Kalau boleh sy minta diajarkan validasi input di delphi, jadi pengguna cuman bisa memasukkan karakter alphanumerik saja....
Selebihnya terimakasih artikel nya bagus juga...

JohnWarezz said...

makasih mas fast atas masukannya, mas fast pake db apa, aku udah coba yang Program ini dan secure tapi entar aku cek lagi deh. kalo untuk validasi karakter input coba aja gunakan
if not (key in [chr(48)..chr(122)]) then
begin
...
end;

JohnWarezz said...

mas fast ini kode lengkap untuk validasi input Alphanumeric

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
SelSt: Integer;
TmpStr: string;

begin
if not (key in ['a'..'z','A'..'Z','0'..'9',Chr(vk_Back)]) then
with (Sender as TEdit) do
begin
SelSt := SelStart;
if (Key = Chr(vk_Back)) and (SelLength <> 0) then
TmpStr := Copy(Text,1,SelStart)+Copy(Text,SelLength+SelStart+1,255)
else if Key = Chr(vk_Back) then
TmpStr := Copy(Text,1,SelStart-1)+Copy(Text,SelStart+1,255)
else
TmpStr := Copy(Text,1,SelStart)+Key+Copy(Text,SelLength+SelStart+1,255);
if TmpStr = '' then Exit;


if (Key = Chr(vk_Back)) and (SelSt > 0) then Dec(SelSt)
else if Key <> Chr(vk_Back) then Inc(SelSt);
Key := #0;
if SelSt = 0 then
begin
Text:= '';
Exit;
end;
end;

Unknown said...

kalau didepannya ditambah satu button lagi untuk mengganti passwor acces loginnya bisa ga..? soalnya kalau ketahuan passw...nya musti ganti..tanpa harus edit di delphi tolong kasih samplenya dengan database acces..please..!

Unknown said...

mas kalo mu tambah pengguna lg jd 3 orang gmna mas??

Unknown said...

gan mana program delphi user yg udah di update?

Recent Comments

Tags Cloud

Blogumulus by Roy Tanck and Amanda Fazani