Form login beda jabatan? yap itulah tutorial pada hari ini dari OnphpID. Dengan fitur tersebut memungkinkan setiap user akan mendapatkan tampilan berbeda. bukan hanya tampilan yang berbeda saja bahkan hingga hak hak menggunakan fitur lainpun dapat dibedakan dan dibatasi sesuai jabatan atau tingkatan.
Pada keseharian OnphpID menyebut Form login Berbeda Jabatan ini dengan sebutan hak akses atau Form Login dengan Multiuser, di mana terdapat pembeda antar masing-masing tingkatan. Hak Akses yang umum adalah “administor” dan “member”,namun dalam beberapa kasus bisa berbeda bergantung kebutuhan misalkan “direktur”, “sekertaris”,”keuangan”,”resepsionis” dan sebagainya.
Tujuan dari pemberian hak akses sendiri adalah untuk mempermudah pekerjaan sekaligus membatasi ruang kerja user bersangkutan. apabila seorang “member” biasa diberikan jabatan atau hak akses yang sama dengan “administrator” bisa jadi member biasa ini dapat mengutak-atik website secara bebas bahkan mendelete admin utama dari web tersebut atau mengambil alih website. berbahaya bukan.
Baca juga Form login sederhana dengan php dan mysqli
Untuk membuat Form login dengan hak akses ini kalian dapat mengikuti langkah-langkah sebagai berikut:
Tutorial multiple insert dengan php ini menggunakan :
– xampp versi 5.6.3
– PHP 5+
– Windows 7
1. Membuat Database dengan nama “onphpid”
2. Membuat Tabel dengan nama “users”
Jadi ketika login gunakan :
Member
username : member
password : member
Admin
username : admin
password : admin
4. Membuat folder dengan nama “login” dan sesuikan dengan gambar struktur direktori berikut
Lebih jauh tentang Struktur Direktori | Folder pada Website
Pada file index.php pada direktori root atau paling depan isi dengan kode berikut:
1 |
<a href="login.php">login</a> |
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 |
<?php session_start(); if( isset($_SESSION['akses']) ) { header('location:'.$_SESSION['akses']); exit(); } $error = ''; if( isset($_SESSION['error']) ) { $error = $_SESSION['error']; // set error unset($_SESSION['error']); } ?> <?php echo $error;?> <h3>Form Login</h3> <form action="check-login.php" method="post"> username : <br/> <input type="text" name="usernamemu" /> <br> password : <br/> <input type="password" name="passwordmu" /> <br> <button>Login</button> </form> |
config.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 |
<?php /** * Nama File : Config.php * File Ini berisi beberapa data penting seperti * Data koneksi ke database * Secret Kode * dan data lain yang nantinya akan digunakan secara terus-menerus */ # rubahlah sesuai alamat website kamu $url = 'http://localhost/login'; # host untuk database, biasanya 'localhost' $dbhost = 'localhost'; # username untuk mengakses database, jika dilokal biasanya 'root' $dbuser = 'root'; # password untuk mengakses databae, jika dilokal biasanya kosong $dbpass = ''; # nama database yang akan digunakan $dbname = 'onphpid'; # koneksi Database $koneksi = new mysqli($dbhost,$dbuser,$dbpass,$dbname); # Check koneksi, berhasil atau tidak if( $koneksi->connect_error ) { die( 'Oops!! Koneksi Gagal : '. $koneksi->connect_error ); } $url = rtrim($url,'/'); ?> |
check-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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
<?php session_start(); # check apakah ada akse post dari halaman login?, jika tidak kembali kehalaman depan if( !isset($_POST['usernamemu']) ) { header('location:index.php'); exit(); } # set nilai default dari error, $error = ''; require ( 'config.php' ); $username = trim( $_POST['usernamemu'] ); $password = trim( $_POST['passwordmu'] ); if( strlen($username) < 2 ) { # jika ada error dari kolom username yang kosong $error = 'Username tidak boleh kosong'; }else if( strlen($password) < 2 ) { # jika ada error dari kolom password yang kosong $error = 'Password Tidak boleh kosong'; }else{ # Escape String, ubah semua karakter ke bentuk string $username = $koneksi->escape_string($username); $password = $koneksi->escape_string($password); # hash dengan md5 $password = md5($password); # SQL command untuk memilih data berdasarkan parameter $username dan $password yang # di inputkan $sql = "SELECT nama, hak_akses FROM users WHERE username='$username' AND password='$password' LIMIT 1"; # melakukan perintah $query = $koneksi->query($sql); # check query if( !$query ) { die( 'Oops!! Database gagal '. $koneksi->error ); } # check hasil perintah if( $query->num_rows == 1 ) { # jika data yang dimaksud ada # maka ditampilkan $row =$query->fetch_assoc(); # data nama disimpan di session browser $_SESSION['nama_user'] = $row['nama']; $_SESSION['akses'] = $row['hak_akses']; if( $row['hak_akses'] == 'admin') { # data hak Admin di set $_SESSION['saya_admin']= 'TRUE'; } # menuju halaman sesuai hak akses header('location:'.$url.'/'.$_SESSION['akses'].'/'); exit(); }else{ # jika data yang dimaksud tidak ada $error = 'Username dan Password Tidak ditemukan'; } } if( !empty($error) ) { # simpan error pada session $_SESSION['error'] = $error; header('location:'.$url.'/login.php'); exit(); } ?> |
logout.php
1 2 3 4 5 |
<?php session_start(); session_destroy(); header('location:login.php'); ?> |
Pada file index.php di folder admin
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php session_start(); if( !isset($_SESSION['saya_admin']) ) { header('location:./../'.$_SESSION['akses']); exit(); } $nama = ( isset($_SESSION['nama_user']) ) ? $_SESSION['nama_user'] : ''; ?> <h1>Halaman Admin <span style="color:red"><?php echo $nama;?></span></h1> <a href="./../logout.php">Logout</a> |
Pada file index.php di folder member
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php session_start(); if( !isset($_SESSION['nama_user']) ) { header('location:./../'.$_SESSION['akses']); exit(); }else{ $nama = $_SESSION['nama_user']; } ?> <h1>Halaman Member <span style="color:red"><?php echo $nama;?></span></h1> <a href="./../logout.php">Logout</a> |
PENJELASAN
Pada perintah SQL OnphpID tidak menggunakan “*” bintang melainkan menulikan dua nama field “nama” dan “hak_akses” karena di sini kita hanya akan mengambil dua value dari tabel “users” saja dan menambahkan LIMIT 1 hal ini bertujuan untuk mengoptimalkan query SQL
$error dimaksudkan untuk membuat laporan error yang terjadi, error disini adalah handling pada login sistem seperti kolom harus diisi, username dan password salah atau tidak ada. kemudian $error ini akan disimpan pada $_SESSION, cara menggunakan $_SESSION ini adalah dengan meletakkan fungsi php session_start() pada baris teratas setelah <?php
session_destroy(); adalah fungsi untuk menghapus semua $_SESSION yang sudah kita buat.
unset(); adalah fungsi untuk menghapus variabel pada kode di atas unset() digunakan untuk menghapus $_SESSION[‘error’];
TAMBAHAN
form login dengan hak akses ini masih terlalu sederhana meskipun sudah menyelesaikan permasalahan perbedaan jabatan sesuai dengan harapan. Alangkah lebih baik jika kalian terus berusaha untuk mengembangkannya.
Kode diatas telah diuji sebelum dipublish oleh OnphpID, namun tidak menutup kemungkinan terjadi error di dalam kode tersebut.
code lengkap bisa diunduh disini
REFERENSI
PHP fungsi unset()
Koneksi Database dengan MySQLi