Agi Putra Kharisma, ST., MT.
State
HTTP, PHP
1 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
HTTP 1.1 = Stateless • Salah satu sifat protokol HTTP 1.1 adalah stateless
• Pada interaksi yang bersifat stateless, maka antara suatu interaksi request-‐response dengan request-‐response lainnya bersifat independen, @dak memiliki keterkaitan satu sama lain.
• Server HTTP @dak mengingat apa yang terjadi pada interaksi request-‐response yang terjadi.
• Pada interaksi stateless, server HTTP 9dak menyimpan state yang berhubungan dengan klien.
2 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Contoh Kasus: Stateful
3 Pemrograman Web -‐ State
Klien Server Minta halaman novel
Ini halaman novel
Minta halaman selanjutnya
Ini novel halaman kedua
Minta halaman selanjutnya
Ini novel halaman ke@ga
Minta halaman selanjutnya
Ini novel halaman terakhir
Agi Putra Kharisma, ST., MT.
Contoh Kasus: Stateless
4 Pemrograman Web -‐ State
Klien Server Minta halaman novel
Ini halaman novel
Minta novel halaman kedua
Ini novel halaman kedua
Minta novel halaman ke@ga
Ini novel halaman ke@ga
Minta novel halaman keempat/terakhir
Ini novel halaman keempat/terakhir
Agi Putra Kharisma, ST., MT.
Demo Aplikasi Novel
• ‘Stateful’*: Dengan Cookie • Stateful: Dengan Session • Stateless: Dengan Query String
* Dengan cookie, kita dapat menyimulasikan interaksi ala ‘stateful’, walaupun pada dasarnya interaksi tersebut tetap bersifat stateless.
5 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Demo Aplikasi Novel
• ‘Stateful’: Dengan Cookie
• Stateful: Dengan Session
• Stateless: Dengan Query String
6 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Contoh Kasus: Kaskus
7 Pemrograman Web -‐ State
Current page
hFp://kaskus.co.id/thread/…./2 hFp://kaskus.co.id/thread/…./3
hFp://kaskus.co.id/thread/…./4 hFp://kaskus.co.id/thread/…./2
Agi Putra Kharisma, ST., MT.
Kapan Butuh State?
Beberapa kondisi kita membutuhkan state pada aplikasi yang kita buat: • Bagaimana pengguna tetap logged-‐in ke@ka dia berpindah-‐pindah halaman?
• Bagaimana keranjang belanja pengguna tetap tersimpan ke@ka pengguna tersebut melihat – lihat barang di halaman lain untuk ditambahkan ke keranjang belanja tersebut?
8 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Beberapa Cara Mempertahankan State
• Menggunakan variabel GET/POST yang dikirim dari halaman ke halaman
• Menggunakan HTTP header • Menggunakan cookies • Menggunakan sessions
9 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Cookie • Cookie adalah file kecil yang diletakkan oleh server pada komputer pengguna.
• Cookie dikirim se@ap kali pengguna mengakses web yang menjadi pemilik cookie tersebut. Sehingga, ukuran cookie perlu diperha@kan supaya @dak membebani jaringan secara berlebihan.
• Ke@ka kita mendefinisikan suatu cookie, maka kita menentukan berapa lama cookie tersebut valid. Jika telah melampaui waktu valid (expires), maka cookie tersebut akan dihapus.
10 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Cara Kerja Cookie
11 Pemrograman Web -‐ State
Sumber: Robin Nixon – Learning PHP, MySQL, Javascript, CSS 2nd Edi@on
Agi Putra Kharisma, ST., MT.
Keamanan Cookie (1)
• Apakah cookie berbahaya? Pada dasarnya @dak. • Namun, cookie dapat digunakan untuk menyimpan informasi tentang pengguna tanpa disadari oleh pengguna tersebut. (Dengan kata lain, cookie dapat digunakan sebagai media untuk memata-‐matai ak@vitas pengguna, misalnya seberapa sering pengguna mengakses, kapan waktu aksesnya, link apa saja yang di-‐klik, dsb.)
• Untuk alasan tertentu, kita dapat mengak@_an atau me-‐non-‐ak@_an penggunaan cookie pada web browser yang kita gunakan.
12 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Keamanan Cookie (2)
• Jika cookie ‘terpaksa’ digunakan untuk menyimpan data yang bersifat personal (misal: alamat email, nomor telepon, dsb), gunakan enkripsi untuk melindungi data tersebut dari pihak yang @dak berwenang.
13 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
PHP: Penanganan Cookie Cookie ditangani dengan superglobal array $_COOKIE • Sets cookies
setcookie(name, [value], [expire], [path], [domain]); <?php setcookie("user", "Alex Porter", time()+3600); ?>
• Retrieves cookies $_COOKIE["name of cookie"]; <?php if(isset($_COOKIE["user"])) echo $_COOKIE["user"]; ?>
14 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Sessions (1)
• Session merupakan kombinasi dari client-‐side session ID + server-‐side session data
• Client-‐side session ID dapat berupa parameter URL, cookie, atau HTTP request header.
• Cara yang paling umum adalah menggunakan cookie untuk menyimpan client-‐side session ID.
• Server-‐side session data dapat disimpan pada file maupun basis data.
15 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Session (2)
• Session dapat digunakan untuk menyimpan data berukuran sangat besar, sedangkan cookie hanya dapat menyimpan data berukuran kecil (karena dibatasi oleh web browser).
• Data yang tersimpan pada session sifatnya sementara. Data tersebut akan dihapus dari server dalam kondisi tertentu, misalnya pengguna menutup web browser atau session tersebut telah kadaluwarsa.
16 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
PHP: Penanganan Session (1) • Memulai session <?php session_start(); ?>
• Memberi nilai pada variabel session <?php session_start(); $_SESSION['status'] = 1; ?>
• Membaca nilai dari variabel session <?php session_start(); echo “Status=“ . $_SESSION[‘status']; ?>
17 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
PHP: Penanganan Session (2) • Menghapus sebuah variabel session <?php session_start(); if(isset($_SESSION['status'])) unset($_SESSION['status']); ?>
• Menghapus semua session pada pengguna tertentu <?php session_destroy(); ?>
18 Pemrograman Web -‐ State
Agi Putra Kharisma, ST., MT.
Contoh Penggunaan Session
• Halaman login (Demo)
19 Pemrograman Web -‐ State
Cookie/session theO
Cookie/session hijacking
Agi Putra Kharisma, ST., MT.
Tips Perancangan State
• Sebisa mungkin buatlah aplikasi web dengan cara stateless, apabila terdapat kebutuhan yang mengharuskan ‘stateful’, usahakan untuk membuat interaksi ala ‘stateful’ yang sifatnya sessionless (tanpa menggunakan session), apabila @dak dimungkinkan atau karena ada alasan lain yang cukup kuat untuk menggunakan session, maka gunakanlah session.
20 Pemrograman Web -‐ State
Top Related