Jumat, 02 November 2018

Cara buat multiple users level pada codeigniter

Tutorial ini menceritakan membuat multi level user pada codeigniter. Dengan membuat status yang berbeda pada user untuk mengakses setiap file yang bisa diakses sesuai dengan status user yang dipakai pada saat login. Tutorial ini menggunakan libraries session pada codeigniter.
Tetapi sebelumnya mari kita buat tabel users pada database untuk menyimpan semua data user. berikut ini sql nya:
CREATE TABLE `users` ( `id_users` int(10)AUTO_INCREMENT PRIMARY KEY, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `email` varchar(70) NOT NULL, `status` enum(‘admin’,’user’,’visitor’) NOT NULL);
Disana kita membuat status user pada 3 bagian yakni admin, user dan visitor. Dimana akses pada tiap status berbeda-beda untuk visitor hanya bisa melihat postingan pada blog, untuk user bisa membuat, mengedit dan menghapus postingan sendiri dan untuk admin bisa membuat mengedit dan menghapus semua orang.Mari kita contoh ini seperti facebook kita sendiri dimana kita bisa membuat status dan mengomentarinya.
Silahkan download file CodeIgniter pada websitenya dan extrak pada file htdocs, dan ganti filenya dengan nama login.Selanjutnya kita buat dengan mengkonfigurasi file autoload.php dan edit libraries dan helpernya yang akan kita gunakan.
$autoload[‘libraries’] = array(‘database’,’session’);
$autoload[‘helper’] = array(‘url’);
Lalu file config.php
$config[‘base_url’] = ‘http://localhost/login/’;
Kemudian databse.php sesuai dengan konfigurasi phpMyadmin yang kita punya,contohnya seperti yang saya buat:
$db[‘default’] = array(
‘dsn’ => ”,
‘hostname’ => ‘localhost’,
‘username’ => ‘root’,
‘password’ => ”,
‘database’ => ‘blog’, // ini nama database yang saya pakai
‘dbdriver’ => ‘mysqli’,
‘dbprefix’ => ”,
‘pconnect’ => FALSE,
‘db_debug’ => (ENVIRONMENT !== ‘production’),
‘cache_on’ => FALSE,
‘cachedir’ => ”,
‘char_set’ => ‘utf8’,
‘dbcollat’ => ‘utf8_general_ci’,
‘swap_pre’ => ”,
‘encrypt’ => FALSE,
‘compress’ => FALSE,
‘stricton’ => FALSE,
‘failover’ => array(),
‘save_queries’ => TRUE
);
untuk file route.php nya kita ganti ke file blog.php dengan mengganti welcome menjadi blog pada default_controller. Pada file blog.php nya pada folder controller saya membuat kode ini dulu untuk membuat index halaman ke loginform.php:
<?php
defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);
class Blog extends CI_Controller {
public function index()
{
$this->load->view(‘loginform’);
}
}
Buatlah loginform.php pada viewnya dengan kode ini:
<?php
defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);
?><!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”utf-8″>
<title>Login Page</title>
</head>
<body>
<form method=”post” action=”<?php echo base_url().”index.php/blog/auth”; ?>” >
<h2>Login Form</h2>
<div><?php echo $this->session->flashdata(‘msg’); ?></div>
<table>
<tr><td>Username</td><td>:</td><td><input type=”text” name=”user”></td></tr>
<tr><td>Password</td><td>:</td><td><input type=”password” name=”pass”></td></tr>
<tr><td colspan=”3″ style=”text-align: center;”><input type=”submit” value=”Login”></td></tr>
</table>
</form>

