Codeigniter
Codeigniter
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 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);
}
}
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;
c. Parameter di Routing
Routing juga bisa menerima parameter dinamis di URL, misalnya ID
produk.
$route['produk/(:num)'] = 'product/show/$1';
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');
}
}
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!";
}
}
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
if (!$this->upload->do_upload('userfile')) {
echo $this->upload->display_errors();
} else {
$data = $this->upload->data();
echo "File berhasil diupload!";
}
$this->pagination->initialize($config);
$data['items'] = $this->db->get('items',
$config['per_page'], $this->uri->segment(3))->result();
$this->load->view('item_list', $data);
}
}
<div>
<?php echo $this->pagination->create_links(); ?>
</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>
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)
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);
Dengan fitur-fitur keamanan ini, aplikasi Anda akan lebih terlindungi dari
serangan umum.
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',
...
);
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
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;