Arsip: Aplikasi Delphi Konek database layaknya php namun dengan Zeos, Mysql dan TIniFiles Ber Enkripsi


by cadasmerah-camar in Security more 10 years ago 5081
Di dasari oleh kebutuhan membuat Aplikasi yang berhubungan dengan konfigurasi database, hal tersebut yang mendorongku untuk membuat Aplikasi ini. hitung hitung berbagi ilmu yang mudah-mudahan berguna. Oke, kadang dalam kebutuhan tertentu kita perlu menggunakan file config seperti biasanya kalo di membuat web dengan php biasanya ada saja file config.php yang berisi konfigurasi database serta user pada database bila diterapkan dalam Delphi tentunya bisa saja karena adanya Fasilitas yang diberikan oleh Delphi yaitu Class TIniFile. Tapi kan ga lucu bila file konfigurasi tersebut terbuka tanpa ekripsi, apalagi dalam case ini kita menggunakan Komponen Zeos sebagai jembatan akses ke dalam Database MySQL yang tentunya membutuhkan parameter server,user,password, database yah ceritanya untuk security Sederhana menggunakan file konfigurasi.

Di dasari oleh kebutuhan membuat Aplikasi yang berhubungan dengan konfigurasi database, hal tersebut yang mendorongku untuk membuat Aplikasi ini. hitung hitung berbagi ilmu yang mudah-mudahan berguna.

Oke, kadang dalam kebutuhan tertentu kita perlu menggunakan file config seperti biasanya kalo di membuat web dengan php biasanya ada saja file config.php yang berisi konfigurasi database serta user pada database bila diterapkan dalam Delphi tentunya bisa saja karena adanya Fasilitas yang diberikan oleh Delphi yaitu Class TIniFile. Tapi kan ga lucu bila file konfigurasi tersebut terbuka tanpa ekripsi, apalagi dalam case ini kita menggunakan Komponen Zeos sebagai jembatan akses ke dalam Database MySQL yang tentunya membutuhkan parameter server,user,password, database yah ceritanya untuk security Sederhana menggunakan file konfigurasi.

Algoritmanya begini

1. Baca file konfigurasi.ini
2. tentukan parameter yang dibutuhkan oleh ZeosConnection untuk melakukan koneksi database parameternya yaitu : user,host,database dan password MySQL nya
3. jika berhasil konekkan databasenya

Langsung saja Buka Delphi anda dalam dalam uji coba saya menggunakan Delphi 7 tentunya tidak begitu banyak perbedaan pada delphi dengan Delphi versi atasnya. Asumsinya di dalam
Delphi kita telah terinstall Komponen Zeos kalo ga ada yah download dulu di sini

1. Buat Aplikasi baru : File -> New -> Application;
2. Agar manajemen Komponen lebih rapi tambahkan lagi Modul : File -> New -> Data Modul;
3. Ubah nama Form1 menjadi FormKontak.
4. Simpan unit1.pas dengan nama unUtama.pas dan unit2.pas dengan nama unDM.pas
5. Di dalam coding unUtama tepatnya di bawah baris implementation tambahkan uses unDM ; seperti di bawah ini

var
FormKontak: TFormKontak;
implementation
uses unDM;
{$R .dfm}

6. Letakan Komponen ini pada Data Modul

ZConnection ada di Tab Zeos Acces -> ubah Nama=koneksi, protocol sesuaikan dengan Veris MySQL yg kita gunakan aku menggunakan MySQL 5 property yang lainnya biarkan apa adanya
ZQuery ada di Tab Zeos Acces -> ubah Namanya Menjadi -> qryKontak karena query itu untuk menampilkan data Kontak (sebenarnya terserah saja masalah penamaan cari yg mudah saja), Ubah property Connection menjadi koneksi
Data Source ada di Tab Data Acces -> Nama = DSKontak, isi property DataSet ke qryKontak

untuk menampilkan data kita membutuhkan DBGrid ada di Tab Data Control kemudian letakaan Komponen DBGrid di dalam FormKontak ubah nama DBGrid1 menjadi DBGridKontak isi DataSource dengan DM.DSKontak

