15 October 2017
M Fikri Setiadi
Codeigniter
31,683 kali di baca
68 Komentar
Pada sistem informasi modern, login merupakan cara untuk mengamankan data dari pihak yang
tidak berwenang.
Login juga merupakan cara untuk membagi hak akses halaman (page) kepada pengguna tertentu.
Didalam sistem login, terdapat session atau token yang digunakan untuk melacak aksi dari
pengguna (user). Dengan demikian, hak akses user akan dengan mudah dikelompokkan.
Membuat sistem login dengan codeigniter, terkadang merupakan hal yang sulit bagi sebagai
besar pemula.
Lebih sulit lagi jika multilevel yang dimaksud berasal dari table yang berbeda.
Seperti yang saya alami dulunya, membutuhkan waktu yang lama bagi saya untuk dapat
membuat sistem login ini agar sesuai dengan yang diharapkan.
Bagaimana meng-set session, mengatur akses untuk setiap function, dan mengatur akses pada
menu.
Saya coba googling, akan tetapi tidak ada yang memposting artikel yang cukup lengkap untuk
membuat sistem login ini.
Apalagi login multilevel dari tabel yang berbeda seperti yang saya uraikan diatas.
Saya yakin anda juga mengalami hal yang sama dengan saya.
Setelah berjuang cukup lama, akhirnya saya bisa membuat sistem login yang menurut saya sudah
cukup sempurna.
Untuk menutupi kegelisahan anda, pada kesempatan kali ini saya akan sharing secara detail
bagaimana membuat sistem login multilevel dari tabel yang berbeda menggunakan framework
php yaitu codeigniter.
Pada kasus kali ini, saya akan uraikan bagaimana membuat sistem login multilevel dari table
yang berbeda dengan codeigniter, bagaimana mengatur hak akses pada menu, dan mengatur hak
akses pada setiap function.
Studi kasus yang saya gunakan pada artikel kali ini adalah, login sebagai dosen dan mahasiswa.
Hak akses sebagai dosen saya bagi lagi menjadi dua level, yaitu ada dosen yang berberan sebagi
admin dan ada yang akses loginnya hanya sebagi dosen biasa.
Untuk dosen yang memiliki hak akses sebagai admin diberikan level angka 1=Admin, dosen
biasa angka 2=dosen, dan level login mahasiswa adalah 3=mahasiswa.
Jika anda masih bingung dengan penjelasan diatas, terus lanjutkan karena anda akan segera
mengerti setelah mencobanya sendiri nantinya.
Ok, berikut cara bagaimana membuat login multilevel dari table yang berbeda dengan
codeigniter.
PERSIAPAN
Sebelum proses pembuatan, ada tahap yang tidak boleh anda lewatkan begitu saja. Yaitu tahap
persiapan.
Berikut listnya:
Codeiginter, jika anda belum memilikinya silahkan download di situs resminya
www.codeigniter.com
Jquery, Jika anda belum memilikinya, silahkan download di situs resminya www.jquery.com
Bootstrap, bootstrap ini berfungsi untuk mempercantik tampilan. Jika anda belum memilikinya,
silahkan download di situs resminya www.getbootstrap.com
Berikutnya, yang perlu anda lakukan adalah pembuatan database dan struktur table.
Pada query diatas, anda akan mendapatkan sebuah database dengan nama db_login.
Table, buat dua table yaitu table dosen dan tabel mahasiswa.
Insert juga data pada tabel mahasiswa dengan mengeksekusi query berikut:
1INSERT INTO mahasiswa (nim,nama,pass) VALUES
2('1210158','M Fikri',MD5('123456')),
3('1210159','Keysha',MD5('qwerty'));
Untuk menginstall codeigniter, silahkan extract codeigniter yang sudah di download sebelumnya
ke folder www (jika menggunakan wampserver) atau htdocs (jika menggunakan XAMPP).
Kemudian rename (ganti nama) project codeigniter anda sesuai dengan project Anda. Disini saya
memberi nama ci_login.
Setelah di extract, buat folder assets sejajar dengan folder application dan system, kemudian
sertakan file bootstrap dan jquery didalam folder assets. Sehingga terlihat struktur project kita
seperti berikut:
Pada gambar diatas dapat dilihat, bahwa didalam folder assets terdapat folder css dan js.
Didalam folder css, terdapat file bootstrap.css dan didalam folder js, terdapat file bootstrap.js,
bootstrap.min.js dan jquery.js.
1$config['base_url'] = 'http://localhost/ci_login/';
1
2
3 $active_group = 'default';
$query_builder = TRUE;
4
5 $db['default'] = array(
6 'dsn' => '',
7 'hostname' => 'localhost',
8 'username' => 'root',
9 'password' => '',
10 'database' => 'db_login', //sesuaikan dengan database anda!
'dbdriver' => 'mysqli',
11 'dbprefix' => '',
12 'pconnect' => FALSE,
13 'db_debug' => (ENVIRONMENT !== 'production'),
14 'cache_on' => FALSE,
15 'cachedir' => '',
'char_set' => 'utf8',
16 'dbcollat' => 'utf8_general_ci',
17 'swap_pre' => '',
18 'encrypt' => FALSE,
19 'compress' => FALSE,
20 'stricton' => FALSE,
'failover' => array(),
21 'save_queries' => TRUE
22);
23
24
1 <?php
class Login_model extends CI_Model{
2
//cek nip dan password dosen
3 function auth_dosen($username,$password){
4 $query=$this->db->query("SELECT * FROM dosen WHERE nip='$username'
5 AND pass=MD5('$password') LIMIT 1");
6 return $query;
}
7
8
9
1
0
//cek nim dan password mahasiswa
1 function auth_mahasiswa($username,$password){
1 $query=$this->db->query("SELECT * FROM mahasiswa WHERE
1 nim='$username' AND pass=MD5('$password') LIMIT 1");
2 return $query;
}
1
3 }
1
4
1
5
1 <!DOCTYPE html>
<html>
2
<head>
3 <title>Sign In</title>
4 <meta name="viewport" content="width=device-width, initial-scale=1.0">
5 <meta name="description" content="Produk By Mfikri.com">
6 <meta name="author" content="M Fikri Setiadi">
<!-- Bootstrap -->
7 <link href="<?php echo base_url().'assets/css/bootstrap.css'?>"
8 rel="stylesheet">
9 </head>
1 <body>
0
1 <div class="container">
<div class="col-md-4 col-md-offset-4">
1 <form class="form-signin" action="<?php echo
1 base_url().'index.php/login/auth'?>" method="post">
2 <h2 class="form-signin-heading">Please sign in</h2>
1 <?php echo $this->session->flashdata('msg');?>
<label for="username" class="sr-only">Username</label>
3 <input type="text" id="username" name="username" class="form-
1
control" placeholder="Username" required autofocus>
4 <label for="password" class="sr-only">Password</label>
1 <input type="password" id="password" name="password" class="form-
5 control" placeholder="Password" required>
1 <div class="checkbox">
6 <label>
<input type="checkbox" value="remember-me"> Remember me
1 </label>
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
</div>
5 <button class="btn btn-lg btn-primary btn-block"
2 type="submit">Sign in</button>
6 </form>
2 </div>
</div> <!-- /container -->
7
2
8
<!-- jQuery-->
2 <script src="<?php echo base_url().'assets/js/jquery.js'?>"></script>
9 <!-- Bootsrap -->
3 <script src="<?php echo
0 base_url().'assets/js/bootstrap.min.js'?>"></script>
3
</body>
1 </html>
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
View diatas akan membuat sebuah form dengan input username dan password.
1 <?php
class Login extends CI_Controller{
2
function __construct(){
3 parent::__construct();
4 $this->load->model('login_model');
5 }
6
7 function index(){
$this->load->view('v_login');
8 }
9
1 function auth(){
0 $username=htmlspecialchars($this->input-
1 >post('username',TRUE),ENT_QUOTES);
1 $password=htmlspecialchars($this->input-
>post('password',TRUE),ENT_QUOTES);
1
2 $cek_dosen=$this->login_model->auth_dosen($username,$password);
1
3 if($cek_dosen->num_rows() > 0){ //jika login sebagai dosen
1 $data=$cek_dosen->row_array();
4 $this->session->set_userdata('masuk',TRUE);
if($data['level']=='1'){ //Akses admin
1 $this->session->set_userdata('akses','1');
5 $this->session->set_userdata('ses_id',$data['nip']);
1 $this->session->set_userdata('ses_nama',$data['nama']);
6 redirect('page');
1
7 }else{ //akses dosen
$this->session->set_userdata('akses','2');
1 $this->session->set_userdata('ses_id',
8 $data['nip']);
1 $this->session->set_userdata('ses_nama',$data['nama']);
9 redirect('page');
2 }
0
}else{ //jika login sebagai mahasiswa
2 $cek_mahasiswa=$this->login_model-
1 >auth_mahasiswa($username,$password);
2 if($cek_mahasiswa->num_rows() > 0){
2 $data=$cek_mahasiswa->row_array();
$this->session->set_userdata('masuk',TRUE);
2 $this->session->set_userdata('akses','3');
3 $this->session->set_userdata('ses_id',
2 $data['nim']);
$this->session->set_userdata('ses_nama',
4 $data['nama']);
redirect('page');
2
}else{ // jika username dan password tidak ditemukan
5 atau salah
2 $url=base_url();
6 echo $this->session-
2 >set_flashdata('msg','Username Atau Password Salah');
redirect($url);
7 }
2 }
8
2 }
9
3 function logout(){
0 $this->session->sess_destroy();
$url=base_url('');
3 redirect($url);
1 }
3
2 }
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
Controller page ini berfungsi untuk mengatur bagaimana pembagian hak akses dari setiap
function.
1 <?php
class Page extends CI_Controller{
2
function __construct(){
3 parent::__construct();
4 //validasi jika user belum login
5 if($this->session->userdata('masuk') != TRUE){
6 $url=base_url();
redirect($url);
7 }
8 }
9
1 function index(){
0 $this->load->view('v_dashboard');
1 }
1
function data_mahasiswa(){
1 // function ini hanya boleh diakses oleh admin dan dosen
if($this->session->userdata('akses')=='1' || $this->session-
2
>userdata('akses')=='2'){
1 $this->load->view('v_mahasiswa');
3 }else{
1 echo "Anda tidak berhak mengakses halaman ini";
4 }
1
}
5
1
function input_nilai(){
6 // function ini hanya boleh diakses oleh admin dan dosen
1 if($this->session->userdata('akses')=='1' || $this->session-
7 >userdata('akses')=='2'){
1 $this->load->view('v_input_nilai');
}else{
8 echo "Anda tidak berhak mengakses halaman ini";
1 }
9 }
2
0 function krs(){
// function ini hanya boleh diakses oleh admin dan mahasiswa
2 if($this->session->userdata('akses')=='1' || $this->session-
1 >userdata('akses')=='3'){
2 $this->load->view('v_krs');
2 }else{
2 echo "Anda tidak berhak mengakses halaman ini";
}
3 }
2 function lhs(){
4 // function ini hanya boleh diakses oleh admin dan mahasiswa
2 if($this->session->userdata('akses')=='1' || $this->session-
5 >userdata('akses')=='3'){
$this->load->view('v_lhs');
2 }else{
6 echo "Anda tidak berhak mengakses halaman ini";
2 }
7 }
}
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
View menu ini berfungsi untuk melihat bagaimana cara pembagian hak akses pada setiap menu.
View ini berfungsi untuk halaman dashboard dari setiap user (pengguna).
1 <!DOCTYPE html>
<html>
2
<head>
3 <title>Masuk</title>
4 <meta name="viewport" content="width=device-width, initial-scale=1.0">
5 <meta name="description" content="Produk By Mfikri.com">
6 <meta name="author" content="M Fikri Setiadi">
<!-- Bootstrap -->
7 <link href="<?php echo base_url().'assets/css/bootstrap.css'?>"
8 rel="stylesheet">
9
1
0 </head>
1 <body>
1
1 <div class="container">
<?php $this->load->view('menu');?> <!--Include menu-->
2 <div class="container">
1 <div class="row">
3 <h2>Welcome back <?php echo $this->session->userdata('ses_nama');?
1 ></h2>
</div>
4 </div>
1 </div> <!-- /container -->
5
1
6 <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
1 <script src="<?php echo base_url().'assets/js/jquery.js'?>"></script>
7 <!-- Include all compiled plugins (below), or include individual files
as needed -->
1 <script src="<?php echo
8 base_url().'assets/js/bootstrap.min.js'?>"></script>
1
9 </body>
2 </html>
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
View ini berfungsi untuk menampilkan data mahasiswa. View ini hanya boleh diakses oleh
admin dan dosen saja.
1 <!DOCTYPE html>
<html>
2
<head>
3 <title>Data Mahasiswa</title>
4 <meta name="viewport" content="width=device-width, initial-scale=1.0">
5 <meta name="description" content="Produk By Mfikri.com">
6 <meta name="author" content="M Fikri Setiadi">
<!-- Bootstrap -->
7 <link href="<?php echo base_url().'assets/css/bootstrap.css'?>"
8 rel="stylesheet">
9
1
0 </head>
1 <body>
1
1 <div class="container">
<?php $this->load->view('menu');?> <!--Include menu-->
2 <div class="col-md-12">
1 <div class="row">
3 <h2>Data Mahasiswa</h2>
<table class="table table-striped table-bordered">
1
<thead>
4 <tr>
1 <th>NIM</th>
5 <th>Nama</th>
1 <th>Prodi</th>
</tr>
6 </thead>
1 <tbody>
7 <tr>
1 <td>1210158</td>
8 <td>M Fikri</td>
<td>Sistem Informasi</td>
1 </tr>
9 <tr>
2 <td>1210157</td>
0 <td>Joko</td>
<td>Sistem Komputer</td>
2 </tr>
1
2 </tbody>
2 </table>
2 </div>
3 </div>
</div> <!-- /container -->
2
4
2
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
5 <script src="<?php echo base_url().'assets/js/jquery.js'?>"></script>
2 <!-- Include all compiled plugins (below), or include individual files
6 as needed -->
2 <script src="<?php echo
base_url().'assets/js/bootstrap.min.js'?>"></script>
7
2 </body>
8 </html>
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
View ini berfungsi untuk input nilai mahasiswa dan hanya boleh diakses oleh admin dan dosen
saja.
1 <!DOCTYPE html>
<html>
2 <head>
<title>Input Nilai</title>
3
<meta name="viewport" content="width=device-width, initial-scale=1.0">
4 <meta name="description" content="Produk By Mfikri.com">
5 <meta name="author" content="M Fikri Setiadi">
6 <!-- Bootstrap -->
7 <link href="<?php echo base_url().'assets/css/bootstrap.css'?>"
rel="stylesheet">
8 </head>
9 <body>
1
0 <div class="container">
1 <?php $this->load->view('menu');?> <!--Include menu-->
1 <div class="col-md-12">
<div class="row">
1 <h2>Laporan Hasil Studi</h2>
2 <table class="table table-striped table-bordered">
1 <thead>
3 <tr>
<th>Kode</th>
1 <th>Mata Kuliah</th>
4 <th>Sks</th>
1 <th>Nilai</th>
5 </tr>
1 </thead>
<tbody>
6 <tr>
1 <td>MK0001</td>
7 <td>Bahasa Pemrograman I</td>
1 <td>2</td>
8 <td><button class="btn btn-info btn-xs">Input
Nilai</button></td>
1 </tr>
9 <tr>
2 <td>MK0002</td>
0 <td>Web I</td>
<td>2</td>
2 <td><button class="btn btn-info btn-xs">Input
1 Nilai</button></td>
2 </tr>
2 <tr>
2 <td>MK0003</td>
<td>Algoritma II</td>
3 <td>2</td>
2 <td><button class="btn btn-info btn-xs">Input
4 Nilai</button></td>
2 </tr>
<tr>
5
<td>MK0004</td>
2 <td>Bahasa Inggris I</td>
6 <td>2</td>
2 <td><button class="btn btn-info btn-xs">Input
7 Nilai</button></td>
</tr>
2 </tbody>
8
2 </table>
</div>
9
</div>
3 </div> <!-- /container -->
0
3
1 <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
3 <script src="<?php echo base_url().'assets/js/jquery.js'?>"></script>
2 <!-- Include all compiled plugins (below), or include individual files
as needed -->
3 <script src="<?php echo
3 base_url().'assets/js/bootstrap.min.js'?>"></script>
3
4 </body>
3 </html>
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
View ini berfungsi untuk menampilkan krs mahasiswa dan hanya boleh diakses oleh admin dan
mahasiswa.
1 <!DOCTYPE html>
<html>
2
<head>
3 <title>KRS</title>
4 <meta name="viewport" content="width=device-width, initial-scale=1.0">
5 <meta name="description" content="Produk By Mfikri.com">
6 <meta name="author" content="M Fikri Setiadi">
<!-- Bootstrap -->
7 <link href="<?php echo base_url().'assets/css/bootstrap.css'?>"
rel="stylesheet">
8
9
1
</head>
0 <body>
1
1 <div class="container">
1 <?php $this->load->view('menu');?> <!--Include menu-->
2 <div class="col-md-12">
<div class="row">
1 <h2>Kartu Rencana Studi</h2>
3 <table class="table table-striped table-bordered">
1 <thead>
4 <tr>
1 <th>Kode</th>
<th>Mata Kuliah</th>
5 <th>Sks</th>
1 </tr>
6 </thead>
1 <tbody>
<tr>
7 <td>MK0001</td>
1 <td>Bahasa Pemrograman I</td>
8 <td>2</td>
1 </tr>
9 <tr>
<td>MK0002</td>
2 <td>Web I</td>
0 <td>2</td>
2 </tr>
1 <tr>
2 <td>MK0003</td>
<td>Algoritma II</td>
2 <td>2</td>
2 </tr>
3 <tr>
2 <td>MK0004</td>
<td>Bahasa Inggris I</td>
4 <td>2</td>
2 </tr>
5 </tbody>
2 </table>
6 </div>
</div>
2 </div> <!-- /container -->
7
2
8 <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
2 <script src="<?php echo base_url().'assets/js/jquery.js'?>"></script>
9 <!-- Include all compiled plugins (below), or include individual files
as needed -->
3
<script src="<?php echo
0 base_url().'assets/js/bootstrap.min.js'?>"></script>
3
1 </body>
3 </html>
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
View ini berfungsi untuk menampilkan data nilai mahasiswa dan hanya boleh diakses oleh
admin dan mahasiswa.
1 <!DOCTYPE html>
<html>
2
<head>
3 <title>LHS</title>
4 <meta name="viewport" content="width=device-width, initial-scale=1.0">
5 <meta name="description" content="Produk By Mfikri.com">
6 <meta name="author" content="M Fikri Setiadi">
<!-- Bootstrap -->
7 <link href="<?php echo base_url().'assets/css/bootstrap.css'?>"
8 rel="stylesheet">
9
1
0 </head>
1 <body>
1
1 <div class="container">
<?php $this->load->view('menu');?> <!--Include menu-->
2 <div class="col-md-12">
1 <div class="row">
3 <h2>Laporan Hasil Studi</h2>
1 <table class="table table-striped table-bordered">
<thead>
4 <tr>
1 <th>Kode</th>
<th>Mata Kuliah</th>
5
<th>Sks</th>
1 <th>Nilai</th>
6 </tr>
1 </thead>
7 <tbody>
<tr>
1 <td>MK0001</td>
8 <td>Bahasa Pemrograman I</td>
1 <td>2</td>
9 <td>A</td>
2 </tr>
<tr>
0 <td>MK0002</td>
2 <td>Web I</td>
1 <td>2</td>
2 <td>A</td>
</tr>
2 <tr>
2 <td>MK0003</td>
3 <td>Algoritma II</td>
2 <td>2</td>
4 <td>A</td>
</tr>
2 <tr>
5 <td>MK0004</td>
2 <td>Bahasa Inggris I</td>
6 <td>2</td>
2 <td>A</td>
</tr>
7 </tbody>
2 <tfoot>
8 <tr>
2 <th colspan="3">Index Prestasi</th>
<th>4</th>
9 </tr>
3 </tfoot>
0 </table>
3 </div>
1 </div>
</div> <!-- /container -->
3
2
3 <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
3 <script src="<?php echo base_url().'assets/js/jquery.js'?>"></script>
3 <!-- Include all compiled plugins (below), or include individual files
4 as needed -->
<script src="<?php echo
3
base_url().'assets/js/bootstrap.min.js'?>"></script>
5
3 </body>
6 </html>
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
6
7
6
8
6
9
7
0
7
1
7
2
7
3
#14. Selesai
20