Membuat User Multi Login dengan CodeIgniter

CodeigniterAdaw haha liburan tinggal sehari lagi nih, ga kerasa liburan akhir taun udah hampir berakhir.. dan besok kembali lagi kesekolah, arghhh remed fisika & mtk yng bkin pusing ni pala :( yasudah sekarang mending bikin tutorial dulu, daripada pusing dan cuma buang buang waktu.. mending refreshing di depan lepi aja haha :D

Kali ini saya bakal bikin tutorial multi user login dari codeigniter kalo ada yng belum tau codeigniter itu apa, bisa liat liat dulu penjelasannya di tutorial codeigniter kalo udah tau, yo mari lanjut kita ngoding haha B-) Oh iya saya akan membuat multi user login dengan membuat library login sendiri.

Oh Iya BTW Siapin dulu perlengkapannya B-)

  • CodeIgniter (Framework PHP)
  • XAMPP (WebServer)
  • Sublime Text (TextEditor)

Disini saya akan membuat 2 Hak akses yaitu :

  1. Admin
  2. User

Tampilan login
Oke sebelum ngoding pertama-tama kita kenalan dulu dengan yang namanya Library Session

Library yang paling penting dalam prosess login itu adalah Session , sebenarnya PHP sudah menyediakan Fungsi Session , tapi Framework CodeIgniter sudah membungkusnya dengan rapi di Library nya menjadi lebih mudah di keluarkan.

Untuk menampilkan atau memanggil Library Session anda cukup menyisipkan code :

<?php
..
..
$this->load->library('session');

atau bisa memanggil di semua controler dengan menyisipkan code di bawah di /application/config/autoload.php

<?php
..
..
$autoload['libraries'] = array('session');

Udah deh cukup segitu aja tentang librarynya, padahal masih banyak library di code igniter. Tapi utuk kali ini cukup session dulu aja hehe :D ayo kita mulai tutorial nya B-)

Pertama tama kita buat dulu databasenya dengan nama lat_login.

create database lat_login;

kalo udah buat databasenya, mari kita buat table nya dengan nama tb_pengguna.

CREATE TABLE IF NOT EXISTS `tb_pengguna` (
  `username` varchar(50) NOT NULL,
  `password` varchar(32) NOT NULL,
  `nama` varchar(100) DEFAULT NULL,
  `level` int(1) NOT NULL,
  `status` int(1) NOT NULL,
  PRIMARY KEY (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

lalu ketika tabel udah di buat, kita isi data di tabel tersebut.

INSERT INTO `tb_pengguna` (`username`, `password`, `nama`, `level`, `status`) VALUES
('ferdhika31', MD5( 'tamvan' ), 'Ferdhika Ganteng', 1, 1),
('nurjaman', MD5( 'tamvan' ), 'Si Tamvan', 2, 1);

RPL4rt Studio capture #191

Nah database udah dibuat , sekarang kita main di Code Igniternya :D

Ayo sekarang mari kita ubah pengaturan databasenya di code igniter, ubah di file /application/config/database.php

<?php
..
..
$db['default']['hostname'] = 'localhost'; //host database
$db['default']['username'] = ''; //username database
$db['default']['password'] = ''; //password database (default kosong jika di xampp)
$db['default']['database'] = ''; //nama database yang tadi kita buat
$db['default']['dbdriver'] = 'mysql';

menjadi :

<?php
..
..
$db['default']['hostname'] = 'localhost'; //host database
$db['default']['username'] = 'root'; //username database (default root jika di xampp)
$db['default']['password'] = ''; //password database (default kosong jika di xampp)
$db['default']['database'] = 'lat_login'; //nama database yng tadi kita buat
$db['default']['dbdriver'] = 'mysql';

Udah gitu, ubah pengaturan yang di perlukan saat mebuat sistem multi user login.

Pertama base_url sama encryption_key nya di /application/config/config.php

<?php
..
..
$config['base_url']	= '/ci/multi_login/'; //ini folder dimana kita menaruh web nya saya simpan di htdocs/ci/multi_login
..
..
$config['encryption_key'] = 'ferdhika_ganteng';

Kedua libraries sama helper nya di /application/config/autoload.php

<?php
..
..
$autoload['libraries'] = array('database','session','auth');
..
..
$autoload['helper'] = array('url','form');

Nah selesai ngubah pengaturan selanjutnya kita buat Modelnya dan beri nama m_login.php saja biar ga pusing :D (simpen di folder models ya bro)

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class M_login extends CI_Model{
	function __construct(){
		parent::__construct();
		$this->tbl = "tb_pengguna";
	}
	
	function cek_user($username="",$password=""){
		$query = $this->db->get_where($this->tbl,array('username' => $username, 'password' => $password));
		$query = $query->result_array();
		
		return $query;
  	}

	function ambil_user($username){
		$query = $this->db->get_where($this->tbl, array('username' => $username));
		$query = $query->result_array();
		
		if($query){
			return $query[0];
		}
	}
}

Setelah model di buat, kedua kita buat dulu view nya (tampilan login) beri nama form_login.php dan simpan di folder View

<html>
	<head>
		<title>Form Login</title>
		<style>
			body{
				font-family:Calibri;
				margin:50px;
			}
			#form-login{
				margin:auto;
				width:320px;
				padding:10px;
				border:1px #ccc solid;
				font-size:18px;
				font-weight:bold;
				color:#555;
			}
			.inputan{
				width: 100%;
				padding:3px;
				font-family:Consolas;
				border:1px solid #ccc;
			}
			.tombol{
				padding:5px;
				background:#555;
				color:#FFF;
				font-weight:bold;
				font-family:Consolas;
				font-size:15px;
				border:#eee 1px solid;
			}
			.error{
				color:#555;
				font-size:11px;
			}
		</style>
	</head>
	<body>
		<form action="<?php echo base_url();?>login/do_login" method="post">
			<div id="form-login">
			<center>Administrator Page - Plase Login First</center>
			<table border="0" cellpadding="4">
				<tr>
					<td>Username</td>
					<td>:</td>
					<td><input type="text" size="40" name="uname" class="inputan"> <?php echo form_error('username');?></td>
				</tr>
				<tr>
					<td>Password</td>
					<td>:</td>
					<td><input type="password" size="40" name="pass" class="inputan"> <?php echo form_error('password');?></td>
				</tr>
				<tr>
					<td>&amp;nbsp;</td>
					<td>&amp;nbsp;</td>
					<td><input type="submit" name="login" value="Login" class="tombol"> </td>
				</tr>
			</table>
			</div>
		</form>
	</body>
</html>

Selanjutnya kita buat controllernya, beri nama login.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends CI_Controller{

	function __construct(){
		parent::__construct();
		
		$this->load->model('m_login'); //memasukkan file model m_login.php ke dalam controller
	}

	function index(){
		$session = $this->session->userdata('isLogin'); //mengabil dari session apakah sudah login atau belum
		if($session == FALSE) //jika session false maka akan menampilkan halaman login{
			$this->load->view('login_form');
		}else{ //jika session true maka di redirect ke halaman dashboard
			redirect('dashboard');
		}
	}

	function do_login(){
		$username = $this->input->post("uname");
		$password = $this->input->post("pass");

		$cek = $this->m_login->cek_user($username,md5($password)); //melakukan persamaan data dengan database

		if(count($cek) == 1){ //cek data berdasarkan username &amp; pass
			foreach ($cek as $cek) {
					$level = $cek['level']; //mengambil data(level/hak akses) dari database
			}

			$this->session->set_userdata(array(
					'isLogin'   => TRUE, //set data telah login
					'uname'  => $username, //set session username
					'lvl'      => $level, //set session hak akses
			)); 

			redirect('dashboard','refresh');  //redirect ke halaman dashboard
		}else{ //jika data tidak ada yng sama dengan database
			echo "<script>alert('Gagal Login!')</script>";
			redirect('login','refresh');
		}
	}
}