Ups klo begitu untuk mengisi data file konfiguras perlu ada Decripsi dong tenang aja aku juga Sertakan File untuk Membuat file konfigurasi.ini maaf bila koding nya masih berhamburan sana sini tinggal dirapikan saja misalnya file unit untuk encripsi_dekripsi di pisah jadi mudah untuk digunakan kembali tinggal kreasi kita saja terus di buat cek database konfigurasi misalnya klo tidak bisa konek jangan buat file konfigurasi.ini sekali lagi contoh ini sangat simple dan banyak celah kelemahannya masih bisa dikembangkan menggunakan Algoritma md5 misalnya harapanku yang baca bisa lebih mengembangkannya kalo aku sendiri biasanya file nya bukan lagi file.ini tapi file binary yah namanya juga belajar.

Let’s go to code

unit unUtama; interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ZConnection, Grids, DBGrids;

type
TFormKontak = class(TForm)
DBGridKontak: TDBGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FormKontak: TFormKontak;

implementation
uses unDM;
{$R .dfm}

procedure TFormKontak.FormCreate(Sender: TObject);
var sql:WideString ;
begin
sql:= 'SELECT c.id_kontak AS id,CONCAT(c.nm_depan," ",c.nm_belakang) '
'AS "Nama Lengkap",c.alamat AS Alamat,c.email AS Email,'
'b.nm_grup AS Grup FROM kontak c '
'INNER JOIN grup b ON b.id_grup=c.id_grup';
DM.isiQry(DM.qryKontak,sql);
end;
end.


//Unit file Data Modul


unit unDM;

interface

uses
SysUtils, Classes, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
ZConnection,IniFiles,Forms,Dialogs;

type
TDM = class(TDataModule)
koneksi: TZConnection;
qryKontak: TZQuery;
DSKontak: TDataSource;
function KonekDB(serv,usr,pass,db:string):Boolean;
procedure DataModuleCreate(Sender: TObject);
private
flConfig:TIniFile;
function Encrypt(const s: String; CryptInt: Integer): String;
function Decrypt(const s: String; CryptInt: Integer): String;
{ Private declarations }
public
procedure isiQry(qry:TZQuery;SqlStr:string);
{ Public declarations }
end;

var
DM: TDM;
const
c1 = 52845;
c2 = 22719;

implementation

{$R .dfm}
function TDM.Encrypt(const s: String; CryptInt: Integer): String;
var
i: integer;
s2: string;
begin
if not (Length(s) = 0) then
for i := 1 to Length(s) do
s2 := s2 Chr(Ord(s[i]) CrypTint);
Result := s2;
end;

function TDM.Decrypt(const s: String; CryptInt: Integer): String;
var
i: integer;
s2: string;
begin
if not (Length(s) = 0) then
for i := 1 to Length(s) do
s2 := s2 Chr(Ord(s[i]) - cryptint);
Result := s2;
end;

function TDM.KonekDB(serv,usr,pass,db:string):Boolean;
var alm:string;
begin
Result := True;
alm:= ExtractFilePath(Application.ExeName);
flConfig := TINIFile.Create(alm '\konfigurasi.ini');
try
with koneksi do
begin
HostName:= Decrypt(flConfig.ReadString('data','host',serv),72);
User := Decrypt(flConfig.ReadString('data','user',usr),72);
Password := Decrypt(flConfig.ReadString('data','pass',pass),72);
Database := Decrypt(flConfig.ReadString('data','db',usr),72);;
Connected;
end;
except
Application.MessageBox('Gagal Melakukan Koneksi Database','Warning');
end;
end;

procedure TDM.isiQry(qry:TZQuery;SqlStr:string);
begin
with qry do
begin
SQL.Clear;
SQL.Text:=sqlSTR;
Open;
end;
end;

procedure TDM.DataModuleCreate(Sender: TObject);
begin
KonekDB('localhost','root','root','fendi_db');
end;

end.

Maaf penjelasannya terlalu singkat karena memang di kerjakan secara singkat saja daripada di simpan di dalam uneg-uneg ngabisin space di kepalaku aja, jadi mending di bagi-bagikan ini link downloadnya di sini nitip di web orang ya
Konfig Maker + Source Download
Aplikasi Utama + Source Download
File kontak.sql Download

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com