0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan

Codeigniter

Diunggah oleh

anandapbg687
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan

Codeigniter

Diunggah oleh

anandapbg687
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 36

DIENG CYBER SOFTWARE HOUSE

Apa Itu CodeIgniter?


CodeIgniter adalah framework PHP yang ringan, cepat, dan didesain khusus
untuk pengembangan aplikasi web. Dengan menggunakan pola MVC (Model-
View-Controller), CodeIgniter memisahkan bagian tampilan, logika bisnis, dan
data sehingga aplikasi menjadi lebih modular dan mudah dikelola.
Keunggulan CodeIgniter
 Performa Cepat: CodeIgniter dikenal sebagai framework yang sangat
ringan dan cepat dibanding framework PHP lainnya.
 Kemudahan dalam Penggunaan: Mudah dipelajari, terutama untuk
pemula yang baru belajar framework.
 Dokumentasi Lengkap: CodeIgniter memiliki dokumentasi yang sangat
lengkap dan banyak contoh kode.
 Fleksibilitas: Framework ini fleksibel dan mendukung integrasi dengan
berbagai library tambahan.
Perbandingan dengan Framework Lain
 CodeIgniter lebih ringan dibandingkan Laravel atau Symfony,
menjadikannya pilihan tepat untuk aplikasi sederhana.
 Karena tidak memerlukan konfigurasi berlebih, CodeIgniter cocok untuk
proyek dengan deadline ketat atau untuk pengembang yang mencari
framework minimalis.
Prasyarat Sebelum Memulai
 Pengetahuan PHP Dasar
 Pengetahuan Dasar tentang MVC
 Software yang Diperlukan: Server lokal seperti XAMPP, WAMP, atau
MAMP.
2. Instalasi CodeIgniter
Langkah-langkah Instalasi
1. Download CodeIgniter: Unduh versi terbaru dari CodeIgniter di situs
resmi codeigniter.com.
2. Ekstraksi File: Ekstrak file ZIP yang telah diunduh, lalu pindahkan ke
folder server lokal Anda. Jika menggunakan XAMPP, letakkan di dalam
folder htdocs.
3. Menjalankan Server: Aktifkan server lokal (XAMPP atau WAMP) dan
buka browser Anda. Akses CodeIgniter melalui
http://localhost/nama_folder untuk memastikan instalasi berhasil.
Struktur Folder CodeIgniter
 application/: Berisi logika aplikasi (folder model, view, dan controller
berada di sini).
 system/: Berisi kode inti framework CodeIgniter.
 public/: Folder tempat file-file publik seperti gambar, CSS, dan JavaScript.
 index.php: File utama untuk menjalankan aplikasi CodeIgniter.
Menjalankan CodeIgniter Pertama Kali
Setelah memastikan bahwa server berjalan dan folder ditempatkan dengan
benar, buka URL http://localhost/nama_folder di browser. Anda akan melihat
halaman default CodeIgniter, yang berarti instalasi berhasil.

3. Konfigurasi Dasar
Setelah berhasil menginstal CodeIgniter, langkah selanjutnya adalah melakukan
beberapa konfigurasi dasar untuk memulai pengembangan aplikasi.
Pengaturan config.php
 Lokasi: application/config/config.php
 Beberapa pengaturan penting di file config.php:
$config['base_url'] = 'http://localhost/nama_folder/';
o Encryption Key: Untuk keamanan, atur encryption_key di
config.php agar fitur enkripsi bekerja:
$config['encryption_key'] = 'kode_aman_anda';

o Error Logging: Atur level error logging untuk melacak bug. Set
log_threshold sesuai kebutuhan:
$config['log_threshold'] = 1; // 1: error, 2: debug, 3:
informasi

Pengaturan database.php untuk Koneksi Database


 Lokasi: application/config/database.php
 Isi konfigurasi database agar aplikasi bisa terhubung dengan database.
Contoh konfigurasi untuk MySQL:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'nama_database',
'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
);

Pengaturan Lainnya
 URL-Friendly: Untuk membuat URL yang lebih bersih, hilangkan
index.php dari URL. Tambahkan konfigurasi .htaccess di root aplikasi:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

4. MVC di CodeIgniter
Model-View-Controller (MVC) adalah pola desain yang membagi aplikasi
menjadi tiga bagian utama: Model, View, dan Controller. CodeIgniter
menggunakan MVC untuk membantu kita mengorganisir kode agar lebih rapi
dan terstruktur.
a. Apa Itu MVC?
 Model: Mengelola data, interaksi dengan database, dan logika bisnis.
 View: Mengelola tampilan (HTML) yang akan dilihat oleh pengguna.
 Controller: Menghubungkan antara model dan view, mengatur alur
logika aplikasi.
b. Penjelasan Tentang Model, View, dan Controller di CodeIgniter
 Model:
o Lokasi: application/models/
o Membuat file model: Misalnya, UserModel.php
<?php
class UserModel extends CI_Model {
public function get_users() {
$query = $this->db->get('users');
return $query->result();
}
}

 View:
