Sebuah website yang memiliki multiple admin atau mungkin admin dan user tentunya membutuhkan implementasi pemrograman menggunakan teknik pelevelan. Misalnya dalam suatu aplikasi web terdapat dua jenis admin, diantaranya :
- Admin utama (akses ke seluruh administrasi situs web)
- User registrasi (akses ke beberapa fitur situs)
Dari dua jenis admin tersebut, perbedaan mendasar terletak pada previlige (hak akses) terhadap halaman administrasi website. Awal mula saya mencari pemecahan metode pelevelan di internet, namun tidak menemukan cara yang sederhana. Sehingga suatu waktu saya berhasil memecahkan sistem pelevelan secara mudah menggunakan PHP MySQL.
Disini saya akan mencoba mempraktikan dan menjelaskan secara ringkas metode yang terkadangsaya pakai untuk pembuatan sistem pelevelan website. Berikut adalah langkah-langkahnya :
Persiapan database
Perancangan database yang kita cukup sederhana. Hanya diperlukan satu table bernama “user”. Database bisa anda beri nama apapun, dan menyesuaikan konfigurasi file config.php yang nanti akan kita buat. Misalkan kita disini membuat database bernama “kampus” dan salah satu tabel untuk leveling kita namai “user”. lihat gambar di bawah :
Setelah database “kampus” dan tabel “user” selesai kita buat. Langkah selanjutnya adalah membuat struktur field yang ada di dalam tabel user. Berikut adalah basis struktur field kita :
No | Nama field | Tipe data |
---|---|---|
1 | Username | Varchar(20) |
2 | Password | Varchar(20) |
3 | Level | Varchar |
Selanjutnya kita akan mengisi struktur di atas. Misalnya kita mempunyai dua data, dimana satu data adalah super admin dan satu lagi adalah user umum.
No | Username | Password | Level |
---|---|---|---|
1 | admin | 123456 | admin |
2 | agus | 123456 | user |
Dari isian tersebut, perbedaan mendasar antara admin dan agus adalah isian dari field Level. Dimana admin mempunyai inisial level “admin”. Dan user agus memiliki inisial level “user”.
Buat form sederhana
Nah, database beserta struktur dan isian sudah kita buat. Selanjutnya kita akan merancang dan mengimplementasinya dengan membuat form sederhana menggunakan HTML. Berikut adala source code form yang kita buat :
<form method="post" action="login.php" class="form-horizontal"> <label class="username">Username</label> <input type="text" name="username" placeholder="Username Anda"> <label class="password">Password</label> <input type="password" name="pass" placeholder="Password"> <button type="submit" name="submit" class="btn">Login</button> </form>
Core PHP
Setelah form sederhana selesai Anda buat, selanjutnya kita buat juga file config.php yang berisi konfigurasi database agar terhubung dengan form sistem login yang kita buat. berikut source code-nya :
<?php $host="localhost"; $user="root"; $password=""; $koneksi=mysql_connect($host,$user,$password) or die("Gagal koneksi mas bro..!"); mysql_select_db("kampus"); ?>
And then, selanjutnya kita membuat file login.php yang berisi variabel $_SESSION dan menggunakan fungsi php session_start(), agar data session tersimpan ke browser.
<?php session_start(); include 'config.php'; $username = $_POST['username']; $password = $_POST['pass']; // query untuk mendapatkan record dari username $query = "SELECT * FROM user WHERE username = '$username'"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); // cek kesesuaian password if ($password == $data['password']) { echo "sukses"; // menyimpan username dan level ke dalam session $_SESSION['level'] = $data['level']; $_SESSION['username'] = $data['username']; header('location: admin.php'); } else echo '<h1>Login gagal</h1>'; ?>
Pengkondisian session level admin dan user
Oke, dari source code login.php di atas, kita bisa melihat bahwa header location mengarah ke halaman admin/index.php. Sebenarnya bukan file login.php kita yang menjadi kunci pelevelan ini, tapi pengkondisian utama terletak di halaman admin. Jadi kita akan menerapkan fungsi IF..ELSE dan diletakkan di dalam file admin.php
<?php // memulai session session_start(); error_reporting(0); if (isset($_SESSION['level'])) { // jika level admin if ($_SESSION['level'] == "admin") { } // jika kondisi level user maka akan diarahkan ke halaman lain else if ($_SESSION['level'] == "user") { header('location:user.php'); } } if (!isset($_SESSION['level'])) { header('location:../index.php'); } ?>
Penjelasan source di atas maksudnya:
- jika session level bernilai “admin”, maka admin tetap berada di halaman admin.php,
- dan jika kondisi session level bernilai “user”, maka akan diarahkan ke halaman user.php
- Jadi level user tidak akan bisa mengakses halaman admin.php, karena sudah terkondisikan oleh session dan if..else
Letakkan fungsi php tersebut di bagian atas header file admin.php, sedangkan di header user.php kita bisa mengisikan session yang dikhususkan untuk user. Seperti kode dibawah ini :
error_reporting(0); session_start(); if (isset($_SESSION['level'])) { if ($_SESSION['level'] == "admin") { include 'konten-admin.php'; } else if ($_SESSION['level'] == "user") { include 'konten-user.php'; } }
Selamat mencoba !
numpang nanya kegunaan dari “placeholder” sebenarnya apa? dan sekalian untuk passwordnya kalo di kasih fungsi md5 bisa tidak?
trima kasih
bisa kok diberi md5, tergantung eksperimen dan pengembangan mas rojhieb sendiri. hehe
placeholder hanya alat bantu saja, boleh dihilangkan jika memang ada beberapa problem tertentu.. 🙂
mas tolong upload’in sqlnya dong
dan tolong bua’in cek.phpnya dong misalnya kalo user belum login akan direcedit otomatis ke login.php
username sama passwordnya apa ?
username + password coba lihat di database usernya ada , mas !
Mas kalau script login untuk user gimana yah,, contohnya: data siswa, siswanya ada 1000 siswa, setiap siswa harus punya hak akses data mereka sendiri, yang saya mau tanya bagaimana buat script agar setiap siswa punyak hak akses masing-masing, dan siswa lain tidak bisa mengaksesnya kecuali yang siswa yang punya data itu sendiri, terimKASIH, pa mohon bantuannya,,,,
Silahkan email ke mhmmd.huda@gmail.com bu ! Bisa saya bantu !
mas, maaf saya mau tanya. saya sudah coba source codex, tp pass login hanya halaman admin saja yg muncul. sdgkn untuk user tidak muncul tampilanx. tp tidak ada pesan error. itu dimana yg salah??? terima kasih
Thanks gan, berguna banget 🙂
Jika dari database tabel untuk megetahui admin atau usernya berbeda bagaimana caranya mas???
bisa ditambah field baru untuk role yang hanya bisa diisi dengan admin atau user