Back to IF3110 Pengembangan Aplikasi Berbasis Web

Topic

Questions/Cues

  • Mengapa HTTP disebut stateless?

  • Apa itu State Management?

  • Bagaimana cara kerja URL Parameter Passing?

  • Bagaimana cara kerja Hidden Field?

  • Bagaimana cara kerja Cookies?

  • Apa saja batasan Cookies?

  • Apa perbedaan utama ketiga teknik ini?

Reference Points

  • Slides 1-10

Sifat Stateless pada HTTP

Protokol HTTP (Hypertext Transfer Protocol) pada dasarnya bersifat stateless. Ini berarti setiap permintaan (request) dari klien ke server dianggap sebagai transaksi yang terisolasi dan independen. Server tidak memiliki ingatan bawaan tentang permintaan-permintaan sebelumnya yang datang dari klien yang sama.

Analogi: Bayangkan Anda berbicara dengan seseorang yang memiliki ingatan sangat pendek. Setiap kali Anda mengucapkan kalimat baru, orang tersebut lupa semua kalimat yang Anda ucapkan sebelumnya.

Implikasi Praktis: Jika Anda mendefinisikan sebuah variabel di page1.php, nilai variabel tersebut akan hilang dan tidak akan dikenali saat pengguna pindah ke page2.php. Ini menjadi masalah besar untuk aplikasi yang membutuhkan alur multi-langkah, seperti keranjang belanja atau proses login.

Apa itu State Management?

State Management (Manajemen Status) adalah proses atau teknik untuk mempertahankan informasi status dan halaman di antara beberapa permintaan (request). Tujuannya adalah untuk “mengakali” sifat stateless HTTP, sehingga aplikasi web bisa “mengingat” informasi tentang pengguna dan interaksi mereka.

Teknik 1: Message Passing via URL (Parameter URL)

Ini adalah salah satu cara paling sederhana untuk membawa data dari satu halaman ke halaman lain.

  • Cara Kerja: Data dilampirkan langsung ke URL sebagai pasangan kunci=nilai, yang disebut query string.

  • Implementasi:

    • Di halaman pengirim, buat link yang menyertakan data:

      <a href='page2.php?produk_id=123&aksi=edit'>Edit</a>
    • Di halaman penerima (page2.php), data diambil menggunakan variabel global $_GET:

      `$id = $_GET['produk_id']; // $id akan berisi '123'`

Teknik 2: Hidden Field (Input Tersembunyi)

Teknik ini digunakan di dalam form HTML untuk membawa data tanpa menampilkannya kepada pengguna.

  • Cara Kerja: Sebuah input field ditambahkan ke dalam form dengan type="hidden". Nilainya akan dikirim bersama data form lainnya saat di-submit.

  • Implementasi:

    • Di dalam form HTML:

      <input type="hidden" name="user_id" value="99">
    • Di skrip PHP yang memproses form, data diambil menggunakan $_POST (jika method=“post”):

      $userId = $_POST['user_id']; // $userId akan berisi '99'

Teknik 3: Cookies

Cookie adalah potongan kecil data yang dikirim oleh server untuk disimpan di browser klien. Browser kemudian akan mengirimkan kembali cookie tersebut secara otomatis setiap kali membuat permintaan baru ke server yang sama.

  • Cara Kerja:

    1. Server Mengatur Cookie: Server mengirimkan cookie ke browser melalui Set-Cookie header. Di PHP, ini dilakukan dengan fungsi setcookie("nama", "nilai");.

    2. Browser Menyimpan Cookie: Browser menyimpan cookie tersebut.

    3. Browser Mengirim Cookie: Pada setiap permintaan berikutnya ke domain yang sama, browser akan menyertakan cookie tersebut dalam Cookie header.

    4. Server Membaca Cookie: Server membaca data cookie melalui variabel global $_COOKIE.

  • Batasan (Limitation):

    • Ukuran Terbatas: Sekitar 4KB per cookie.

    • Jumlah Terbatas: Sekitar 20 cookies per domain, dan total 300 cookies per klien.

    • Bergantung pada Klien: Pengguna dapat menonaktifkan, mengubah, atau menghapus cookies di browser mereka.

Teknik 4: Session (Sisi Server)

Session adalah teknik di mana data pengguna disimpan di sisi server. Ini adalah metode yang paling umum dan aman untuk menangani data sensitif.

  • Cara Kerja:

    1. Inisiasi: Skrip PHP memanggil session_start();.

    2. Identifikasi: Server membuat sebuah ID unik untuk sesi tersebut (Session ID). ID ini dikirim ke browser klien dan disimpan dalam sebuah cookie.

    3. Penyimpanan Data: Data disimpan di server dalam sebuah file yang namanya sesuai dengan Session ID. Di PHP, ini dilakukan melalui variabel global $_SESSION. Contoh: $_SESSION['user_id'] = 123;.

    4. Retrieval Data: Pada request berikutnya, browser mengirimkan cookie berisi Session ID. Server menggunakan ID ini untuk mencari file sesi yang sesuai dan memuat datanya ke dalam $_SESSION, sehingga data tersebut tersedia kembali untuk skrip.

  • Keunggulan: Data asli tidak pernah meninggalkan server. Yang berpindah antara klien dan server hanyalah ID sebagai penanda.

Summary

Karena protokol HTTP bersifat stateless, aplikasi web memerlukan State Management untuk “mengingat” data antar halaman. Tiga teknik dasar yang berpusat pada klien adalah: URL Parameter Passing yang menyematkan data langsung di URL (terlihat dan tidak aman), Hidden Field yang menyembunyikan data di dalam form (tidak terlihat langsung tapi masih terekspos di source code), dan Cookies yang menyimpan data di browser pengguna untuk persistensi (namun memiliki batasan ukuran dan dapat dimanipulasi oleh pengguna). Terakhir, terdapat Session adalah teknik sisi server yang menyimpan semua data di server dan hanya menggunakan Session ID (disimpan di cookie klien) sebagai kunci pengenal, menjadikannya standar industri untuk menangani informasi login, keranjang belanja, dan data rahasia lainnya.