o Lokasi: application/views/
o Membuat file view: Misalnya, user_list.php
<html>
<head><title>Daftar Pengguna</title></head>
<body>
<h1>Daftar Pengguna</h1>
<ul>
<?php foreach ($users as $user): ?>
<li><?php echo $user->name; ?></li>
<?php endforeach; ?>
</ul>
</body>
</html>

 Controller:
o Lokasi: application/controllers/
o Membuat file controller: Misalnya, User.php
<?php
class User extends CI_Controller {
public function index() {
$this->load->model('UserModel');
$data['users'] = $this->UserModel->get_users();
$this->load->view('user_list', $data);
}
}

c. Struktur Folder MVC di CodeIgniter


Pada struktur folder, letakkan file sesuai dengan konvensi MVC:
 Model: Semua file model di application/models/
 View: Semua file tampilan di application/views/
 Controller: Semua file controller di application/controllers/

5. Routing di CodeIgniter
Routing berfungsi untuk menentukan rute URL tertentu yang akan memanggil
metode atau controller tertentu di CodeIgniter. Dengan routing, URL aplikasi
dapat dibuat lebih bersih dan user-friendly.
a. Penjelasan Routing Dasar
 Routing diatur di file application/config/routes.php.
 Rute default yang disediakan CodeIgniter:
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

o default_controller: Controller yang dipanggil saat mengakses root


URL.
o 404_override: Controller atau metode yang dipanggil jika URL
tidak ditemukan.
b. Custom URL Routing
 Anda bisa mengatur rute khusus dengan cara menetapkan URL tertentu
ke controller atau metode tertentu.
$route['produk'] = 'product'; // Memanggil controller Product
saat URL /produk

c. Parameter di Routing
 Routing juga bisa menerima parameter dinamis di URL, misalnya ID
produk.
$route['produk/(:num)'] = 'product/show/$1';

o (:num): Untuk menerima angka sebagai parameter (misal,


produk/1).
o (:any): Untuk menerima string apa pun.
d. Mengatur Route Default
 default_controller biasanya diatur ke controller utama, misalnya Home.
Jika ingin mengarahkan semua request ke controller Home, tambahkan:
$route['default_controller'] = 'home';

6. Membuat CRUD Sederhana


CRUD (Create, Read, Update, Delete) adalah fungsi dasar yang digunakan untuk
manipulasi data dalam aplikasi. Berikut adalah contoh implementasi CRUD
sederhana di CodeIgniter.
a. Membuat Database dan Tabel
 Buat database baru di MySQL, misalnya ci_crud.
 Buat tabel bernama items dengan struktur berikut:
CREATE TABLE items (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

b. Model CRUD
 Buat model ItemModel.php di folder application/models/.
<?php
class ItemModel extends CI_Model {
public function get_items() {
return $this->db->get('items')->result();
}
public function insert_item($data) {
return $this->db->insert('items', $data);
}
public function update_item($id, $data) {
$this->db->where('id', $id);
return $this->db->update('items', $data);
}
public function delete_item($id) {
$this->db->where('id', $id);
return $this->db->delete('items');
}
}

c. Membuat Controller CRUD


 Buat file Item.php di folder application/controllers/ untuk mengelola
CRUD.
<?php
class Item extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('ItemModel');
}
public function index() {
$data['items'] = $this->ItemModel->get_items();
$this->load->view('item_list', $data);
}
public function create() {
$data = array(
'name' => $this->input->post('name'),
'description' => $this->input->post('description')
);
$this->ItemModel->insert_item($data);
redirect('item');
}
public function edit($id) {
$data['item'] = $this->ItemModel->get_item_by_id($id);
$this->load->view('edit_item', $data);
}
public function update($id) {
$data = array(
'name' => $this->input->post('name'),
'description' => $this->input->post('description')
);
$this->ItemModel->update_item($id, $data);
redirect('item');
}
public function delete($id) {
$this->ItemModel->delete_item($id);
redirect('item');
}
}

d. Membuat View CRUD


 Buat file item_list.php di folder application/views/ untuk menampilkan
daftar item.
<html>
<head><title>Daftar Item</title></head>
<body>
<h1>Daftar Item</h1>
<a href="item/create">Tambah Item</a>
<ul>
<?php foreach ($items as $item): ?>
<li><?php echo $item->name; ?>
<a href="item/edit/<?php echo $item->id; ?
>">Edit</a>
<a href="item/delete/<?php echo $item->id; ?
>">Delete</a>
</li>
<?php endforeach; ?>
</ul>
</body>
</html>

e. Menampilkan CRUD di Halaman Web


 Pastikan database sudah terhubung dan URL routing diatur. Akses
http://localhost/nama_folder/item untuk melihat daftar item,
tambahkan, atau mengeditnya.
7. Form Handling di CodeIgniter
Form handling adalah proses untuk menangani input dari pengguna yang
dikirim melalui formulir (form) di halaman web. Di CodeIgniter, kita dapat
menangani form dengan bantuan form helper dan form validation.
a. Menangani Form Input
 Gunakan form helper untuk membuat elemen form.
 Di controller, kita bisa memproses input yang diterima dari form.
Contoh Pembuatan Form:
1. Buat view form di application/views/form_input.php:
<html>
<head><title>Form Input</title></head>
<body>
<form action="submit_form" method="POST">
<label>Nama:</label>
<input type="text" name="nama">
<label>Email:</label>
<input type="text" name="email">
<button type="submit">Submit</button>
</form>
</body>
</html>

