Sie sind auf Seite 1von 15

Simple Tutorial CodeIgniter Episode 1

Belajar CodeIgniter tidaklah terlalu sulit. Bagi Anda yang sudah menguasai PHP
dasar, saya kira Anda dapat menguasai CI dengan cepat. Saya sendiri pun (yang
hanya autodidak) dapat mempelajarinya dengan lumayan cepat tanpa hambatan yang
berarti. Mengapa? Berawal dari User Guide-nya CI yang sangat jelas, hingga
community-nya yang sangat responsible membuat saya cepat dalam mempelajarinya.
Saat ini, saya lumayan lancar dalam membuat aplikasi dengan CI, meskipun tidak
terlalu canggih.
Sebelumnya, saya tekankan bahwa disini saya asumsikan Anda sudah menguasai
dasar PHP, terutama konsep class. Mengapa class? Karena CI pada dasarnya adalah
berorientasi objek, jadi, kita nantinya akan sering membuat class-class PHP dalam
prosesnya. Jika Anda merasa belum menguasainya, silakan baca buku atau cari
referensi di internet.
Kita akan mulai mini tutorial ini dari pembahasan Controller dan View. Dua
komponen ini adalah minimal kita buat ketika membuat aplikasi dengan CI.
Controller merupakan kumpulan function yang terangkum dalam suatu class.
Bagaimana dengan View? View adalah file yang umumnya berisi HTML dan
(sedikit) PHP script yang nantinya akan ditampilkan di browser. Secara mudah,
prosesnya adalah Controller melakukan Query ke database, kemudian dia juga mem-
parsing-kan data hasil query tersebut ke View. Nah, di view, kita looping data
tersebut untuk ditampilkan.

Secara umum, struktur file controller seperti berukut ini.

Controller di atas bernama Mycontroller (huruf pertama harus kapital) dan disimpan
dalam folder system/application/controllers/ dengan nama mycontroller.php (huruf
pertama tidak kapital). Disini yang perlu kita ingat bahwa nama controller menjadi
nama file controller tersebut.
Perhatikan, Mycontroller memiliki function index() dan other_function(). Dalam
sistem URL CI (default), controller akan menjadi segmen pertama dari url kita, dan

Code Igniter –2– for beginners only  1


function menjadi yang kedua. Jadi, jika kita ingin mengeksekusi controller
mycontroller dan function index, maka kita tulis dalam url :

dengan asumsi root adalah nama root folder anda di webserver. Perlu diingat bahwa
khusus function index (yang selalu ada dalam setiap controller) tidak perlu dituliskan
(optional). Untuk fungsi kedua, kita tulis dalam url :

Seperti itulah dasar controller.


Kita dapat juga memberikan parameter ke controller, lewat url, mulai dari segment
ke 3 dan seterusnya. Misalkan url kita :

Simple Tutorial CodeIgniter Episode 2

Kita telah membahas Controller di episode lalu. Sekarang, kita akan membahas
komponen kedua yang tak kalah penting, yakni view. View tersimpan dalam folder
application/views/. Agar lebih rapi, kita dapat membuat subfolder di dalamnya.
Biasanya saya membuat folder-folder sebanyak dan sesuai dengan controller, jadi
lebih mudah dalam pengeditan di kemudian hari.

Contoh sederhana dari struktur file view adalah sebagai berikut :

Untuk meload/menampilkan file view, kita cukup membuat sebuah controller dan
menuliskan dalam salah satu fungsinya :
$this->load->view('namaViewTanpaEkstensiPHP');
// jika file view ada langsung pada folder application/views/
// atau
$this->load->view('namaFolder/namaViewTanpaEkstensiPHP');
// jika file view berada dalam folder application/views/namaFolder/
Selanjutnya, jika kita arahkan browser ke :

Code Igniter –2– for beginners only  2


maka kita akan melihat file view tersebut ditampilkan.
Untuk kedinamisan dari view, kita dapat memberikan sebuah data ke view lewat
controller, untuk kemudian ditampilkan pada view. Data ini dapat berupa string,
array, ataupun berupa data objek dari sebuah query database. Contohnya sebagai
berikut :

Simple Tutorial CodeIgniter Episode 3

