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 “administrator” 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
Step by Step Membuat Form Login Multi User Level
1. Membuat Database dengan nama “onphpid”
2. Membuat Tabel dengan nama “users”
3. Membuat field-field

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:
<a href="login.php">login</a>
login.php
<?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
<?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
<?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
<?php
session_start();
session_destroy();
header('location:login.php');
?>
Pada file index.php di folder admin
<?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
<?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
mas… untuk error reportingnya kok gak jalan ya???
Thanks ya mas .. Sangat Membantu saya .. pokok nya Terimakasih …. (y)