Routing, Request/Response, dan Session pada CodeIgniter
⚙️ Routing, Request/Response, dan Session pada CodeIgniter 4
Mengenal arsitektur dan alur kerja inti CodeIgniter 4 dalam menangani permintaan (request) dan respon (response), serta manajemen sesi pengguna.
🛣️ 1. Routing di CodeIgniter 4
Routing adalah mekanisme untuk menentukan URL mana yang memanggil controller dan method tertentu. Semua pengaturan rute berada di file:
app/Config/Routes.php
Contoh dasar routing:
$routes->get('/', 'Home::index');
$routes->get('/about', 'PageController::about');
$routes->post('/user/login', 'UserController::login');
Keterangan:
- $routes->get() → digunakan untuk permintaan HTTP GET.
- $routes->post() → digunakan untuk permintaan HTTP POST.
- 'Home::index' → memanggil controller
Homedan methodindex().
✨ Routing dengan Parameter
$routes->get('/user/(:num)', 'UserController::profile/$1');
(:num) digunakan untuk menerima parameter numerik. Nilainya akan diteruskan ke method controller.
🔒 Routing dengan Filter
$routes->get('/dashboard', 'AdminController::index', ['filter' => 'auth']);
Filter auth akan memeriksa apakah pengguna sudah login sebelum mengakses /dashboard.
📨 2. Request dan Response
CI4 menyediakan class Request untuk menangani data dari browser, dan class Response untuk mengirimkan data kembali ke client.
📥 Request Object
Untuk mendapatkan data dari form, URL, atau header:
$request = \Config\Services::request();
// Ambil data GET
$name = $request->getGet('name');
// Ambil data POST
$email = $request->getPost('email');
// Ambil semua input
$data = $request->getVar();
📤 Response Object
Digunakan untuk mengirimkan respon balik ke client:
$response = \Config\Services::response();
return $response->setJSON(['status' => 'success', 'message' => 'Data berhasil disimpan']);
Kita juga dapat mengatur status code HTTP:
return $response->setStatusCode(404, 'Not Found');
🔐 3. Session di CodeIgniter 4
Session digunakan untuk menyimpan data pengguna sementara di server. Biasanya dipakai untuk login, notifikasi, dan data antar halaman.
🧩 Mengaktifkan Session
Session sudah aktif secara default. Namun, kita dapat memanggil service-nya secara manual:
$session = \Config\Services::session();
💾 Menyimpan dan Mengambil Data Session
// Simpan data ke session
$session->set('username', 'DeltaMarena');
// Ambil data session
$user = $session->get('username');
// Hapus session tertentu
$session->remove('username');
// Hapus semua session
$session->destroy();
⏰ 4. Auto Logout (Session Timeout)
Fitur ini berguna agar pengguna otomatis logout jika halaman tidak disentuh selama 5 menit. Hal ini meningkatkan keamanan terutama untuk aplikasi login multiuser.
⚙️ Langkah 1 – Atur Session Timeout di .env
app.sessionExpiration = 300
Nilai 300 berarti session akan kadaluarsa setelah 300 detik (5 menit).
⚙️ Langkah 2 – Buat Filter Auto Logout
Tambahkan file baru di:
app/Filters/AutoLogoutFilter.php
Isi kodenya:
namespace App\Filters;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;
class AutoLogoutFilter implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
$session = session();
// Jika user belum login
if (!$session->get('isLoggedIn')) {
return redirect()->to('/login');
}
$inactive = 300; // 5 menit
$lastActivity = $session->get('lastActivity');
if ($lastActivity && (time() - $lastActivity > $inactive)) {
$session->destroy();
return redirect()->to('/login')->with('error', 'Session habis, silakan login kembali.');
}
// Update waktu aktivitas terakhir
$session->set('lastActivity', time());
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
}
}
⚙️ Langkah 3 – Daftarkan Filter
Buka app/Config/Filters.php dan daftarkan:
public array $aliases = [
'csrf' => \CodeIgniter\Filters\CSRF::class,
'toolbar' => \CodeIgniter\Filters\DebugToolbar::class,
'auth' => \App\Filters\AuthFilter::class,
'autologout' => \App\Filters\AutoLogoutFilter::class,
];
⚙️ Langkah 4 – Terapkan pada Routing
$routes->get('/dashboard', 'DashboardController::index', ['filter' => ['auth', 'autologout']]);
Sekarang, jika pengguna tidak aktif selama 5 menit, session otomatis habis dan diarahkan ke halaman login.
🚀 Kesimpulan
Routing, Request/Response, dan Session adalah tiga komponen penting dalam alur kerja CodeIgniter 4. Dengan memahami ketiganya, pengembang dapat membuat aplikasi yang dinamis, interaktif, dan aman.
- 🔹 Routing mengatur arah permintaan ke controller tertentu.
- 🔹 Request/Response menangani komunikasi antara client dan server.
- 🔹 Session menyimpan data pengguna sementara.
- 🔹 Auto Logout menjaga keamanan dengan membatasi waktu aktif pengguna.
Dengan pemahaman yang baik terhadap konsep-konsep ini, kamu siap membangun aplikasi web profesional menggunakan CodeIgniter 4.