Kali ini kita akan membahas tentang model. Sejatinya, model adalah file PHP yang
dirancang khusus untuk mengakses database. Jadi, ketika kita bekerja dengan
database (insert, update, delete, akses data, dsb), sebaiknya kita memanfaatkan
model dalam prosesnya. Mungkin hal ini tidaklah mutlak diharuskan, tetapi alangkah
lebih baiknya dilakukan. Mengapa? Hal ini akan memudahkan kita dalam proses
pembuatan aplikasi (mempercepat), karena semua akses ke database diatur dalam
satu kelompok file yang jelas, tidak tersebar. Jadi, ketika ada kesalahan mudah
dalam penanganannya.
Model dibuat untuk mempermudah akses ke tabel database. Oleh karenanya, agar
memudahkan kita dalam bekerja, sebaiknya pembuatan file model sesuai dengan
kelompok aksesnya. Ada dua pilihan disini, yaitu :
1. Kelompok berdasarkan tabel. Jadi, setiap tabel memiliki satu file model yang
khusus untuk operasi di tabel tersebut.
2. Kelompok berdasarkan jenis/topik. Misalnya anda mengelola sistem
pegawai, mungkin model yang ada adalah sistem_gaji_model.php,
sistem_kenaikan_pangkat.php, dsb, yang mana model tersebut mengakses
lebih dari satu tabel, tapi mengarah ke topik yang sama.

Contoh file model :


class Pegawai_model extends Model
{
// fungsi konstruktor, harus ada di setiap model yang kita buat (nama fungsi s
ama dengan nama class)
function Pegawai_model()
{

Code Igniter –2– for beginners only  3


parent::Model(); // baris wajib!!
}
function getAll()
{
$data = $this->db->get('pegawai');
return $data;
}
}
File model disimpan dalam folder application/models/. Kita dapat menyimpannya
langsung di folder tersebut atau bisa juga di dalam subfolder. Tapi ingat, hal ini
mempengaruhi pada saat pemanggilan/load model. Contoh :

Setelah diload, kita dapat menggunakannya seperti class biasa, $this->nama_model-


>fungsi_model.
Silakan baca user guide CI di bagian Database Class >> Active Record Class untuk
lebih memahami bagaimana mengakses database secara optimal di CodeIgniter.

Membuat Website dengan CodeIgniter #1

Prepare for Localhost!


Persiapkan server localhost Anda (saya anggap Anda sudah paham caranya).
Pindahkan folder CodeIgniter lengkap di root webserver Anda, silakan ganti nama
folder sesuka Anda, Atur file confignya. Diantaranya yang perlu diatur adalah sbb:
config.php (system/application/config/)

database.php (system/application/config/)
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root"; //ganti dengan username db anda
$db['default']['password'] = ""; //ganti dengan password db anda
$db['default']['database'] = "namaDb"; // ganti dengan nama database yang and
a gunakan untuk web anda (harus sudah ada, buat kosongan dulu)
autoload.php (system/application/config/)
$autoload['helper'] = array('url'); //diperlukan untuk fungsi base_url()
route.php (system/application/config/)
$route['default_controller'] = "web"; //controller default (akan kita buat nanti)

Persiapan Template
Hal berikutnya yang perlu kita siapkan adalah template (desain web). Anda dapat
membuat template sendiri atau mencari free template di internet (contoh :
styleshout.com). Setelah mendapatkan yang cocok, definisikan/tentukan pembagian
area di template Anda (biasanya file utama bernama index.html) . Saya contohkan
disini adalah header, content, dan footer.

Code Igniter –2– for beginners only  4


Masing masing bagian dipisah menjadi satu file tersendiri dengan nama masing
masing header.php, content.php, dan footer.php. File-file ini disimpan dalam folder
views. Nantinya, file-file ini masih kita edit untuk keperluan lebih lanjut.

Membuat Controller Utama


Rencananya, controller utama ini kita gunakan untuk ditampilkan di halaman awal,
yang secara default akan diload (pada route.php) jika ada orang yang membuka
alamat web kita.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Web extends Controller {
function Web()
{
parent::Controller();
}
function index()
{
$data['title']="Welcome to My Website"; // data untuk variabel $title
$data['content']="Ini halaman Content Awal"; // data untuk variabel $content
$this->load->view('main',$data); // load main.php (kita buat nanti) dengan beb
an data
}
}

Selanjutnya kita buat main.php (untuk tampilan halaman awal).


<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
$this->load->view('header');

Code Igniter –2– for beginners only  5


$this->load->view('content');
$this->load->view('footer');