</body>
</html>
Kode yang bertanda metah itu membuat data yang kita buat ke controller blog.php yang sudah kita buat dengan fungsi auth. Mari kita buat fungsi auth pada blog.php dengan menambahkan kode ini sebelum tanda kurung kurawa terakhir:
public function auth(){
$this->load->model(‘modelnya’);
$user=htmlspecialchars($this->input->post(‘user’,TRUE),ENT_QUOTES);
$pass=htmlspecialchars($this->input->post(‘pass’,TRUE),ENT_QUOTES);
$cek_user=$this->modelnya->authority($user,$pass);
if($cek_user->num_rows() > 0){
$datauser=$cek_user->row_array();
$this->session->set_userdata(‘masuk’,TRUE);
$this->session->set_userdata(‘status’,$datauser[‘status’]);
$this->session->set_userdata(‘username’,$datauser[‘username’]);
$this->session->set_userdata(’email’,$datauser[’email’]);
redirect(‘page’);
}else{
$url=base_url();
echo $this->session->set_flashdata(‘msg’,’Username or password is wrong’);
redirect($url);
}
}
public function logout(){
$this->session->sess_destroy();
redirect(base_url());
}
Nah disini bila si user sudah memasukan usename dan passwordnya maka akan langsung mengalihkan ke controller page.php dengan membawa session yang sudah terekam.
Kemudian buat controller Page.php :
<?php
class Page extends CI_Controller{
function __construct(){
parent::__construct();
if($this->session->userdata(‘masuk’) != TRUE){
redirect(base_url());
}
}
function index(){
$this->load->view(‘dashboard’);
}
public function addusers(){
//menu tambah pengguna hanya untuk admin
if($this->session->userdata(‘status’)==’admin’){
$this->load->view(‘adduser’);
}else{
echo ‘Kamu tidak memiliki akses kesini’;
}
}
public function editselfs(){
//menu edit biodata sendiri untuk semua status
$this->load->view(‘editself’);
}
public function showposts(){
//menu show post untuk semua status
$this->load->view(‘showpost’);
}
public function addposts(){
//menu add post untuk semua status admin dan user
if($this->session->userdata(‘status’)==’admin’ || $this->session->userdata(‘status’)==’user’){
$this->load->view(‘addpost’);
}else{
echo ‘Kamu tidak memiliki akses kesini’;
}
}
public function editallposts(){
//menu edit semua post untuk semua status admin
if($this->session->userdata(‘status’)==’admin’){
$this->load->view(‘editallpost’);
}else{
echo ‘Kamu tidak memiliki akses kesini’;
}
}
public function myposts(){
//menu mypost untuk semua status admin dan user
if($this->session->userdata(‘status’)==’admin’ || $this->session->userdata(‘status’)==’user’){
$this->load->view(‘mypost’);
}else{
echo ‘Kamu tidak memiliki akses kesini’;
}
}
}

Pada kode Page.php kita memilah-milah status user mana yang boleh dan tidak boleh menggunakan halaman-halaman. Kemudian selanjutnya meload view dashboard.php. Tapi sebelum kita membuat file dashboard.php kita buat navigasi bar untuk membuat link pada setiap session yang digunakan. Ini adalah navbar.php yang akan dimuat pada dashboard.php.
<!– ini untuk navigasi pada setiap status user sesuai dengan session masuk –>
<nav>
<div>
<ul>
<!– ini untuk navigasi admin –>
<?php if($this->session->userdata(‘status’)==’admin’):?>
<li><a href=”<?php echo base_url().’index.php/page’;?>”>Dashboard</a></li>
<li><a href=”<?php echo base_url().’index.php/page/showposts’;?>”>All posts</a></li>
<li><a href=”<?php echo base_url().’index.php/page/addposts’;?>”>New post</a></li>
<li><a href=”<?php echo base_url().’index.php/page/myposts’;?>”>My posts</a></li>
<li><a href=”<?php echo base_url().’index.php/page/editallposts’;?>”>Edit All Posts</a></li>
<li><a href=”<?php echo base_url().’index.php/page/addusers’;?>”>Add User</a></li>
<li><a href=”<?php echo base_url().’index.php/page/editselfs’;?>”>My Biodata</a></li>
<!– ini untuk navigasi user –>
<?php elseif($this->session->userdata(‘status’)==’user’):?>
<li><a href=”<?php echo base_url().’index.php/page’;?>”>Dashboard</a></li>
<li><a href=”<?php echo base_url().’index.php/page/showposts’;?>”>All posts</a></li>
<li><a href=”<?php echo base_url().’index.php/page/addposts’;?>”>New post</a></li>
<li><a href=”<?php echo base_url().’index.php/page/myposts’;?>”>My posts</a></li>
<li><a href=”<?php echo base_url().’index.php/page/editselfs’;?>”>My Biodata</a></li>
<!– ini untuk navigasi visitor –>
<?php else:?>
<li><a href=”<?php echo base_url().’index.php/page’;?>”>Dashboard</a></li>
<li><a href=”<?php echo base_url().’index.php/page/showposts’;?>”>All posts</a></li>
<li><a href=”<?php echo base_url().’index.php/page/editselfs’;?>”>My Biodata</a></li>
<?php endif; ?>
</ul>
<ul>
<li><a href=”<?php echo base_url().’index.php/blog/logout’;?>”>Logout</a></li>
</ul>
</div>
</nav>
Selanjutnya view dashboard.php
<?php
defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);
?><!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”utf-8″>
<title>Dashboard</title>
</head>
<body>
<div>
<?php $this->load->view(‘navbar’);?>
<div>
<h2>Welcome back <?php echo $this->session->userdata(‘username’);?></h2>
</div>
</div>
</body>
</html>
Silahkan mencoba!
.: GOOD LUCK :.

Tidak ada komentar:

Posting Komentar