State HTTP, PHP
Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
1
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. Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
2
Contoh Kasus: Stateful 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 Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
3
Contoh Kasus: Stateless 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 Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
4
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. Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
5
Demo Aplikasi Novel • ‘Stateful’: Dengan Cookie • Stateful: Dengan Session • Stateless: Dengan Query String
Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
6
Contoh Kasus: Kaskus hFp://kaskus.co.id/thread/…./2
hFp://kaskus.co.id/thread/…./3
Current page
hFp://kaskus.co.id/thread/…./4 hFp://kaskus.co.id/thread/…./2 Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
7
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? Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
8
Beberapa Cara Mempertahankan State • Menggunakan variabel GET/POST yang dikirim dari halaman ke halaman • Menggunakan HTTP header • Menggunakan cookies • Menggunakan sessions
Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
9
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. Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
10
Cara Kerja Cookie
Sumber: Robin Nixon – Learning PHP, MySQL, Javascript, CSS 2nd Edi@on Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
11
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. Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
12
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.
Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
13
PHP: Penanganan Cookie Cookie ditangani dengan superglobal array $_COOKIE • Sets cookies setcookie(name, [value], [expire], [path], [domain]);
• Retrieves cookies $_COOKIE["name of cookie"]; Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
14
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. Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
15
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. Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
16
PHP: Penanganan Session (1) • Memulai session
• Memberi nilai pada variabel session
• Membaca nilai dari variabel session Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
17
PHP: Penanganan Session (2) • Menghapus sebuah variabel session • Menghapus semua session pada pengguna tertentu Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
18
Contoh Penggunaan Session • Halaman login (Demo) Cookie/session theO
Cookie/session hijacking
Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
19
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. Pemrograman Web -‐ State Agi Putra Kharisma, ST., MT.
20