Variabel title dan content akan diparsingkan ke view main.php. Pada main.php,
terdapat load view tiga kali, dimana header berisi variabel title, dan content berisi
variabel content. Hmm...sampai disini dulu, oke? Anda dapat tes web anda dengan
address : http://localhost/namaWeb.

Membuat Website dengan CodeIgniter #2

Mungkin sebagian orang (termasuk saya) kebingungan ketika ingin menggunakan


css dan membuat background image (css) di CodeIgniter. Mulai dari peletakan
folder image, stylesheet, dll. Deklarasi url image pada tag background di css adalah
masalah yang paling besar menurut saya. Tetapi jangan khawatir, saya punya
triknya.
Misalkan kita punya folder images yang berisi file-file gambar untuk situs kita, dan
ingin digunakan di css sebagai background. Biasanya, saya letakkan folder images di
luar system.

Contoh, kita punya file css bernama style.css dan style2.css. Untuk
menggunakannya, kita buat satu file css yang lain, misal screen.css (semuanya
disimpan dalam folder stylesheet.

Nah, pada file header.php yang kita buat pada tutorial #1, kita tambahkan di bagian
dalam <head> ... </head> :

Jika kita ingin menggunakan tag background di css, gunakan seperti berikut :

Membuat Website dengan CodeIgniter #3

Pada tutorial yang sebelumnya, kita sudah membahas tampilan secara dasar.
Sekarang kita akan meluncur ke section utama, yakni permainan database. Pada

Code Igniter –2– for beginners only  6


dasarnya, semua yang ingin ditampilkan di halaman web kita adalah sebuah
permainan database biasa. Entah itu recent post, recent comment, dsb. Nah, disini,
karena kita menggunakan framework untuk membuatnya, maka kita sebaiknya
menaati 'nasehat' dari CI.
Apa itu nasehatnya? Dalam hal ini adalah 'gunakan model untuk mengakses
database'. Saya akan berikan contoh model untuk membuat tampilan 'recent posts'.
Sebelumnya, pada database yang sudah kita tentukan, buat tabel untuk posting.
--
-- Table structure for table `posting`
--

CREATE TABLE `posting` (


`posting_id` int(5) NOT NULL auto_increment,
`posting_judul` varchar(100) collate latin1_general_ci NOT NULL,
`posting_isi` longtext collate latin1_general_ci NOT NULL,
`posting_tanggal` varchar(50) collate latin1_general_ci NOT NULL,
`posting_aktif` int(1) NOT NULL default '1',
`posting_hits` int(100) NOT NULL,
PRIMARY KEY (`posting_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO
_INCREMENT=1 ;

Tabel di atas masih sangat sederhana, Anda dapat menambahkan kolom jika Anda
menginginkannya. Nah, ini dia modelnya...
Class Postmodel extends Model
{
function Postmodel()
{
parent::Model();
}
function getRecentPost()
{
$this->db->select('*');
$this->db->from('posting p');
$this->db->where('posting_aktif',1); // hanya posting yang aktif yang ditampil
kan
$this->db->order_by('p.posting_id','desc');
$this->db->limit(5); // diambil lima entri terbaru
return $this->db->get();
}
}

Ok. Selanjutnya, kita buat modifikasi controller yang dulu kita buat, pada seri
tutorial website #1.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Web extends Controller {
function Web()
{
parent::Controller();
$this->load->model('postmodel');
$this->load->helper('text');
}
function index()
{
$data['title']="Welcome to My Website"; // data untuk variabel $title

Code Igniter –2– for beginners only  7


$data['content']=$this->postmodel->getRecentPost(); // data untuk variab
el $content
$this->load->view('main',$data);
}
}

Selanjutnya, modifikasi juga view 'content.php', karena view yang kita load
(main.php) memanggil file content.php untuk jadi tampilan content.
<!-- content starts here -->
<div id='content'>
<?php foreach($content->result() as $row):?>
<h3><?=$row->posting_judul?></h3>
<p class="post-info">
Oleh Admin | <?=$row->posting_hits?> hits
</p>

<p>
<?=word_limiter($row->posting_isi,30)?> </p> <!-- batasi tampilan hanya 30 k
ata -->
<p class="postmeta">
<span class="date"><?=date('d F Y',$row->posting_tanggal)?></span>
</p>
<?php endforeach?>
</div>
<!-- content ends here -->

Yups, kita selesai. Silakan dicoba. Kita akan buat yang lebih kompleks di tulisan
mendatang (kategori, komentar, arsip, dsb). {to be continued }
Nb. Model memerlukan koneksi ke database. Di CI, ada beberapa cara untuk dapat
terkoneksi ke database, dari yang otomatis sampai manual. Saran saya, lakukan
dengan cara otomatis, karena kita akan sering menggunakan database dalam script
kita. Untuk itu, pada autoload.php, tambahkan 'database' dalam array
$autoload['libraries'].

Membuat Website dengan CodeIgniter #4

Pada tutorial sebelumnya, saya pernah menjanjikan untuk membahas tentang


kategori, komentar, arsip, dsb. Setelah saya pikir-pikir, kayaknya kok ga begitu
rumit-rumit amat ya? Kita hanya perlu modifikasi database (tambah tabel dsb) dan
query kita.
Selanjutnya, kita buat view nya. Tentunya Anda sudah mengenal query mysql
dengan baik bukan? Bahkan mungkin lebih baik dari saya. Oleh karenanya saya
putuskan untuk meneruskan perjalanan CI kita ke 'pagination' (setelah ini saya
singkat PG).
PG di CI tidak terlalu rumit untuk diterapkan, karena sudah disediakan library-nya.
Saya akan coba berikan tips disini, tentang bagaimana membuat pagination yang
baik dan sedikit menarik, dengan 'digg style pagination', tapi yang sederhana.
Mungkin Anda menganggap ini lucu, karena hanya tampilannya saja yang mirip
dengan gaya digg.com. Tapi ini cukup kalau hanya untuk sekedar 'gaya'.
Pertama, kita akan membuat library untuk memudahkan kita setiap kali akan
membuat pagination. Saya contohkan di bawah ini.

Code Igniter –2– for beginners only  8


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Class Mypagination
{
function Mypagination()
{
$this->SP =& get_instance();
$this->SP->load->library('pagination');
}
function getPagination($total, $per_page, $url, $uri_segment)
{
$config['base_url'] = base_url().'index.php/'.$url;
$config['full_tag_open'] = '<div class=paging>';
$config['full_tag_close'] = '</div>';
$config['cur_tag_open'] = '<span class=pag_link_cur>';
$config['cur_tag_close'] = '</span>';
$config['num_tag_open'] = '<span class=pag_link>';
$config['num_tag_close'] = '</span>';
$config['uri_segment'] = $uri_segment;
$config['next_link'] = 'next ›';
$config['prev_link'] = '‹ prev';
$config['num_links'] = 3;
$config['total_rows'] = $total;
$config['per_page'] = $per_page;
$this->SP->pagination->initialize($config);
$data['link']=$this->SP->pagination->create_links();
return $data;
}
}

Pada Class di atas kita definisikan variabel-variabel yang perlu, dan ...class css.
Untuk CSS nya sebagai berikut :
/* paging */
.pag_link{
background:#f8f8f8;
border:#EBEBEB 1px solid;
padding:3px 8px;
margin-left:3px;
margin-right:3px;
color:#000000;
}
.pag_link_cur{
background:#AAAAAA;
border:#f8f8f8 1px solid;
padding:3px 8px;
margin-right:3px;
margin-left:3px;
color:#000000;
}
.paging{
margin-left:7px;
padding-bottom:10px;
padding-top:10px;
margin-bottom:10px;
text-align:left;
}
.paging a{

Code Igniter –2– for beginners only  9


border:none;
color:#000;
}
.paging a:hover{
text-decoration:underline;
}

OK. selesai. kita siap untuk mempergunakannya di controller. Contoh


penggunaanya, misalkan ketika kita ingin membuat pagination untuk hasil pencarian
(search page) artikel, sekaligus disini saya berikan 'bayangan' bagaimana membuat
'sistem pencarian'.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
Class Search extends Controller
{
function Search()
{
parent::Controller();
$this->load->model(array('supermodel')); //model saya :D
$this->load->library('mypagination');
}
function index()
{
$this->do_search();
}
function do_search()
{
$keyword = $this->input->post('keyword',TRUE); // ambil variabel keyword dari
search form
if($keyword==''){ $keyword = $this->session->flashdata('keyword'); }
//jika keyword kosong, coba ambil dari flashdata
if($keyword==''){ redirect('home','refresh');} //jika keyword tetap kosong juga..
.banting komputer..hehehe...redirect ke home
$this->session->set_flashdata('keyword',$keyword);
//set flashdata untuk keyword kita
$offset = $this->uri->segment(3,0); //ambil nilai offset, jika tidak ada, akan dib
eri nilai 0
$total=$this->supermodel->getTotalSearch($keyword);
//hitung di model, berapa banyak data berdasar keyword
$perpage=5; // tetapkan berapa banyak data yang ditampilkan per halaman
$data2=$this->mypagination->getPagination($total_page,
$perpage,'search/do_search/',3);
//jelas
$data['link'] = $data2['link']; //ambil data dari getPagination
$data['artikel']=$this->supermodel->search($keyword,$perpage,$offset);
//ambil data dari database (query sama dengan getNumSearch, hanya diberi par
ameter tambahan)
$title['title']='Hasil Pencarian dengan keyword '.$keyword.' (ditemukan '.$total.'
artikel)';
$this->load->view('search_result',$data);
}
}

//pada view, untuk menampilkan link paging, echo-lah $link


echo $link;

Membuat Website dengan CodeIgniter #5

Code Igniter –2– for beginners only  10


Dalam seri tutorial kali ini, kita akan membuat sistem user authentification. Kita
akan membahas pembuatan sistem login multi user (level) dan bagaimana mengatasi
validasinya di setiap halaman-halaman penting. Sistem authentification ini sangat
berguna di dalam pembuatan aplikasi web yang digunakan oleh user yang lebih dari
satu. Perlu saya sampaikan disini bahwa sistem yang akan kita buat merupakan 'basic
concept' saja. Artinya, pada kenyataannya, security perlu Anda tingkatkan.
Oke kita mulai. Hal pertama yang perlu kita siapkan adalah tabel dalam database
kita. Kita akan memerlukan dua tabel untuk hal ini, yakni tabel user, level, dan
menu. Berikut sql query-nya.
CREATE TABLE IF NOT EXISTS `user` (
`user_id` int(5) NOT NULL auto_increment,
`user_nama` varchar(50) NOT NULL,
`level_id` int(1) NOT NULL,
`user_username` varchar(30) NOT NULL,
`user_password` varchar(200) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

INSERT INTO `user` (`user_id`, `user_nama`,`level_id`,`user_username`,`user_p


assword`) VALUES
(1, 'Joko','1','jack',PASSWORD('jacktampan'),
(2, 'Ridwan','2','ridone',PASSWORD('alahmak'),
(3, 'Asep','1','darkfog',PASSWORD('darknessforever');

CREATE TABLE IF NOT EXISTS `level` (


`level_id` int(1) NOT NULL auto_increment,
`level_nama` varchar(30) NOT NULL,
PRIMARY KEY (`level_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

INSERT INTO `level` (`level_id`, `level_nama`) VALUES


(1, 'admin'),
(2, 'guru'),
(3, 'siswa');

CREATE TABLE IF NOT EXISTS `menu` (


`menu_id` int(3) NOT NULL auto_increment,
`menu_nama` varchar(30) NOT NULL,
`menu_level` varchar(100) NOT NULL,
PRIMARY KEY (`menu_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

INSERT INTO `menu` (`menu_id`, `menu_nama`,`menu_level`) VALUES


(1, 'Manajemen Menu','1'),
(2, 'Posting Berita','1+2'),
(3, 'Lihat Nilai','1+2+3');

Konsepnya adalah sebagai berikut :


1. Tabel user menyimpan data user. Field penting yang terkait dengan sistem
adalah level_id. Dengan level_id, kita dapat mengetahui level dari si user
tersebut. Dalam contoh kita, kita sudah masukkan tiga orang user, masing
masing level satu orang.

Code Igniter –2– for beginners only  11


2. Tabel level menyimpan referensi level dan namanya. Sebenarnya ini
optional, tetapi akan sangat berguna untuk kerapihan struktur sistem. Dalam
contoh kita, kita masukkan tiga level.
3. Tabel menu menyimpan 'sistem menu' di dalam aplikasi yang kita buat.
Disarankan dalam membuat controller grup admin (controller yang berisi
fungsi pengolah halaman-halaman admin), supaya dipisahkan per menu.
Misalkan untuk contoh ini, kita perlu tiga controller, yaitu controller
'manajemen_menu', 'posting_berita', dan 'lihat_nilai'. Field menu_level disini
mungkin agak aneh, tapi ini cukup untuk menyimpan referensi 'siapa sajakah
yang boleh membuka menu yang bersangkutan'. Misalkan disini,menu
posting berita hanya boleh dibuka oleh level 1 dan 2 (dipisah dengan tanda
'+'), tidak lain adalah level admin dan level guru. Begitu pula dengan yang
lainnya.

Berikutnya, kita buat library untuk memudahkan pengelolaan user, seperti login dan
restrict page.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Auth {
function Auth()
{
$this->CI =& get_instance();
}
function process_login($login = NULL)
{
// cek apakah array login ada
// array login dikirim dari form login berisi username dan password
if(!isset($login))
return FALSE;
// value dalam array hanya boleh ada 2
// tidak lebih dan tidak kurang
if(count($login) != 2)
return FALSE;
// ambil data dari array
$username = $login['username'];
$password = $login['password'];
// cari dalam database
$this->CI->db->where('user_username', $username);
$this->CI->db->where("user_password=PASSWORD('$password')");
$query = $this->CI->db->get('user');
if ($query->num_rows() == 1)
{
foreach ($query->result() as $row)
{
$user_id = $row->user_id;
$username = $row->user_username;
$level = $row->level_id;
$nama = $row->user_nama;
}
$newdata = array(
'user_id' => $user_id,
'username' => $username,
'level' => $level,
'nama' => $nama
);

Code Igniter –2– for beginners only  12


$this->CI->session->set_userdata($newdata);
// set session tambahan
$this->CI->session->set_userdata('logged_user', $username);
return TRUE;
}
else
{
// No existing user.
return FALSE;
}
}
function restrict($logged_out = FALSE)
{
// fungsi ini untuk mengatur restriction sebuah halaman
if ($logged_out && $this->logged_in())
{
// jika user sudah login tetapi ingin melihat halaman
// yang tidak seharusnya dilihat, contoh halaman login
redirect('menu'); // url helper, pastikan sudah ter-load
}
if ( ! $logged_out && ! $this->logged_in())
{
// jika user sudah logout (default :FALSE) dan dia
// ingin masuk halaman admin
redirect('home');
}
}
function logged_in()
{
if ($this->CI->session->userdata('logged_user') == FALSE)
{
return FALSE;
}
else
{
return TRUE;
}
}
function logout()
{
$this->CI->session->sess_destroy();
return TRUE;
}
function cek($idmenu)
{
// untuk mengecek apakah user mempunyai hak akses atau tidak
$status_user=$this->CI->session->userdata('level');
$this->db->select('menu_level');
$this->db->from('menu');
$this->db->where('menu_id',$id);
$data = $this->db->get();
$row=$data->row();
$lev=$row->menu_level;
$arr=explode('+',$lev);
if(in_array($status_user,$arr)==FALSE)
{
redirect('home');

Code Igniter –2– for beginners only  13


}
}
}

Untuk menggunakannya kita terapkan dalam controller login sebagai berikut


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

Class Login extends Controller


{
function Login()
{
parent::Controller();
$this->load->library('auth');
}
function login_form()
{
// restrict true agar user tidak bisa
// melihat halaman ini ketika dia sudah login
$this->auth->restrict(TRUE);
$this->load->view('form_login');
}
function proses_login()
{
// ambil data dari form login, berisi username dan password
$data_login = $_POST;
$this->auth->process_login($data_login);
}
function logout()
{
$this->auth->restrict();
$this->auth->logout();
redirect('home');
}
}

Selanjutnya, untuk setiap halaman yang akan dikontrol, kita cek dua kali, pertama
cek apakah si user sudah login atau belum dan yang kedua cek apakah dia punya hak
akses untuk melihat/membuka halaman tersebut. Pengecekan ini dilakukan di
constructor dari controller (sehingga ber-efek ke semua fungsi dalam controller
tersebut) menggunakan fungsi restrict() dan cek() yang sudah ada di paket library
auth yang baru saja kita buat.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
Class Postingberita extends Controller
{
function Postingberita()
{

parent::Controller();
// cek apa dia sudah login
$this->auth->restrict();
// cek apa dia punya hak untuk mengakses menu posting berita (menu_id = 2)
$this->simplival->cek(2);
}
}

Code Igniter –2– for beginners only  14


OK kita selesai. Anda dapat membuat 'panel manajemen menu' jika anda
memerlukannya. Lakukan update field menu_level dengan kombinasi level user
dipisahkan dengan tanda '+' (gunakan implode). Manajemen menu ini sangat perlu
jika anda menginginkan menu Anda dinamis.

Code Igniter –2– for beginners only  15

Das könnte Ihnen auch gefallen