2. Buat controller Form.php di application/controllers/ untuk menangani


form tersebut:
<?php
class Form extends CI_Controller {
public function index() {
$this->load->view('form_input');
}

public function submit_form() {


$nama = $this->input->post('nama');
$email = $this->input->post('email');
echo "Nama: $nama <br> Email: $email";
}
}

b. Validasi Form
Form validation digunakan untuk memastikan bahwa data yang diinput sesuai
dengan aturan yang kita buat.
1. Atur validasi di metode submit_form:
public function submit_form() {
$this->load->library('form_validation');
$this->form_validation->set_rules('nama', 'Nama',
'required|min_length[3]');
$this->form_validation->set_rules('email', 'Email',
'required|valid_email');

if ($this->form_validation->run() == FALSE) {
$this->load->view('form_input');
} else {
echo "Form berhasil disubmit!";
}
}

2. Tampilkan error di view form_input.php:


<?php echo validation_errors(); ?>

c. Membuat Form Validation Helper


 CodeIgniter memiliki beberapa helper bawaan yang dapat digunakan
dalam validasi form. Contoh: set_value() untuk menjaga input tetap ada
jika form tidak valid:
<input type="text" name="nama" value="<?php echo
set_value('nama'); ?>">

d. Error Handling pada Form


 Error handling pada form dilakukan dengan menampilkan pesan
kesalahan yang dihasilkan oleh form validation library. Gunakan
validation_errors() di view untuk menampilkan semua error.

8. Session dan Cookies


CodeIgniter menyediakan dukungan untuk session dan cookies untuk
mengelola data pengguna dalam aplikasi.
a. Menggunakan Session di CodeIgniter
 Session digunakan untuk menyimpan data pengguna sementara,
misalnya selama login.
1. Mengaktifkan Session: Di controller, session dapat digunakan dengan
memuat session library.
$this->load->library('session');

2. Menyimpan Data di Session: Untuk menyimpan data, gunakan


set_userdata():
$this->session->set_userdata('username', 'admin');

3. Mendapatkan Data dari Session: Untuk mengambil data session,


gunakan userdata():
$username = $this->session->userdata('username');

4. Menghapus Data di Session: Untuk menghapus data session tertentu


atau semua data session:
$this->session->unset_userdata('username'); // hapus satu data
$this->session->sess_destroy(); // hapus semua data

b. Pengaturan Cookies
Cookies digunakan untuk menyimpan data dalam waktu tertentu di browser
pengguna.
1. Menyimpan Cookie: Gunakan fungsi set_cookie() untuk menyimpan
cookie. Jangan lupa untuk memuat helper cookie:
$this->load->helper('cookie');
set_cookie('username', 'admin', 3600); // cookie selama 1 jam

2. Mendapatkan Cookie: Gunakan get_cookie() untuk mengambil nilai dari


cookie:
$username = get_cookie('username');

3. Menghapus Cookie: Gunakan delete_cookie() untuk menghapus cookie:


delete_cookie('username');

c. Membuat Authentication Sederhana dengan Session


Sebagai contoh sederhana, kita bisa membuat login dengan session.
1. View Login Form: Buat login_form.php:
<html>
<head><title>Login</title></head>
<body>
<form action="login" method="POST">
<label>Username:</label>
<input type="text" name="username">
<label>Password:</label>
<input type="password" name="password">
<button type="submit">Login</button>
</form>
</body>
</html>
2. Controller Login: Buat Auth.php di folder
application/controllers/:
<?php
class Auth extends CI_Controller {
public function login() {
$this->load->library('session');
$username = $this->input->post('username');
$password = $this->input->post('password');

if ($username == 'admin' && $password == 'password') {


$this->session->set_userdata('logged_in', TRUE);
echo "Login berhasil!";
} else {
echo "Username atau password salah!";
}
}

public function logout() {


$this->session->sess_destroy();
echo "Anda telah logout!";
}
}

9. Library dan Helper di CodeIgniter


CodeIgniter memiliki berbagai library dan helper yang membantu
mempermudah pengembangan aplikasi. Library adalah sekumpulan fungsi
yang lebih kompleks, sedangkan helper adalah sekumpulan fungsi yang spesifik
dan sederhana.
a. Menggunakan Library Bawaan
Library bawaan CodeIgniter dapat diakses melalui $this->load->library().
Contoh beberapa library bawaan:
1. Email Library: Library ini digunakan untuk mengirim email.
$this->load->library('email');
$this->email->from('[email protected]', 'Nama Anda');
$this->email->to('[email protected]');
$this->email->subject('Judul Email');
$this->email->message('Isi dari email');
$this->email->send();

2. Upload Library: Library ini digunakan untuk menangani upload file.


$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload', $config);

if (!$this->upload->do_upload('userfile')) {
echo $this->upload->display_errors();
} else {
$data = $this->upload->data();
echo "File berhasil diupload!";
}

3. Form Validation Library: Sudah dibahas sebelumnya, library ini


