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.
1. Membuat Database dengan nama “onphpid” 2. Membuat Tabel dengan nama “users” 3. Membuat field-fieldMembuat tabel Tabel jadi Add Memberadd AdminData Admin dan Member di database Jadi ketika login gunakan :
4. Membuat folder dengan nama “login” dan sesuikan dengan gambar struktur direktori berikut
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 $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 |