Modul 02: Konfigurasi CodeIgniter 3

Konfigurasi Berkas Sistem CodeIgniter 3 (Fokus Baris yang Diubah)

Berkas konfigurasi bawaan CodeIgniter 3 memiliki ratusan baris komentar petunjuk. Agar siswa tidak bingung atau merasa kepanjangan, halaman ini hanya menampilkan baris-baris spesifik yang wajib diubah beserta nomor baris dan penjelasan fungsi logisnya.

Fokus Materi: Edit 5 Berkas Inti Lokasi: application/config/ Metode: Edit Baris Tertentu Saja
1

1. Mengatur Alamat Web, URL Bersih & Kunci Sesi: config.php

Buka di Sublime Text 3: application/config/config.php

💡 Panduan Siswa: Buka file config.php, tekan Ctrl + F untuk mencari kata kunci berikut, lalu ubah nilainya persis seperti kotak kode di bawah.
A. Mengatur Dynamic Base URL (Sekitar Baris 25–27)

Cari baris $config['base_url'] = '';. Ganti baris tersebut dengan logika dinamis ini agar aplikasi otomatis mendeteksi alamat localhost maupun port komputer tanpa perlu diubah manual jika dipindah ke laptop lain:

Config Base URL
Gambar: Menyesuaikan dynamic base_url pada config.php di Sublime Text 3.
application/config/config.php (Baris 25-27)
PHP
// Ganti baris $config['base_url'] = ''; menjadi 3 baris di bawah ini:
$root = "http://" . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost');
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);
$config['base_url'] = $root;
💡 Catatan: Baris komentar (// atau /* */) bersifat opsional/penjelas logika. Tidak wajib diketik semua agar lebih cepat.

Penjelasan: $_SERVER['HTTP_HOST'] membaca nama domain/IP lokal, dan basename(...) memastikan jalur sub-folder (/perpustakaan/) terbaca otomatis.

B. Menghapus index.php dari URL (Sekitar Baris 38)

Cari baris $config['index_page'] = 'index.php';. Kosongkan nilai string di dalamnya:

application/config/config.php (Baris 38) PHP
// Ubah 'index.php' menjadi string kosong agar URL bersih:
$config['index_page'] = '';
💡 Catatan: Baris komentar (// atau /* */) bersifat opsional/penjelas logika. Tidak wajib diketik semua agar lebih cepat.

Penjelasan: Menghilangkan keharusan mengetik index.php/login sehingga URL menjadi singkat dan rapi: localhost/perpustakaan/login.

C. Mengisi Kunci Enkripsi Keamanan Sesi (Sekitar Baris 326)

Cari baris $config['encryption_key'] = '';. Isi dengan string acak pengaman:

application/config/config.php (Baris 326) PHP
// Kunci enkripsi wajib untuk menjaga integritas session login:
$config['encryption_key'] = 'sipas_ukk_perpustakaan_key_2026_sekolah_digital';
💡 Catatan: Baris komentar (// atau /* */) bersifat opsional/penjelas logika. Tidak wajib diketik semua agar lebih cepat.
2

2. Menghubungkan CodeIgniter ke MySQL: database.php

Buka di Sublime Text 3: application/config/database.php

Scroll ke bagian bawah (sekitar baris 75–90), temukan array $db['default']. Cukup ubah 4 baris konfigurasi berikut:

application/config/database.php (Baris 78-83) PHP
$db['default'] = array(
	'dsn'	   => '',
	'hostname' => 'localhost',         // Server database lokal
	'username' => 'root',              // Username bawaan XAMPP adalah root
	'password' => '',                  // Password bawaan XAMPP dikosongkan
	'database' => 'db_perpustakaan',   // Sesuaikan jika Anda memakai prefix nama sendiri (contoh: db_perpustakaan_andi)
	'dbdriver' => 'mysqli',            // Driver PHP MySQLi
    ...
);
💡 Catatan: Baris komentar (// atau /* */) bersifat opsional/penjelas logika. Tidak wajib diketik semua agar lebih cepat.
⚠️ Peringatan Sinkronisasi Ujian Mandiri:
Nilai pada 'database' => '...' harus sama persis dengan nama database yang Anda buat di phpMyAdmin pada Modul 01.
• Jika saat Modul 01 Anda membuat db_perpustakaan, tulis: 'database' => 'db_perpustakaan'.
• Jika saat Modul 01 Anda menambahkan prefix nama sendiri (misal: db_perpustakaan_andi), maka tulis persis: 'database' => 'db_perpustakaan_andi'.
3

3. Memuat Library & Helper Otomatis: autoload.php

Buka di Sublime Text 3: application/config/autoload.php

Tanpa autoload, Anda harus memanggil $this->load->library('database') di setiap controller. Dengan autoload, modul yang sering dipakai langsung aktif otomatis:

A. Autoload Libraries (Sekitar Baris 61)

Cari $autoload['libraries'] = array();, isi dengan:

application/config/autoload.php (Baris 61) PHP
// Memuat koneksi database, session login, dan validator form di semua controller:
$autoload['libraries'] = array('database', 'session', 'form_validation');
💡 Catatan: Baris komentar (// atau /* */) bersifat opsional/penjelas logika. Tidak wajib diketik semua agar lebih cepat.
B. Autoload Helpers (Sekitar Baris 92)

Cari $autoload['helper'] = array();, isi dengan:

application/config/autoload.php (Baris 92) PHP
// Memuat fungsi base_url(), form_open(), dan auth helper buatan kita:
$autoload['helper'] = array('url', 'form', 'text', 'auth');
💡 Catatan: Baris komentar (// atau /* */) bersifat opsional/penjelas logika. Tidak wajib diketik semua agar lebih cepat.
4

4. Pemetaan Alamat URL Web: routes.php

Buka di Sublime Text 3: application/config/routes.php

📍 Posisi Pasti Penempatan Kode di routes.php:
  1. Buka berkas application/config/routes.php di Sublime Text 3.
  2. Scroll ke bagian paling bawah berkas (sekitar baris 52–54).
  3. Temukan 3 baris bawaan CodeIgniter 3:
    $route['default_controller'] = 'welcome';
    $route['404_override'] = '';
    $route['translate_uri_dashes'] = FALSE;
  4. Ubah 'welcome' menjadi 'auth/login', dan ubah $route['404_override'] menjadi 'errors/page_missing'.
  5. Tepat di bawah baris 54 (setelah $route['translate_uri_dashes'] = FALSE;), tekan Enter untuk membuat baris kosong baru, lalu tambahkan seluruh blok rute berikut:
application/config/routes.php (Mulai Baris 52 hingga Paling Bawah) PHP
// =========================================================================
// 1. TIGA BARIS DEFAULT ASLI BAWAAN (UBAH NILAINYA):
// =========================================================================
$route['default_controller'] = 'auth/login';           // Arahkan halaman utama ke login
$route['404_override']       = 'errors/page_missing';  // Halaman 404 khusus jika URL salah
$route['translate_uri_dashes'] = FALSE;

// =========================================================================
// 2. TAMBAHKAN BARIS-BARIS BARU BERIKUT PERSIS DI BAWAHNYA:
// =========================================================================

// --- A. Rute Autentikasi Pengguna ---
$route['login']    = 'auth/login';      // URL: localhost/perpustakaan/login
$route['register'] = 'auth/register';   // URL: localhost/perpustakaan/register
$route['logout']   = 'auth/logout';     // URL: localhost/perpustakaan/logout

// --- B. Rute Modul Administrator (/admin/...) ---
$route['admin/dashboard']                       = 'admin/dashboard/index';
$route['admin/buku']                            = 'admin/buku/index';
$route['admin/buku/tambah']                     = 'admin/buku/tambah';
$route['admin/buku/edit/(:num)']                = 'admin/buku/edit/$1';
$route['admin/buku/detail/(:num)']              = 'admin/buku/detail/$1';
$route['admin/buku/hapus/(:num)']               = 'admin/buku/hapus/$1';
$route['admin/anggota']                         = 'admin/anggota/index';
$route['admin/anggota/tambah']                  = 'admin/anggota/tambah';
$route['admin/anggota/edit/(:num)']             = 'admin/anggota/edit/$1';
$route['admin/anggota/detail/(:num)']           = 'admin/anggota/detail/$1';
$route['admin/anggota/hapus/(:num)']            = 'admin/anggota/hapus/$1';
$route['admin/transaksi']                       = 'admin/transaksi/index';
$route['admin/transaksi/detail/(:num)']         = 'admin/transaksi/detail/$1';
$route['admin/transaksi/proses_kembali/(:num)'] = 'admin/transaksi/proses_kembali/$1';

// --- C. Rute Modul Anggota Siswa (/user/...) ---
$route['user/dashboard']                        = 'user/dashboard/index';
$route['user/buku']                             = 'user/buku/index';
$route['user/buku/detail/(:num)']               = 'user/buku/detail/$1';
$route['user/buku/pinjam/(:num)']               = 'user/buku/pinjam/$1';
$route['user/peminjaman']                       = 'user/peminjaman/index';
$route['user/peminjaman/kembalikan/(:num)']     = 'user/peminjaman/kembalikan/$1';
$route['user/riwayat']                          = 'user/peminjaman/riwayat';
$route['user/profil']                           = 'user/profil/index';
💡 Catatan: Baris komentar (// atau /* */) bersifat opsional/penjelas logika. Tidak wajib diketik semua agar lebih cepat.

💡 Makna Kode (:num): Merepresentasikan parameter angka dinamis (ID data buku atau ID transaksi) yang dikirimkan via URL dan diterima oleh fungsi PHP sebagai variabel $1.

5

5. Berkas Rewrite Web Server: .htaccess

Buat berkas baru di folder root: C:\xampp\htdocs\perpustakaan\.htaccess

Di Sublime Text 3, pilih File → New File, lalu simpan (Ctrl + S) dengan nama persis .htaccess (diawali tanda titik) di dalam folder utama perpustakaan/:

.htaccess (Letakkan di folder root sejajar dengan index.php) APACHE CONF
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
💡 Catatan: Baris komentar (// atau /* */) bersifat opsional/penjelas logika. Tidak wajib diketik semua agar lebih cepat.

Penjelasan: Modul rewrite Apache ini bertugas mengalihkan seluruh permintaan URL browser langsung ke index.php di belakang layar secara transparan tanpa perlu terlihat di address bar.