Pada artikel ini akan dijelaskan perlunya autentifikasi user dalam suatu sistem, serta cara pembuatannya dengan PHP script.
Ngomong-ngomong… apa sih autentifikasi user ini? Autentifikasi user adalah suatu mekanisme untuk memastikan apakah suatu user itu berhak masuk ke dalam sistem atau bukan. Implementasinya adalah berupa login. Dalam hal ini user yang berhak mengakses akan diberikan nama user tertentu beserta password. Gampangannya… bila terdapat nama user dan password yang tidak terdaftar dalam daftar user, maka user tersebut tidak berhak mengakses. Saya kira tidak perlu dipanjanglebarkan masalah ini karena hampir semua orang tahu
OK…. saya akan coba menjelaskan mekanisme autentifikasi ini terlebih dahulu. Berikut ini alur atau proses dari proses autentifikasi user, mulai user tersebut mendaftar.
Pendaftaran User
- User mengisi form pendaftaran sebagai legal user (user mengisi username dan password)
- Sistem akan mengecek apakah username yang didaftarkan sudah ada yang memiliki atau belum
- Jika sudah ada, user diminta mengisi kembali username yang lain beserta passwordnya. Sedangkan jika belum ada, data user ini akan disimpan dalam database, dengan password terenkripsi.
- User yang akan mengakses sistem diminta memasukkan username dan password (asli)
- Sistem akan mencari password terenkripsi yang tersimpan dalam database berdasarkan username yang terdaftar
- Sistem akan mencocokkan antara password asli terenkripsi yang diisikan user melalui form login, dengan password terenkripsi yang tersimpan dalam database
- Jika password asli terenkripsi yang dikirim via form login ini sama dengan password terenkripsi yang ada dalam database, maka user tadi bisa masuk ke dalam sistem. Jika tidak sama, maka user tadi tidak berhak masuk ke sistem.
Dalam artikel ini akan dibahas bagaimana membuat autentifikasi user ini dengan script PHP, serta mengantisipasi user yang mem-by pass autentifikasi ini.
Pertama, kita siapkan tabel user terlebih dahulu.
1.
CREATE
TABLE
user
(
2.
username
varchar
(20),
3.
password
varchar
(32),
4.
PRIMARY
KEY
(username)
5.
)
OK… langkah kedua kita siapkan form pendaftaran usernya.
register.php
01.
<
form
method
=
"post"
action
=
"submit.php"
>
02.
<
table
border
=
"0"
>
03.
<
tr
>
04.
<
td
>Masukkan Username </
td
>
05.
<
td
><
input
name
=
"username"
type
=
"text"
></
td
>
06.
</
tr
>
07.
<
tr
>
08.
<
td
>Masukkan Password </
td
>
09.
<
td
><
input
name
=
"pass1"
type
=
"password"
></
td
>
10.
</
tr
>
11.
<
tr
>
12.
<
td
>Ulangi Password </
td
>
13.
<
td
><
input
name
=
"pass2"
type
=
"password"
></
td
>
14.
</
tr
>
15.
<
tr
>
16.
<
td
> </
td
>
17.
<
td
><
input
type
=
"submit"
name
=
"Submit"
value
=
"Submit"
></
td
>
18.
</
tr
>
19.
</
table
>
20.
</
form
>
Selanjutnya kita buat script untuk pemrosesan registrasi user ini.
submit.php
01.
<?php
02.
$username
=
$_POST
[
'username'
];
03.
$password1
=
$_POST
[
'pass1'
];
04.
$password2
=
$_POST
[
'pass2'
];
05.
06.
// cek kesamaan password
07.
if
(
$password1
==
$password2
)
08.
{
09.
mysql_connect(
"namahost"
,
"dbuser"
,
"dbpass"
);
10.
mysql_select_db(
"dbname"
);
11.
12.
// perlu dibuat sebarang pengacak
13.
$pengacak
=
"NDJS3289JSKS190JISJI"
;
14.
15.
// mengenkripsi password dengan md5() dan pengacak
16.
$password1
= md5(
$pengacak
. md5(
$password1
) .
$pengacak
);
17.
18.
// menyimpan username dan password terenkripsi ke database
19.
$query
=
"INSERT INTO user VALUES('$username', '$password1')"
;
20.
$hasil
= mysql_query(
$query
);
21.
22.
// menampilkan status pendaftaran
23.
if
(
$hasil
)
echo
"User sudah berhasil terdaftar"
;
24.
else
echo
"Username sudah ada yang memiliki"
;
25.
26.
}
27.
else
echo
"Password yang dimasukkan tidak sama"
;
28.
29.
?>
Nah selanjutnya… misalkan kita buat skenario bahwa terdapat dua buah halaman (halaman 1 dan halaman 2) dalam sistem yang membutuhkan autentifikasi user sebelum masuk ke dalamnya.
OK… untuk autentifikasi, kita buat form loginnya.
login.php
01.
<
form
method
=
"post"
action
=
"loginsubmit.php"
>
02.
<
table
border
=
"0"
>
03.
<
tr
>
04.
<
td
>Masukkan Username </
td
>
05.
<
td
><
input
name
=
"username"
type
=
"text"
></
td
>
06.
</
tr
>
07.
<
tr
>
08.
<
td
>Masukkan Password </
td
>
09.
<
td
><
input
name
=
"pass"
type
=
"password"
></
td
>
10.
</
tr
>
11.
<
tr
>
12.
<
td
> </
td
>
13.
<
td
><
input
type
=
"submit"
name
=
"Submit"
value
=
"Submit"
></
td
>
14.
</
tr
>
15.
</
table
>
16.
</
form
>
loginsubmit.php
01.
<?php
02.
// menjalankan session
03.
session_start();
04.
05.
$username
=
$_POST
[
'username'
];
06.
$password
=
$_POST
[
'pass'
];
07.
08.
mysql_connect(
"namahost"
,
"dbuser"
,
"dbpass"
);
09.
mysql_select_db(
"dbname"
);
10.
11.
// mencari password terenkripsi berdasarkan username
12.
$query
=
"SELECT * FROM user WHERE username = '$username'"
;
13.
$hasil
= mysql_query(
$query
)
or
die
(
"Error"
);
14.
$data
= mysql_fetch_array(
$hasil
);
15.
16.
$pengacak
=
"NDJS3289JSKS190JISJI"
;
17.
18.
// cek kesesuaian password terenkripsi dari form login
19.
// dengan password terenkripsi dari database
20.
if
(md5(
$pengacak
.md5(
$password
).
$pengacak
) ==
$data
[
'password'
])
21.
{
22.
// jika sesuai, maka buat session untuk username
23.
$_SESSION
[
'username'
] =
$username
;
24.
25.
// menampilkan menu ke halaman akses
26.
echo
"<h2>Login sukses</h2>"
;
27.
echo
"<p><a href=\"hal1.php\">Menu 1</a> | <a href=\"hal2.php\">Menu 2</a></p>"
;
28.
}
29.
else
echo
"<h2>Login Gagal</h2>"
;
30.
31.
?>
Selanjutnya, untuk mencegah by pass yang dilakukan user nakal ke dalam halaman 1 dan 2, maka kita perlu membuat script untuk menanggulangi hal ini.
cek.php
01.
<?php
02.
03.
session_start();
04.
05.
// mengecek ada tidaknya session untuk username
06.
if
(!isset(
$_SESSION
[
'username'
]))
07.
{
08.
echo
"<h1>Anda belum login</h1>"
;
09.
exit
;
10.
}
11.
12.
?>
Nah.. script cek.php di atas harus disisipkan di setiap halaman yang sifatnya private atau membutuhkan autentifikasi user.
Misalkan isi halaman 1 dan 2 adalah sebagai berikut
hal1.php
01.
<?php
02.
03.
include
"cek.php"
;
04.
05.
echo
"<h1>Ini Halaman 1</h1>"
;
06.
echo
"<p><a href=\"hal1.php\">Menu 1</a> | <a href=\"hal2.php\">Menu 2</a></p>"
;
07.
echo
"<p>Ini isi halaman 1. Ini isi halaman 1</p>"
;
08.
echo
"<p>Ini isi halaman 1. Ini isi halaman 1</p>"
;
09.
echo
"<p><a href=\"logout.php\">Logout</a></p>"
;
10.
11.
?>
01.
<?php
02.
03.
include
"cek.php"
;
04.
05.
echo
"<h1>Ini Halaman 2</h1>"
;
06.
echo
"<p><a href=\"hal1.php\">Menu 1</a> | <a href=\"hal2.php\">Menu 2</a></p>"
;
07.
echo
"<p>Ini isi halaman 2. Ini isi halaman 2</p>"
;
08.
echo
"<p>Ini isi halaman 2. Ini isi halaman 2</p>"
;
09.
echo
"<p><a href=\"logout.php\">Logout</a></p>"
;
10.
11.
?>
Oya… jangan lupa membuat script untuk logout. Konsep logout dalam autentifikasi adalah menghapus variabel session untuk username tadi.
logout.php
01.
<?php
02.
03.
session_start();
04.
05.
// menghapus session username
06.
unset(
$_SESSION
[
'username'
]);
07.
08.
echo
"<h1>Anda sudah logout</h1>"
;
09.
10.
?>
Jika Anda ingin source code dari autentifikasi ini, silakan download di bawah ini. Free 100%
Download Source Code
Source : http://blog.rosihanari.net/membuat-autentifikasi-user-di-php/