<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
	<title><![CDATA[Catatan Harian: Routing, Request/Response, dan Session pada CodeIgniter}]]></title>
	<link>https://sharka.site/3blog/pages/view/63/routing-requestresponse-dan-session-pada-codeigniter</link>
	<atom:link href="https://sharka.site/3blog/pages/view/63/routing-requestresponse-dan-session-pada-codeigniter" rel="self" type="application/rss+xml" />
	<description><![CDATA[}]]></description>
		<item>
	<guid isPermaLink="true">https://sharka.site/3blog/pages/view/63/routing-requestresponse-dan-session-pada-codeigniter</guid>
	<pubDate>Wed, 22 Oct 2025 17:45:24 +0800</pubDate>
	<link>https://sharka.site/3blog/pages/view/63/routing-requestresponse-dan-session-pada-codeigniter</link>
	<title><![CDATA[Routing, Request/Response, dan Session pada CodeIgniter]]></title>
	<description><![CDATA[<div style="color:#222;font-family:'Poppins','Segoe UI',Roboto,system-ui,sans-serif;line-height:1.7;margin:0 auto;max-width:900px;"><div style="background-color:#f1f5ff;border-radius:12px;box-shadow:0 6px 18px rgba(2,62,138,0.06);color:#023e8a;padding:24px 20px;text-align:center;"><h2 style="font-size:20px;margin:0;">⚙️ <strong>Routing, Request/Response, dan Session pada CodeIgniter 4</strong></h2><p style="color:#014f86;font-size:14px;margin:8px 0 0;">Mengenal arsitektur dan alur kerja inti CodeIgniter 4 dalam menangani permintaan (request) dan respon (response), serta manajemen sesi pengguna.</p></div><div style="font-size:15px;margin-top:20px;"><h3 style="color:#023e8a;margin-top:18px;">🛣️ 1. Routing di CodeIgniter 4</h3><p>Routing adalah mekanisme untuk menentukan <strong>URL mana yang memanggil controller dan method tertentu</strong>. Semua pengaturan rute berada di file:</p><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">app/Config/Routes.php
        </pre><p>Contoh dasar routing:</p><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">$routes-&gt;get('/', 'Home::index');
$routes-&gt;get('/about', 'PageController::about');
$routes-&gt;post('/user/login', 'UserController::login');
        </pre><p>Keterangan:</p><ul><li><strong>$routes-&gt;get()</strong> → digunakan untuk permintaan HTTP GET.</li><li><strong>$routes-&gt;post()</strong> → digunakan untuk permintaan HTTP POST.</li><li><strong>'Home::index'</strong> → memanggil controller <code>Home</code> dan method <code>index()</code>.</li></ul><h4 style="color:#023e8a;margin-top:16px;">✨ Routing dengan Parameter</h4><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">$routes-&gt;get('/user/(:num)', 'UserController::profile/$1');
        </pre><p><code>(:num)</code> digunakan untuk menerima parameter numerik. Nilainya akan diteruskan ke method controller.</p><h4 style="color:#023e8a;margin-top:16px;">🔒 Routing dengan Filter</h4><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">$routes-&gt;get('/dashboard', 'AdminController::index', ['filter' =&gt; 'auth']);
        </pre><p>Filter <strong>auth</strong> akan memeriksa apakah pengguna sudah login sebelum mengakses <code>/dashboard</code>.</p><hr><h3 style="color:#023e8a;margin-top:18px;">📨 2. Request dan Response</h3><p>CI4 menyediakan class <strong>Request</strong> untuk menangani data dari browser, dan class <strong>Response</strong> untuk mengirimkan data kembali ke client.</p><h4 style="color:#023e8a;margin-top:16px;">📥 Request Object</h4><p>Untuk mendapatkan data dari form, URL, atau header:</p><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">$request = \Config\Services::request();

// Ambil data GET
$name = $request-&gt;getGet('name');

// Ambil data POST
$email = $request-&gt;getPost('email');

// Ambil semua input
$data = $request-&gt;getVar();
        </pre><h4 style="color:#023e8a;margin-top:16px;">📤 Response Object</h4><p>Digunakan untuk mengirimkan respon balik ke client:</p><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">$response = \Config\Services::response();
return $response-&gt;setJSON(['status' =&gt; 'success', 'message' =&gt; 'Data berhasil disimpan']);
        </pre><p>Kita juga dapat mengatur status code HTTP:</p><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">return $response-&gt;setStatusCode(404, 'Not Found');
        </pre><hr><h3 style="color:#023e8a;margin-top:18px;">🔐 3. Session di CodeIgniter 4</h3><p><strong>Session</strong> digunakan untuk menyimpan data pengguna sementara di server. Biasanya dipakai untuk login, notifikasi, dan data antar halaman.</p><h4 style="color:#023e8a;margin-top:16px;">🧩 Mengaktifkan Session</h4><p>Session sudah aktif secara default. Namun, kita dapat memanggil service-nya secara manual:</p><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">$session = \Config\Services::session();
        </pre><h4 style="color:#023e8a;margin-top:16px;">💾 Menyimpan dan Mengambil Data Session</h4><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">// Simpan data ke session
$session-&gt;set('username', 'DeltaMarena');

// Ambil data session
$user = $session-&gt;get('username');

// Hapus session tertentu
$session-&gt;remove('username');

// Hapus semua session
$session-&gt;destroy();
        </pre><hr><h3 style="color:#023e8a;margin-top:18px;">⏰ 4. Auto Logout (Session Timeout)</h3><p>Fitur ini berguna agar <strong>pengguna otomatis logout</strong> jika halaman tidak disentuh selama 5 menit. Hal ini meningkatkan keamanan terutama untuk aplikasi login multiuser.</p><h4 style="color:#023e8a;margin-top:16px;">⚙️ Langkah 1 – Atur Session Timeout di <code>.env</code></h4><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">app.sessionExpiration = 300
        </pre><p>Nilai <strong>300</strong> berarti session akan kadaluarsa setelah 300 detik (5 menit).</p><h4 style="color:#023e8a;margin-top:16px;">⚙️ Langkah 2 – Buat Filter Auto Logout</h4><p>Tambahkan file baru di:</p><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">app/Filters/AutoLogoutFilter.php
        </pre><p>Isi kodenya:</p><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">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-&gt;get('isLoggedIn')) {
            return redirect()-&gt;to('/login');
        }

        $inactive = 300; // 5 menit
        $lastActivity = $session-&gt;get('lastActivity');

        if ($lastActivity &amp;&amp; (time() - $lastActivity &gt; $inactive)) {
            $session-&gt;destroy();
            return redirect()-&gt;to('/login')-&gt;with('error', 'Session habis, silakan login kembali.');
        }

        // Update waktu aktivitas terakhir
        $session-&gt;set('lastActivity', time());
    }

    public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
    {
    }
}
        </pre><h4 style="color:#023e8a;margin-top:16px;">⚙️ Langkah 3 – Daftarkan Filter</h4><p>Buka <code>app/Config/Filters.php</code> dan daftarkan:</p><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">public array $aliases = [
    'csrf' =&gt; \CodeIgniter\Filters\CSRF::class,
    'toolbar' =&gt; \CodeIgniter\Filters\DebugToolbar::class,
    'auth' =&gt; \App\Filters\AuthFilter::class,
    'autologout' =&gt; \App\Filters\AutoLogoutFilter::class,
];
        </pre><h4 style="color:#023e8a;margin-top:16px;">⚙️ Langkah 4 – Terapkan pada Routing</h4><pre style="background-color:#f8f9fa;border-radius:8px;font-size:13px;overflow:auto;padding:10px;">$routes-&gt;get('/dashboard', 'DashboardController::index', ['filter' =&gt; ['auth', 'autologout']]);
        </pre><p>Sekarang, jika pengguna tidak aktif selama 5 menit, session otomatis habis dan diarahkan ke halaman login.</p><hr><h3 style="color:#023e8a;margin-top:18px;">🚀 Kesimpulan</h3><p>Routing, Request/Response, dan Session adalah tiga komponen penting dalam alur kerja CodeIgniter 4. Dengan memahami ketiganya, pengembang dapat membuat aplikasi yang <strong>dinamis, interaktif, dan aman</strong>.</p><ul><li>🔹 <strong>Routing</strong> mengatur arah permintaan ke controller tertentu.</li><li>🔹 <strong>Request/Response</strong> menangani komunikasi antara client dan server.</li><li>🔹 <strong>Session</strong> menyimpan data pengguna sementara.</li><li>🔹 <strong>Auto Logout</strong> menjaga keamanan dengan membatasi waktu aktif pengguna.</li></ul><p style="color:#014f86;margin-top:16px;">Dengan pemahaman yang baik terhadap konsep-konsep ini, kamu siap membangun aplikasi web profesional menggunakan CodeIgniter 4.</p></div></div>]]></description>
	<dc:creator>Muh.Taqiuddin.S</dc:creator>		</item>
</channel>
</rss>