digunakan untuk validasi form.
b. Menggunakan Helper
Helper memiliki fungsi-fungsi yang lebih sederhana. Untuk menggunakan
helper, cukup panggil $this->load->helper().
1. URL Helper: URL helper berisi fungsi untuk mengelola URL, seperti
base_url() dan site_url().
$this->load->helper('url');
echo base_url('assets/css/style.css');

2. Form Helper: Membantu dalam membuat elemen form, seperti


form_open(), form_input(), dll.
php
Salin kode
$this->load->helper('form');
echo form_open('form/submit');
echo form_input(array('name' => 'username'));
echo form_close();
3. HTML Helper: Berisi fungsi untuk membuat elemen HTML.
$this->load->helper('html');
echo heading('Judul Halaman', 1);

c. Membuat Library atau Helper Kustom


Jika fungsi bawaan kurang sesuai, Anda bisa membuat library atau helper
kustom di folder application/libraries atau application/helpers.
 Library Kustom: Simpan di application/libraries/. Nama file harus
menggunakan huruf kapital, misalnya MyLibrary.php.
 Helper Kustom: Simpan di application/helpers/. Nama file bebas,
misalnya my_helper.php.
Contoh helper kustom di application/helpers/my_helper.php:
<?php
function format_rupiah($angka) {
return "Rp " . number_format($angka, 0, ',', '.');
}
Panggil helper tersebut di controller:
php
Salin kode
$this->load->helper('my_helper');
echo format_rupiah(10000);

10. Pagination di CodeIgniter


Pagination adalah cara untuk membagi data menjadi beberapa halaman. Ini
sangat berguna untuk menampilkan daftar data dalam jumlah besar.
a. Menggunakan Pagination Library
CodeIgniter menyediakan library pagination yang dapat digunakan untuk
menampilkan data dalam beberapa halaman.
1. Menambahkan Pagination: Contoh penggunaan pagination untuk
menampilkan daftar item.
2. Konfigurasi Pagination: Di controller, buat konfigurasi untuk pagination
dan tampilkan data yang telah dipisah per halaman.
<?php
class Item extends CI_Controller {
public function index() {
$this->load->library('pagination');
$config['base_url'] = base_url('item/index');
$config['total_rows'] = $this->db->count_all('items');
$config['per_page'] = 5;

$this->pagination->initialize($config);

$data['items'] = $this->db->get('items',
$config['per_page'], $this->uri->segment(3))->result();
$this->load->view('item_list', $data);
}
}

3. Menampilkan Pagination di View: Di view (item_list.php), tambahkan


link pagination.
<?php foreach ($items as $item): ?>
<p><?php echo $item->name; ?></p>
<?php endforeach; ?>

<div>
<?php echo $this->pagination->create_links(); ?>
</div>

4. Custom Pagination Style: Anda dapat mengatur gaya pagination dengan


menambahkan konfigurasi, seperti first_link, last_link, next_link, dan
prev_link.
11. Ajax dan JSON di CodeIgniter
Ajax memungkinkan aplikasi web untuk mengambil data dari server secara
asinkron tanpa harus memuat ulang halaman. Di CodeIgniter, Ajax dapat
diintegrasikan untuk memperbarui konten secara dinamis. JSON (JavaScript
Object Notation) adalah format data yang sering digunakan dalam pertukaran
data Ajax.
a. Menyiapkan Controller untuk Ajax
Controller di CodeIgniter dapat digunakan untuk mengirim respons JSON yang
diperlukan dalam permintaan Ajax.
1. Buat controller bernama AjaxController.php:
<?php
class AjaxController extends CI_Controller {
public function get_data() {
$data = array(
'status' => 'success',
'message' => 'Data berhasil diambil',
'data' => array(
'name' => 'Contoh Nama',
'email' => '[email protected]'
)
);
echo json_encode($data);
}
}

b. Menggunakan jQuery untuk Ajax Request


1. Tambahkan jQuery di view Anda, dan buat permintaan Ajax ke controller.
html
Salin kode
<html>
<head>
<title>Ajax Example</title>
<script src="https://code.jquery.com/jquery-
3.6.0.min.js"></script>
</head>
<body>
<button id="getDataButton">Get Data</button>
<div id="response"></div>

<script>
$(document).ready(function() {
$('#getDataButton').click(function() {
$.ajax({
url: 'AjaxController/get_data',
type: 'GET',
dataType: 'json',
success: function(response) {
$('#response').html('Name: ' +
response.data.name + '<br>Email: ' + response.data.email);
}
});
});
});
</script>
</body>
</html>

c. Mengirim Data dengan POST Method


1. Untuk mengirim data menggunakan POST, sesuaikan AjaxController:
public function post_data() {
$name = $this->input->post('name');
$response = array(
'status' => 'success',
'message' => "Data $name berhasil diterima"
);
echo json_encode($response);
}

2. Kirim data melalui Ajax dengan POST:


$.ajax({
url: 'AjaxController/post_data',
type: 'POST',
data: { name: 'Nama User' },
dataType: 'json',
success: function(response) {
$('#response').html(response.message);
}
});

12. Keamanan di CodeIgniter


Keamanan adalah hal penting dalam pengembangan aplikasi web. CodeIgniter
menyediakan fitur untuk membantu menjaga keamanan aplikasi.
a. CSRF Protection (Cross-Site Request Forgery)
 CSRF adalah serangan di mana pengguna yang diautentikasi secara tidak
