Untuk
dapat mengikuti tutorial kali ini, silahkan Anda download dulu file
sourcefiles yang saya sertakan untuk tutorial ini. Ini karena ada
beberapa file yang saya sertakan sebagai alat bantu dalam tutorial kali
ini.Â
Jenis user: Admin, Registered User, Guest (guest adalah user yang tidak terdaftar)
Siapa saja dapat mendaftar / membuat user baru tanpa harus login terlebih dahulu.
Admin yang dapat mengubah hak akses semua user, merubah data user lain, dan menghapus user lain.
Registered User dapat melihat daftar semua user tanpa dapat merubah maupun menghapus user lain.
Registerd User dapat merubah data pribadinya.
Untuk dapat melihat data user (data pribadi maupun data semua user), user harus login terlebih dahulu.
Materi Dasar
Sebelum dilanjutkan ke tutorial, kita pelajari dulu logika dasar untuk hak akses.
Logika untuk hak akses tidaklah rumit,
hanya dengan logika if sederhana. Kita asumsikan misalkan ada 3 jenis
user seperti dalam tutorial kali ini (admin, member, guest) dalam sebuah
aplikasi. Untuk dapat mengakses halaman member, user harus terdaftar
dan login terlebih dahulu. Kemudian user yang login ini harus dapat
dikenali aplikasi apakah ia berstatus sebagai admin atau bukan. Hal ini dikarenakan fungsionalitas aplikasi tidak sama untuk level user yang berbeda. Misalkan: admin boleh menghapus user lain sedangkan user biasa tidak.
Maka logika dasar dari kasus ini adalah seperti berikut:
1
2
3
if($userLevel=='admin'){
echo"<a href='delete.php'?id=$id>Delete</a>";
}
Kode diatas berarti bahwa jika user memiliki hak akses sebagai admin, maka link untuk delete akan ditampilkan, sedangkan jika tidak maka link delete tidak akan ditampilkan. Simpel banget kan… ^_^
Dalam tutorial kali ini, hak akses (role)Â disimpan
didalam session untuk kemudian dapat kita panggil lagi pada halaman
lainnya untuk dilakukan pengecekan. Untuk melakukan pengecekan apakah
user yang login memiliki role sebagai admin atau tidak, kode program nya akan terlihat seperti berikut.
1
2
3
if($_SESSION['role']=='admin'){
// kode lainnya
}
Kemudian kode tersebut kita sisipkan pada bagian yang hanya boleh diakses oleh user yang memiliki role sebagai admin.
Jadi, jika ada beberapa menu ataupun
fungsionalitas yang hanya boleh digunakan oleh user dengan hak akses
tertentu, cukup gunakan logika dasar ini. Jika kebutuhan aplikasi Anda
lebih kompleks dari ini, maka tinggal disesuaikan dan dikembangkan
sesuai dengan kebutuhan.
Langkah 1 – Struktur Folder
Buatlah folder dengan nama hak_akses pada C:xampphtdocs. Kemudian buat lagi dua folder dengan nama css dan images didalam folder hak_akses.
Kemudian copy-kan file .css dari file yang sudah didownload kedalam folder css, dan file background.jpg kedalam folder images.
File-file .css ini nantinya akan kita gunakan sebagai alat bantu untuk mempercantik tampilan. Untuk menggunakan file-file .css ini cukup dengan menambahkan baris kode seperti berikut.
Buat database dengan nama tutorial_3. Kemudian buat tabel dengan nama users dengan data sebagai berikut.
Fieldname
Datatype
id_user
int(4), PRIMARY, AUTO INCREMENT
username
varchar(20), UNIQUE
password
varchar(300)
email
varchar(100)
fullname
varchar(100)
role
enum(‘admin’, ‘member’)
Kemudian buat satu user sebagai
administrator dengan menjalankan kode berikut pada SQL query (sesuaikan
dengan DBMS yang Anda gunakan) agar kita dapat login.
1
insert into users values('','admin','admin','admin@admin.com','Administrator','admin');
Langkah 3 – File Konfigurasi
Seperti biasa, sebelum membuat aplikasi
lebih jauh, kita buat terlebih dulu file konfigurasi untuk koneksi ke
server. Ketikkan kode berikut dan simpan dalam folder hak_akses dengan nama config.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// host yang digunakan
$host='localhost';
// username untuk login ke hosthosting
$user='root';
// jika menggunakan PC sendiri sebagai host,
// secara default password dikosongkan
$pass='';
// isikan nama database sesuai database yang akan digunakan
Pada baris ke-7 kita lakukan pengecekan apakah user sudah login atau belum dengan kode if (isset($_SESSION['username']) || !empty($_SESSION['username'])). Jika sudah login, maka variabel $logged_in di set menjadi true. Variabel ini kita gunakan untuk pengecekan lagi nantinya.
Pada baris ke-57 kita lakukan pengecekan terhadap nilai dari variabel $logged_in dengan kode if ($logged_in).
Jika variabel ini bernilai true (yang berarti user sudah login), maka
tampilkan link untuk melihat data user. Sedangkan jika bernilai false (yang berarti user belum login), maka tampilkan link menuju halaman login.
Selanjutnya, buat file baru dan ketikkan kode berikut ini. Setelah selesai simpan dengan nama insert.php.
$role='member';// variabel untuk settingan default level yang mendaftar
// simpan data ke database
$query=mysql_query("insert into users values('', '$username', '$password', '$email', '$fullname', '$role')");
if($query){
// jika berhasil menyimpan
header('location: index.php?msg=success');
}else{
// jika gagal menyimpan
header('location: index.php?msg=failed');
}
?>
Setelah selesai, coba buka browser dan ketikkan localhost/hal_akses/register.php. Hasilnya akan terlihat seperti gambar dibawah. Cobalah untuk menambahkan beberapa user baru.
Saat ini, kita masih belum dapat login
ke aplikasi (iyalah, login nya belum dibikin :D). Selanjutnya kita buat
halaman untuk login.
Langkah 5 – Login
Ketikkan kode berikut dan simpan dengan nama login.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
session_start();
include_once('config.php');
if(!empty($_SESSION['username'])){
header('location:index.php');
}
?>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Berikutnya kita buat file untuk autentikasi user yang login. Ketikkan kode berikut dan simpan dengan nama auth.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
include('config.php');
session_start();
// terima data dari form login
$username=$_POST['username'];
$password=$_POST['password'];
// untuk mencegah sql injection
// kita gunakan mysql_real_escape_string
$username=mysql_real_escape_string($username);
$password=mysql_real_escape_string($password);
// cek data yang dikirim, apakah kosong atau tidak
if(empty($username)&&empty($password)){
// kalau username dan password kosong
header('location:login.php?error=1');
break;
}elseif(empty($username)){
// kalau username saja yang kosong
header('location:login.php?error=2');
break;
}elseif(empty($password)){
// kalau password saja yang kosong
header('location:login.php?error=3');
break;
}
$query=mysql_query("select * from users where username='$username' and password='$password'");
$data=mysql_fetch_array($query);
if(mysql_num_rows($query)==1){
// kalau username dan password sudah terdaftar di database
// buat session dengan nama username dengan isi nama user yang login
$_SESSION['username']=$username;
$_SESSION['role']=$data['role'];
// redirect ke halaman users [menampilkan semua users]
header('location:users.php');
}else{
// kalau username ataupun password tidak terdaftar di database
header('location:login.php?error=4');
}
?>
Setelah selesai, coba buka browser dan ketikkan localhost/hal_akses/login.php. Hasilnya akan terlihat seperti gambar dibawah.
Berikutnya, kita buat sebuah file untuk
melakukan pengecekan apakah user sudah login atau belum. Jika user
sudah login, maka user tidak perlu login lagi. Buat dokumen baru dan
ketikkan kode berikut. Setelah selesai, simpan dengan nama cek-login.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
session_start();
$logged_in=false;
//jika session username belum dibuat, atau session username kosong
Perhatikan baris ke-70 terdapat kode if ($_SESSION['role'] == 'admin').
Pada baris ini kita lakukan pengecekan hak akses apakah user yang login
memiliki hak akses sebagai admin atau tidak. Jika user memiliki hak
akses sebagai admin, maka tampilkan menu edit dan delete. Jika tidak memiliki hak akses sebagai admin, maka menu edit dan delete tidak boleh ditampilkan.
Cobalah lihat hasilnya pada browser dengan membuka halaman localhost/hak_akses/users.php. Hasilnya akan terlihat seperti gambar berikut.
Selanjutnya kita buat halaman edit data. Buat dokumen baru dan ketikkan kode berikut, kemudian simpan dengan nama edit.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
session_start();
include_once('config.php');
include_once('cek-login.php');
if($_SESSION['role']!='admin'){
header('location: users.php');
}
?>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Perhatikan pada baris ke-63, kembali kita lakukan pengecekan hak akses apakah user memiliki role sebagai admin atau tidak dengan kode if ($_SESSION['role'] == 'admin'). Jika user memiliki role sebagai admin, maka user boleh merubah role user lain.
Agar hasil edit-an dapat disimpan, buat dokumen baru dan ketikkan kode berikut. Kemudian simpan dengan nama update.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
include('config.php');
//tangkap data dari form
$id=$_POST['user_id'];
$password=$_POST['password'];
$fullname=$_POST['fullname'];
$email=$_POST['email'];
$role=$_POST['role'];
//update data di database sesuai user_id
$query=mysql_query("update users set password='$password', fullname='$fullname', email='$email', role='$role' where id_user='$id'")ordie(mysql_error());
if($query){
header('location:users.php?msg=success');
}else{
header('location:users.php?msg=failed');
}
?>
Sampai disini, kita sudah dapat meng-edit data. Untuk melihat hasilnya, coba buka halaman localhost/hak_akses/users.php, kemudian edit-lah salah satu data yang ada.
Untuk dapat menghapus data, buat dokumen baru dan ketikkan kode berikut. Simpan dengan nama delete.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
include('config.php');
$uid=$_GET['uid'];
$query=mysql_query("delete from users where id_user='$uid'")ordie(mysql_error());
if($query){
header('location:users.php?msg=success');
}else{
header('location:users.php?msg=failed');
}
?>
Kesimpulan
Hak Akses atau role tidaklah sulit untuk dibuat. Cukup dengan menggunakan logika if sederhana
kita dapat membuat hak akses. Jika ada kesulitan ataupun jika ada yang
kurang jelas, silahkan tanyakan pada kotak komentar dibawah.
good.. i like it!!
BalasHapus