Arsip: [ask] untuk login form

more 16 years ago
ymulia
guys mau tanya neh ,
gue mau bikin login username n password yang di cek dari table t_user database mysql . ada yg bisa kasih geu pencerahan gimana mulainya.
gue coba download caralogin.rar di download di forum ini tapi error ngak bisa di ekstrak.
thanks
yMulia

more 16 years ago
ksatria_77
Yuhuuuuu......
cooling down....
ini juga saya pernah bikin, koneksi databasenya pake apa ??
mau sourcenya langsung ya??
begin
Query.Close;
Query.SQL.Text:='Select from t_user where username='+quotedstr(edit1.Text);
Query.Open;
If Query.RecordCount=0 then
label1.Caption:='Invalid Username or Password';
Query.Close;
Query.SQL.Text:='Select from t_user where username='+ quotedstr(edit1.Text) + ' and password ='+quotedstr(edit2.text);
Query.Open;
If Query.RecordCount=0 then (label1.Caption:='Invalid Username or Password') else
begin
Form2.Show;
Label1.Caption:='';
end;
mudah2an bisa ngebantu ya,,
Yuhuuuuu......

more 16 years ago
ymulia
L:) gue pake databasenya mysql , connect nya pake dbexpress, or lu ada idea laen enaknya pake component apa ? :D
@ksatria_77: Yuhuuuuu...... cooling down.... ini juga saya pernah bikin, koneksi databasenya pake apa ?? mau sourcenya langsung ya?? begin Query.Close; Query.SQL.Text:='Select from t_user where username='+quotedstr(edit1.Text); Query.Open; If Query.RecordCount=0 then label1.Caption:='Invalid Username or Password'; Query.Close; Query.SQL.Text:='Select from t_user where username='+ quotedstr(edit1.Text) + ' and password ='+quotedstr(edit2.text); Query.Open; If Query.RecordCount=0 then (label1.Caption:='Invalid Username or Password') else begin Form2.Show; Label1.Caption:=''; end; mudah2an bisa ngebantu ya,, Yuhuuuuu......

more 16 years ago
bosenjadiprogrammer
apapun componentnya minumnya teh botol sosroo !
eh maksudnya gini apapun databsenya, apapun koneksinya, pake apapun codingnya
konsep dari login adalah mencari user, apakah dia tercatat di database dan kemudian mencucokkan apakah passwoerdnya bener.
Select from dbuser where username="user"kalo iyah kemudian cocokkan apa user ma passwordnya cocok
Select from dbuser where username="user" and passsword="password"bisa pake cara apa ajah yg penting konsepnya begitu. bisa aja ditambahain enkripsi, validasi wah macem2 tapi konsepnya itu ya itu.[/quote]

more 16 years ago
yayaretina
ada nih cara yg lain.. tinggal pilih, model query pa delphi :
Procedure TFLogin.FormActivate(Sender);
begin
with module.Table do
begin
TableName:='t_user';
Active:=true;
Refresh;
end;
end;
fungsi login:
function TFLogin.CekUser(user,pass: String): Boolean;
begin
result:=false;
if module.Table.Locate('username',user,[]) then
begin
if ((user=module.Table.FieldByName('username').AsString) and
(pass=module.Table.FieldByName('password').AsString)) then
begin
result:=true;
FBerhasilLogin.Show;
end
else result:=false;
if result=false then
begin
Memo.Lines.Clear;
Memo.Text:='Invalid Password, Please cek again !!';
MessageBox(handle,'Invalid Password !!','Error',MB_ICONERROR);
edPass.SetFocus;
Memo.Lines.Clear;
Memo.Text:='Ingat baik-baik password anda...';
end;
end
else
begin
Memo.Lines.Clear;
Memo.Text:='Invalid Username, Please cek again !!';
MessageBox(handle,'Invalid Username !!','Error',MB_ICONERROR);
edUser.SetFocus;
Memo.Lines.Clear;
Memo.Text:='Ingat baik-baik username anda...';
end;
end;
pemanggilan fungsi:
procedure TFLogin.btLoginClick(Sender: TObject);
begin
if CekUser(edUser.Text,edPass.Text)=true then
begin
ModalResult:=mrOk;
end;
end;
bisa pilih deh.. yg mana... :roll: :roll:
more 16 years ago
irosyidi
mas yaya apa metodenya aman untuk sqlinjeksi??
soalnya pernah aku coba cara bosenJadiProgrammer dapat di tembus oleh user yang iseng dengan cara SQLinjeksi :D