Kemudian, setelah itu. mari kita buat library auth. Buat file auth dengan nama auth.php dan simpan di folder /application/libraries

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Auth {

	public function cek_auth(){
		$this->ci =& get_instance();
		$this->sesi  = $this->ci->session->userdata('isLogin');
		$this->hak = $this->ci->session->userdata('stat');

		if($this->sesi != TRUE){
		redirect('login','refresh');
			exit();
		}
	}

	public function hak_akses($kecuali=""){
		if($this->hak==$kecuali){ 
			echo "<script>alert('Anda tidak berhak mengakses halaman ini!');</script>";
			redirect('dashboard');
		}elseif ($this->hak=="") {
			echo "<script>alert('Anda belum login!');</script>";
			redirect('login');
		}else{

		}
	}
}
/* End of file Someclass.php */

Seudah itu, mari kita buat view halaman Dashboard buat admin dan user nya.. Pertama kita buat dulu buat admin, setelah itu baru User..

Hai  horeee kamu berhasil login. Ini halaman admin. Udah masuk mau keluar? nih keluarin disini > [<a href=''>Keluar</a>]
Hai  horeee kamu berhasil login. Ini halaman user. Udah masuk mau keluar? nih keluarin disini > [<a href=''>Keluar</a>]

Kalo udah di buat, ayo kita buat controller nya B-)

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Dashboard extends CI_Controller{

	function __construct(){
		parent::__construct();
		$this->load->model('m_login');
		$this->auth->cek_auth(); //ngambil auth dari library
	}

	function index(){
		$ambil_akun = $this->m_login->ambil_user($this->session->userdata('uname'));
		$data = array(
			'user'	=> $ambil_akun,
		);
		$stat = $this->session->userdata('lvl');
		
		if($stat==1){//admin
			$this->load->view('dashboard_admin',$data);
		}else{ //user
			$this->load->view('dashboard_user',$data);
		}
	}

	function login(){
		$session = $this->session->userdata('isLogin');
		if($session == FALSE){
			$this->load->view('login_form');
		}else{
			redirect('dashboard');
		}
	}

	function logout(){
		$this->session->sess_destroy();
		redirect('login','refresh');
	}
}

Oke selesai deh, mari kita coba satu per satu login nya :D

Dashboard adminDashboard userNahh selesai dah , sekarang coba deh di jalanin LOCALHOSTnya :D
Nih Filenya buat yang pengen langsung jadi -___-"

Download

Semoga bermanfaat.. Ayo kembangin lagi scriptnya untuk di persingkat lagi :D