sengaja mengirim permintaan berbahaya ke server.
 Aktifkan CSRF di application/config/config.php:
$config['csrf_protection'] = TRUE;

 Pada form, gunakan fungsi form_open() dari form helper agar token
CSRF secara otomatis ditambahkan:
echo form_open('controller/method');
b. XSS Filtering (Cross-Site Scripting)

 XSS adalah serangan yang memungkinkan injeksi kode JavaScript ke


dalam aplikasi.
 Aktifkan XSS filtering pada input pengguna:
$input = $this->input->post('input_name', TRUE);
c. SQL Injection Protection
 Gunakan Query Builder di CodeIgniter untuk menghindari SQL Injection.
$this->db->where('username', $username);
$query = $this->db->get('users');
d. Input Validation

 Validasi input untuk memastikan data yang masuk sesuai dengan yang diharapkan.
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username',
'required');

e. Enkripsi Data
 CodeIgniter menyediakan library enkripsi yang dapat digunakan untuk
mengenkripsi data penting.
$this->load->library('encryption');
$encrypted_text = $this->encryption->encrypt('My Secret
Text');
$decrypted_text = $this->encryption->decrypt($encrypted_text);

f. Konfigurasi Keamanan
 Error Reporting: Nonaktifkan error reporting pada production untuk
mencegah pengungkapan detail sistem.
ini_set('display_errors', 0);

 Session Security: Atur session untuk menggunakan cookies yang aman.


$config['sess_secure'] = TRUE;

Dengan fitur-fitur keamanan ini, aplikasi Anda akan lebih terlindungi dari
serangan umum.

13. Deployment CodeIgniter ke Server


Setelah selesai membangun aplikasi dengan CodeIgniter di lingkungan lokal,
langkah berikutnya adalah mendistribusikannya di server agar bisa diakses oleh
pengguna. Proses deployment ini mencakup beberapa tahap, mulai dari
mempersiapkan server, mengunggah file, hingga konfigurasi untuk memastikan
aplikasi berjalan dengan baik di lingkungan produksi.
a. Persiapan Server
1. Pilih Hosting atau Server:
o Anda dapat memilih antara shared hosting, VPS (Virtual Private
Server), atau dedicated server tergantung kebutuhan aplikasi.
o Pastikan server mendukung PHP dan memiliki database yang
sesuai dengan aplikasi Anda, seperti MySQL atau PostgreSQL.
2. Siapkan Domain dan SSL:
o Pilih nama domain dan, jika perlu, instal SSL untuk keamanan
tambahan. Sertifikat SSL bisa diaktifkan di cPanel atau melalui
penyedia SSL seperti Let's Encrypt.
b. Konfigurasi Aplikasi di CodeIgniter
1. Atur base_url:
o Buka file application/config/config.php dan sesuaikan base_url
dengan URL domain Anda.
$config['base_url'] = 'https://yourdomain.com/';

2. Konfigurasi Database:
o Buka file application/config/database.php dan sesuaikan
konfigurasi database sesuai dengan informasi server Anda:
$db['default'] = array(
'dsn' => '',
'hostname' => 'your_database_host',
'username' => 'your_database_username',
'password' => 'your_database_password',
'database' => 'your_database_name',
'dbdriver' => 'mysqli',
...
);

3. Atur Enkripsi dan Keamanan:


o Pastikan encryption_key diatur di application/config/config.php
untuk keamanan data yang lebih baik:
$config['encryption_key'] = 'your_unique_key';

4. Nonaktifkan Debugging di Production:


o Atur ENVIRONMENT menjadi production di file index.php agar
error tidak ditampilkan kepada pengguna.
define('ENVIRONMENT', 'production');

c. Mengunggah Aplikasi ke Server


1. Menggunakan cPanel (untuk Shared Hosting):
o Login ke cPanel Anda.
o Buka File Manager dan navigasikan ke public_html atau folder
yang diinginkan.
o Unggah seluruh file CodeIgniter (kecuali folder vendor jika Anda
menggunakan Composer).
o Ekstrak file ZIP jika Anda mengunggah aplikasi dalam format ZIP.
2. Menggunakan FTP:
o Gunakan aplikasi FTP seperti FileZilla.
o Hubungkan ke server dengan detail login FTP.
o Upload semua file ke public_html atau direktori root server Anda.
3. Deployment di VPS (Virtual Private Server):
o Akses server melalui SSH.
o Transfer file aplikasi menggunakan SCP atau FTP.
o Ekstrak dan pindahkan file ke direktori web server (misalnya
/var/www/html).
d. Konfigurasi .htaccess untuk CodeIgniter
CodeIgniter membutuhkan file .htaccess untuk menghilangkan index.php dari
URL. Buat atau edit file .htaccess di folder utama aplikasi Anda dengan konten
berikut:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

e. Pengaturan Permission
1. Pastikan folder application/cache dan application/logs memiliki
permission yang benar agar aplikasi bisa menulis ke folder ini.
chmod -R 755 application/cache
chmod -R 755 application/logs
2. Sesuaikan pengaturan permission agar tidak terlalu terbuka (misalnya
jangan gunakan 777 untuk alasan keamanan).
f. Tes Aplikasi di Server
1. Tes URL Aplikasi:
o Akses aplikasi melalui URL domain untuk memastikan semuanya
berjalan dengan baik.
o Periksa apakah halaman utama dan halaman lainnya bisa dibuka
tanpa error.
2. Tes Fungsi Utama:
o Coba fitur utama aplikasi, seperti login, pengiriman form, dan
akses database untuk memastikan semuanya berjalan sesuai yang
diharapkan.
g. Mengaktifkan SSL (Opsional)
Jika server mendukung SSL, tambahkan aturan .htaccess untuk memaksa akses
HTTPS:
RewriteEngine On

RewriteCond %{HTTPS} !=on


RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

h. Pemeliharaan dan Monitoring


Setelah aplikasi berjalan di server, penting untuk melakukan pemeliharaan
secara berkala:
1. Backup Data: Lakukan backup database dan file aplikasi secara rutin.
2. Monitoring: Gunakan layanan monitoring untuk memantau performa
aplikasi.
3. Update Framework: Pastikan CodeIgniter dan semua library di-update ke
versi terbaru untuk alasan keamanan.
14. Optimasi Performa Aplikasi CodeIgniter
Saat aplikasi CodeIgniter berjalan di server produksi, performa aplikasi sangat
penting untuk memastikan pengalaman pengguna yang baik, terutama jika
aplikasi memiliki banyak pengguna atau data yang besar. Berikut ini beberapa
langkah optimasi yang dapat diterapkan di CodeIgniter.
a. Caching di CodeIgniter
Caching memungkinkan aplikasi menyimpan hasil pemrosesan sementara,
sehingga tidak perlu melakukan pemrosesan ulang untuk permintaan yang
sama.
1. Mengaktifkan Caching Page:
o Di CodeIgniter, Anda dapat mengaktifkan caching halaman dengan
menambahkan kode ini di controller:
$this->output->cache(60); // Menyimpan cache selama 60 menit
o File cache akan disimpan di application/cache/.
2. Menghapus Cache Secara Manual:
o Jika Anda ingin menghapus cache pada halaman tertentu,
gunakan:
$this->output->delete_cache('/nama_controller/nama_metode');
b. Optimasi Database
1. Gunakan Query Builder:
o Query Builder CodeIgniter tidak hanya lebih aman tetapi juga
memiliki optimasi bawaan. Misalnya:
$query = $this->db->get('users'); // Alih-alih menulis query mentah

2. Indeks Database:
o Indeks pada kolom tabel akan mempercepat pencarian. Atur
kolom yang sering dicari sebagai indeks di database (misalnya
kolom id atau username).
3. Batasi Pengambilan Data:
o Gunakan fungsi limit() untuk membatasi jumlah data yang diambil
dari database.
$this->db->limit(10);

4. Gunakan Pagination:
o Untuk mencegah pengambilan semua data sekaligus, terapkan
pagination seperti yang dijelaskan pada materi pagination
sebelumnya.
5. Caching Query:
o Beberapa query yang tidak sering berubah dapat disimpan di
cache menggunakan fungsi query caching di database server,
seperti MySQL Query Cache.
c. Optimasi Code di Controller dan Model
1. Minimalkan Jumlah Query di Controller:
o Usahakan agar kode di controller sesederhana mungkin dan
tempatkan logika bisnis di model.
2. Menghindari Penggunaan Query di Loop:
o Penggunaan query di dalam loop dapat membuat aplikasi menjadi
lambat. Gabungkan query atau gunakan metode JOIN untuk
mengurangi jumlah query.
3. Gunakan Autoload Secara Bijak:
o Hanya autoload library atau helper yang benar-benar dibutuhkan
di application/config/autoload.php.
d. Kompresi Output
1. Aktifkan Kompresi Gzip:
o CodeIgniter dapat mengaktifkan kompresi Gzip untuk memperkecil
ukuran data yang dikirim dari server ke pengguna.
o Di application/config/config.php, aktifkan opsi kompresi:

$config['compress_output'] = TRUE;

2. Minifikasi CSS dan JavaScript:


o Gunakan alat minifikasi untuk mengurangi ukuran file CSS dan
JavaScript. Minifikasi dapat dilakukan melalui tools online atau
task runner seperti Gulp atau webpack.
e. Mengoptimalkan Penggunaan Session
1. Pilih Driver Session yang Tepat:
o Gunakan session yang disimpan di database jika aplikasi Anda
membutuhkan skalabilitas. Konfigurasi driver session di
application/config/config.php:
$config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions';

2. Atur Waktu Expired Session:


o Atur waktu expired session secara bijak agar sesi pengguna tidak
terus tersimpan dan memenuhi storage.
f. Menggunakan Content Delivery Network (CDN)
1. Host Asset di CDN:
o Pindahkan file statis seperti gambar, CSS, dan JavaScript ke CDN
untuk mempercepat pengiriman konten ke pengguna.
2. Optimalkan Gambar:
o Gunakan gambar berukuran kecil, format yang efisien (misalnya
WebP), atau kompres gambar untuk mengurangi ukuran file.
g. Lazy Loading untuk Gambar dan Elemen Berat
Lazy loading adalah teknik yang menunda pemuatan gambar atau elemen berat
lainnya sampai benar-benar diperlukan.
1. Lazy Load untuk Gambar:
o Gunakan atribut loading="lazy" pada elemen <img> di HTML.
<img src="path/to/image.jpg" loading="lazy" alt="Contoh Gambar">

h. Gunakan Asynchronous untuk Asset Eksternal


Jika aplikasi menggunakan library eksternal seperti Google Analytics atau iklan,
muat asset tersebut secara asynchronous agar tidak memperlambat pemuatan
halaman.
1. Script Async:
<script async src="https://example.com/script.js"></script>

i. Monitoring dan Profiling Aplikasi


1. Menggunakan Profiler CodeIgniter:
o CodeIgniter memiliki alat profiler bawaan yang dapat membantu
Anda melihat waktu pemrosesan, jumlah query, dan data lainnya.
Untuk mengaktifkan profiler, tambahkan ini di controller:
$this->output->enable_profiler(TRUE);

2. Gunakan Alat Monitoring Pihak Ketiga:


o Anda bisa menggunakan alat seperti New Relic atau Google
PageSpeed Insights untuk memonitor performa aplikasi di
lingkungan produksi.

15. Membangun REST API di CodeIgniter


REST API (Representational State Transfer) memungkinkan aplikasi lain untuk
berkomunikasi dengan aplikasi Anda melalui HTTP, seperti GET, POST, PUT, dan
DELETE. CodeIgniter dapat digunakan untuk membangun REST API yang efisien,
sehingga aplikasi dapat berinteraksi dengan aplikasi lain, baik itu aplikasi web,
mobile, atau aplikasi pihak ketiga lainnya.
a. Konfigurasi Awal untuk REST API
1. Siapkan Struktur Database:
o Pastikan database sudah diatur dengan tabel yang akan digunakan
oleh API. Misalnya, kita menggunakan tabel users untuk API
pengguna.
2. Mengatur Controller API:
o Buat controller baru untuk mengatur API. Misalnya, buat
Users.php di folder application/controllers:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Users extends CI_Controller {


public function __construct() {
parent::__construct();
$this->load->model('User_model');
header("Content-Type: application/json"); // Mengatur konten
tipe sebagai JSON
}
}

b. Membuat Fungsi CRUD API


1. GET (Menampilkan Data):
o Fungsi GET digunakan untuk mengambil data. Misalnya, kita akan
membuat fungsi untuk mengambil data pengguna berdasarkan id.
public function get_user($id = null) {
if ($id === null) {
$data = $this->User_model->get_all_users();
} else {
$data = $this->User_model->get_user($id);
}
echo json_encode($data);
}

2. POST (Membuat Data Baru):


o Fungsi POST digunakan untuk menambah data baru. Pastikan data
dikirim dalam format JSON.
public function create_user() {
$input = json_decode($this->input->raw_input_stream, true);
$response = $this->User_model->insert_user($input);
echo json_encode($response);
}

3. PUT (Memperbarui Data):


o Fungsi PUT digunakan untuk memperbarui data yang ada. Data
yang diperbarui biasanya dikirim dengan format JSON.
public function update_user($id) {
$input = json_decode($this->input->raw_input_stream, true);
$response = $this->User_model->update_user($id, $input);
echo json_encode($response);
}

4. DELETE (Menghapus Data):


o Fungsi DELETE digunakan untuk menghapus data berdasarkan id.
public function delete_user($id) {
$response = $this->User_model->delete_user($id);
echo json_encode($response);
}

c. Membuat Model untuk Operasi CRUD


Di CodeIgniter, model digunakan untuk mengelola interaksi dengan database.
Berikut adalah contoh model User_model.php yang mengatur CRUD.
<?php
class User_model extends CI_Model {
public function get_all_users() {
return $this->db->get('users')->result_array();
}

public function get_user($id) {


return $this->db->get_where('users', array('id' => $id))-
>row_array();
}

public function insert_user($data) {


return $this->db->insert('users', $data);
}

public function update_user($id, $data) {


$this->db->where('id', $id);
return $this->db->update('users', $data);
}
public function delete_user($id) {
$this->db->where('id', $id);
return $this->db->delete('users');
}
}

d. Mengakses API dengan URL


Akses API sesuai dengan metode HTTP yang ingin Anda gunakan:
 GET: https://domainanda.com/users/get_user/1
 POST: https://domainanda.com/users/create_user dengan data JSON.
 PUT: https://domainanda.com/users/update_user/1 dengan data JSON.
 DELETE: https://domainanda.com/users/delete_user/1
e. Menambahkan Autentikasi untuk Keamanan API
Untuk meningkatkan keamanan API, Anda bisa menambahkan token-based
authentication dengan mengirimkan token dalam setiap permintaan API.
1. Menghasilkan Token API:
o Saat pengguna login, buat token unik menggunakan library
enkripsi CodeIgniter atau token yang di-generate.
$token = bin2hex(openssl_random_pseudo_bytes(16));
2. Validasi Token di Controller:
o Periksa token dalam setiap request dengan metode yang tepat:
private function authenticate() {
$headers = $this->input->request_headers();
if (isset($headers['Authorization']) &&
$headers['Authorization'] === 'Bearer ' . 'your_token') {
return true;
}
return false;
}

f. Penanganan Error dan Response


1. Mengatur Status Kode HTTP:
o Gunakan kode status HTTP untuk setiap respons, misalnya:
http_response_code(404); // Not found
echo json_encode(array('error' => 'Data not found'));
2. Standarisasi Format Respons:
o Gunakan format respons yang konsisten agar lebih mudah
dipahami oleh pengembang lain:
$response = array(
'status' => 'success',
'data' => $data
);
echo json_encode($response);

15. Membangun REST API di CodeIgniter


REST API (Representational State Transfer) memungkinkan aplikasi lain untuk
berkomunikasi dengan aplikasi Anda melalui HTTP, seperti GET, POST, PUT, dan
DELETE. CodeIgniter dapat digunakan untuk membangun REST API yang efisien,
sehingga aplikasi dapat berinteraksi dengan aplikasi lain, baik itu aplikasi web,
mobile, atau aplikasi pihak ketiga lainnya.
a. Konfigurasi Awal untuk REST API
1. Siapkan Struktur Database:
o Pastikan database sudah diatur dengan tabel yang akan digunakan
oleh API. Misalnya, kita menggunakan tabel users untuk API
pengguna.
2. Mengatur Controller API:
o Buat controller baru untuk mengatur API. Misalnya, buat
Users.php di folder application/controllers:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Users extends CI_Controller {


public function __construct() {
parent::__construct();
$this->load->model('User_model');
header("Content-Type: application/json"); // Mengatur konten
tipe sebagai JSON
}
}

b. Membuat Fungsi CRUD API


1. GET (Menampilkan Data):
o Fungsi GET digunakan untuk mengambil data. Misalnya, kita akan
membuat fungsi untuk mengambil data pengguna berdasarkan id.
public function get_user($id = null) {
if ($id === null) {
$data = $this->User_model->get_all_users();
} else {
$data = $this->User_model->get_user($id);
}
echo json_encode($data);
}

2. POST (Membuat Data Baru):


o Fungsi POST digunakan untuk menambah data baru. Pastikan data
dikirim dalam format JSON.
public function create_user() {
$input = json_decode($this->input->raw_input_stream, true);
$response = $this->User_model->insert_user($input);
echo json_encode($response);
}

3. PUT (Memperbarui Data):


o Fungsi PUT digunakan untuk memperbarui data yang ada. Data
yang diperbarui biasanya dikirim dengan format JSON.
public function update_user($id) {
$input = json_decode($this->input->raw_input_stream, true);
$response = $this->User_model->update_user($id, $input);
echo json_encode($response);
}

4. DELETE (Menghapus Data):


o Fungsi DELETE digunakan untuk menghapus data berdasarkan id.
public function delete_user($id) {
$response = $this->User_model->delete_user($id);
echo json_encode($response);
}

c. Membuat Model untuk Operasi CRUD


Di CodeIgniter, model digunakan untuk mengelola interaksi dengan database.
Berikut adalah contoh model User_model.php yang mengatur CRUD.
<?php
class User_model extends CI_Model {
public function get_all_users() {
return $this->db->get('users')->result_array();
}

public function get_user($id) {


return $this->db->get_where('users', array('id' => $id))-
>row_array();
}

public function insert_user($data) {


return $this->db->insert('users', $data);
}

public function update_user($id, $data) {


$this->db->where('id', $id);
return $this->db->update('users', $data);
}

public function delete_user($id) {


$this->db->where('id', $id);
return $this->db->delete('users');
}
}

d. Mengakses API dengan URL


Akses API sesuai dengan metode HTTP yang ingin Anda gunakan:
 GET: https://domainanda.com/users/get_user/1
 POST: https://domainanda.com/users/create_user dengan data JSON.
 PUT: https://domainanda.com/users/update_user/1 dengan data JSON.
 DELETE: https://domainanda.com/users/delete_user/1
e. Menambahkan Autentikasi untuk Keamanan API
Untuk meningkatkan keamanan API, Anda bisa menambahkan token-based
authentication dengan mengirimkan token dalam setiap permintaan API.
1. Menghasilkan Token API:
o Saat pengguna login, buat token unik menggunakan library
enkripsi CodeIgniter atau token yang di-generate.
$token = bin2hex(openssl_random_pseudo_bytes(16));

2. Validasi Token di Controller:


o Periksa token dalam setiap request dengan metode yang tepat:
private function authenticate() {
$headers = $this->input->request_headers();
if (isset($headers['Authorization']) &&
$headers['Authorization'] === 'Bearer ' . 'your_token') {
return true;
}
return false;
}

f. Penanganan Error dan Response


1. Mengatur Status Kode HTTP:
o Gunakan kode status HTTP untuk setiap respons, misalnya:
http_response_code(404); // Not found
echo json_encode(array('error' => 'Data not found'));

2. Standarisasi Format Respons:


o Gunakan format respons yang konsisten agar lebih mudah
dipahami oleh pengembang lain:
$response = array(
'status' => 'success',
'data' => $data
);
echo json_encode($response);

Anda mungkin juga menyukai