more 16 years ago
yayaretina
ya.. kemungkinan ada, namun lebih baik untuk tabel khusus user terutama password, di enskripsi pake MD5 atau bikin sendiri algoritma cara enskrip dan deskrip.. walaupun sebenarnya semua itu masih bisa di tembuh oleh user2 yg berpengalaman di bidangnya...
sekalian berbagi source..
enskripsi MD5
[code:1:a7e1dd1791]
unit Unit2;
Interface
uses
Windows;
type
MD5Count = array[0..1] of DWORD;
MD5State = array[0..3] of DWORD;
MD5Block = array[0..15] of DWORD;
MD5CBits = array[0..7] of byte;
MD5Digest = array[0..15] of byte;
MD5Buffer = array[0..63] of byte;
MD5Context = record
State: MD5State;
Count: MD5Count;
Buffer: MD5Buffer;
end;
procedure MD5Init(var Context: MD5Context);
procedure MD5Update(var Context: MD5Context; Input: pChar; Length: longword);
procedure MD5Result(var Context: MD5Context; var Digest: MD5Digest);
function GetMD5Text(Input: string): string;
implementation
var
PADDING: MD5Buffer = (
$80, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00
);
function F(x, y, z: DWORD): DWORD;
begin
Result := (x and y) or ((not x) and z);
end;
function G(x, y, z: DWORD): DWORD;
begin
Result := (x and z) or (y and (not z));
end;
function H(x, y, z: DWORD): DWORD;
begin
Result := x xor y xor z;
end;
function I(x, y, z: DWORD): DWORD;
begin
Result := y xor (x or (not z));
end;
procedure rot(var x: DWORD; n: BYTE);
begin
x := (x shl n) or (x shr (32 - n));
end;
procedure FF(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
begin
inc(a, F(b, c, d) + x + ac);
rot(a, s);
inc(a, b);
end;
procedure GG(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
begin
inc(a, G(b, c, d) + x + ac);
rot(a, s);
inc(a, b);
end;
procedure HH(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
begin
inc(a, H(b, c, d) + x + ac);
rot(a, s);
inc(a, b);
end;
procedure II(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
begin
inc(a, I(b, c, d) + x + ac);
rot(a, s);
inc(a, b);
end;
procedure Encode(Source, Target: pointer; Count: longword);
var
S: PByte;
T: PDWORD;
I: longword;
begin
S := Source;
T := Target;
for I := 1 to Count div 4 do begin
T^ := S^;
inc(S);
T^ := T^ or (S^ shl 8);
inc(S);
T^ := T^ or (S^ shl 16);
inc(S);
T^ := T^ or (S^ shl 24);
inc(S);
inc(T);
end;
end;
procedure Decode(Source, Target: pointer; Count: longword);
var
S: PDWORD;
T: PByte;
I: longword;
begin
S := Source;
T := Target;
for I := 1 to Count do begin
T^ := S^ and $ff;
inc(T);
T^ := (S^ shr 8) and $ff;
inc(T);
T^ := (S^ shr 16) and $ff;
inc(T);
T^ := (S^ shr 24) and $ff;
inc(T);
inc(S);
end;
end;
procedure Transform(Buffer: pointer; var State: MD5State);
var
a, b, c, d: DWORD;
Block: MD5Block;
begin
Encode(Buffer, @Block, 64);
a := State[0];
b := State[1];
c := State[2];
d := State[3];
FF (a, b, c, d, Block[ 0], 7, $d76aa478);
FF (d, a, b, c, Block[ 1], 12, $e8c7b756);
FF (c, d, a, b, Block[ 2], 17, $242070db);
FF (b, c, d, a, Block[ 3], 22, $c1bdceee);
FF (a, b, c, d, Block[ 4], 7, $f57c0faf);
FF (d, a, b, c, Block[ 5], 12, $4787c62a);
FF (c, d, a, b, Block[ 6], 17, $a8304613);
FF (b, c, d, a, Block[ 7], 22, $fd469501);
FF (a, b, c, d, Block[ 8], 7, $698098d8);
FF (d, a, b, c, Block[ 9], 12, $8b44f7af);
FF (c, d, a, b, Block[10], 17, $ffff5bb1);
FF (b, c, d, a, Block[11], 22, $895cd7be);
FF (a, b, c, d, Block[12], 7, $6b901122);
FF (d, a, b, c, Block[13], 12, $fd987193);
FF (c, d, a, b, Block[14], 17, $a679438e);
FF (b, c, d, a, Block[15], 22, $49b40821);
GG (a, b, c, d, Block[ 1], 5, $f61e2562);
GG (d, a, b, c, Block[ 6], 9, $c040b340);
GG (c, d, a, b, Block[11], 14, $265e5a51);
GG (b, c, d, a, Block[ 0], 20, $e9b6c7aa);
GG (a, b, c, d, Block[ 5], 5, $d62f105d);
GG (d, a, b, c, Block[10], 9, $2441453);
GG (c, d, a, b, Block[15], 14, $d8a1e681);
GG (b, c, d, a, Block[ 4], 20, $e7d3fbc8);
GG (a, b, c, d, Block[ 9], 5, $21e1cde6);
GG (d, a, b, c, Block[14], 9, $c33707d6);
GG (c, d, a, b, Block[ 3], 14, $f4d50d87);
GG (b, c, d, a, Block[ 8], 20, $455a14ed);
GG (a, b, c, d, Block[13], 5, $a9e3e905);
GG (d, a, b, c, Block[ 2], 9, $fcefa3f8);
GG (c, d, a, b, Block[ 7], 14, $676f02d9);
GG (b, c, d, a, Block[12], 20, $8d2a4c8a);
HH (a, b, c, d, Block[ 5], 4, $fffa3942);
HH (d, a, b, c, Block[ 8], 11, $8771f681);
HH (c, d, a, b, Block[11], 16, $6d9d6122);
HH (b, c, d, a, Block[14], 23, $fde5380c);
HH (a, b, c, d, Block[ 1], 4, $a4beea44);
HH (d, a, b, c, Block[ 4], 11, $4bdecfa9);
HH (c, d, a, b, Block[ 7], 16, $f6bb4b60);
HH (b, c, d, a, Block[10], 23, $bebfbc70);
HH (a, b, c, d, Block[13], 4, $289b7ec6);
HH (d, a, b, c, Block[ 0], 11, $eaa127fa);
HH (c, d, a, b, Block[ 3], 16, $d4ef3085);
HH (b, c, d, a, Block[ 6], 23, $4881d05);
HH (a, b, c, d, Block[ 9], 4, $d9d4d039);
HH (d, a, b, c, Block[12], 11, $e6db99e5);
HH (c, d, a, b, Block[15], 16, $1fa27cf8);
HH (b, c, d, a, Block[ 2], 23, $c4ac5665);
II (a, b, c, d, Block[ 0], 6, $f4292244);
II (d, a, b, c, Block[ 7], 10, $432aff97);
II (c, d, a, b, Block[14], 15, $ab9423a7);
II (b, c, d, a, Block[ 5], 21, $fc93a039);
II (a, b, c, d, Block[12], 6, $655b59c3);
II (d, a, b, c, Block[ 3], 10, $8f0ccc92);
II (c, d, a, b, Block[10], 15, $ffeff47d);
II (b, c, d, a, Block[ 1], 21, $85845dd1);
II (a, b, c, d, Block[ 8], 6, $6fa87e4f);
II (d, a, b, c, Block[15], 10, $fe2ce6e0);
II (c, d, a, b, Block[ 6], 15, $a3014314);
II (b, c, d, a, Block[13], 21, $4e0811a1);
II (a, b, c, d, Block[ 4], 6, $f7537e82);
II (d, a, b, c, Block[11], 10, $bd3af235);
II (c, d, a, b, Block[ 2], 15, $2ad7d2bb);
II (b, c, d, a, Block[ 9], 21, $eb86d391);
inc(State[0], a);
inc(State[1], b);
inc(State[2], c);
inc(State[3], d);
end;
procedure MD5Init(var Context: MD5Context);
begin
with Context do begin
State[0] := $67452301;
State[1] := $efcdab89;
State[2] := $98badcfe;
State[3] := $10325476;
Count[0] := 0;
Count[1] := 0;
ZeroMemory(@Buffer, SizeOf(MD5Buffer));
end;
end;
procedure MD5Update(var Context: MD5Context; Input: pChar; Length: longword);
var
Index: longword;
PartLen: longword;
I: longword;
begin
with Context do begin
Index := (Count[0] shr 3) and $3f;
inc(Count[0], Length shl 3);
if Count[0] < (Length shl 3) then inc(Count[1]);
inc(Count[1], Length shr 29);
end;
PartLen := 64 - Index;
if Length >= PartLen then begin
CopyMemory(@Context.Buffer[Index], Input, PartLen);
Transform(@Context.Buffer, Context.State);
I := PartLen;
while I + 63 < Length do begin
Transform(@Input[I], Context.State);
inc(I, 64);
end;
Index := 0;
end else I := 0;
CopyMemory(@Context.Buffer[Index], @Input[I], Length - I);
end;
procedure MD5Result(var Context: MD5Context; var Digest: MD5Digest);
var
Bits: MD5CBits;
Index: longword;
PadLen: longword;
begin
Decode(@Context.Count, @Bits, 2);
Index := (Context.Count[0] shr 3) and $3f;
if Index < 56 then PadLen := 56 - Index else PadLen := 120 - Index;
MD5Update(Context, @PADDING, PadLen);
MD5Update(Context, @Bits, 8);
Decode(@Context.State, @Digest, 4);
ZeroMemory(@Context, SizeOf(MD5Context));
end;
function GetMD5Text(Input: string): string;
var
Context: MD5Context;
I: Byte;
DigestResult: MD5Digest;
const
Digits: array[0..15] of char =
('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
begin
Result := '';
MD5Init(Context);
MD5Update(Context, pChar(Input), Length(Input));
MD5Result(Context, DigestResult);
for I := 0 to 15 do
Result := Result + Digits[(DigestResult[I] shr 4) and $0f] + Digits[DigestResult[I] and $0f];
end;
end.
//From: Ivan Miraza (miraza@linuxmail.org, ivanmiraza@gmail.com
[/code:1:a7e1dd1791]
untuk pemanggilannya :
uses unit2;
...............
...............
procedure TFLogin.btLoginClick(Sender: TObject);
begin
if CekUser(edUser.Text,GetMD5Text(edPass.Text))=true then
begin
ModalResult:=mrOk;
end;
end;
sebelum melakukan login, pastikan password di tabel user sudah terenskripsi terlebih dahulu...
penggunaannya sama seperti pemanggilan...
more 16 years ago
saysansay
Xixixi isi Absen Dulu ach...Wew. Uda lama Nga posting...Cuma Saran...Klu Untuk password Memang bagusnya Pake MD5 Tapi Kita Juga Liat Standar Kebutuhan....Tapi Klu untuk Aplikasi Sederhana Yah Cukup enskripsi yg sederhana Ajah...Cuma Bisa kasih Koment..xixixixixixi Nga bisa Kasih Contoh..

more 16 years ago
bosenjadiprogrammer
@irosyidi: mas yaya apa metodenya aman untuk sqlinjeksi?? soalnya pernah aku coba cara bosenJadiProgrammer dapat di tembus oleh user yang iseng dengan cara SQLinjeksi :D:wink: methodnya SQL query tetep sama tapi pada proses inputan dari user jangan sampai bisa dimasuki karakter yg non alphabet atou non numeric jadi simbol2 seperti tanda kutip (") (=) (%) dan macem keluarganya jangan samapi diproses karena inilah yg bisa dibikin sebagai SQL injection. jadi bikin validasi dulu , kalou ada karakter non alphabet dan numeric jangan dilanjut ke proses query.
more ...
- Pages:
- 1
reply |
Report Obsolete
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 2 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 3 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 10 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 10 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 10 years ago
Random Topic
- bagaimana cara membaca data sensor ke delphi
by w4rek in Network, Files, I/O & System more 15 years ago - download dengan delphi
by skh_cay in Enginering more 15 years ago - sql command copy tabel ke bentuk .txt
by belajaraja in Tip n Trik Pemrograman more 15 years ago - Stored procedure di mySQL
by belva in MySQL more 16 years ago - Masalah Pengiriman Data Stream via Indy
by machomen in Tip n Trik Pemrograman more 15 years ago - Maaf Posting thread yang ter-lock
by n3o_cybertech in Moderator Only more 13 years ago - Delphi 7.0 atau Delphi 2007 ?
by wequ in Hal umum tentang Pascal Indonesia more 15 years ago - tanya connect database access k delphi
by kids in Tip n Trik Pemrograman more 15 years ago - Tentang Morfix?
by banja in Web Programming more 13 years ago - Cannot Find Implementation of Method TLMChange ?
by hermawan-dki in Tip n Trik Pemrograman more 15 years ago