Membuat hak akses dengan php

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.

baca juga cara mempercantik halaman login dengan bootstrap

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”

Membuat hak akses dengan php

2. Membuat Tabel dengan nama “users”

Membuat hak akses dengan php

3. Membuat field-field

Membuat hak akses dengan php
Membuat tabel

 

Membuat hak akses dengan php
Tabel jadi

 

Membuat hak akses dengan php
Add Member
Membuat hak akses dengan php
add Admin
Membuat hak akses dengan php
Data Admin dan Member di database

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

Membuat hak akses dengan php

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