State HTTP, PHP 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. 2
Contoh Kasus: Stateful Klien Minta halaman novel Ini halaman novel Server Minta halaman selanjutnya Ini novel halaman kedua Minta halaman selanjutnya Ini novel halaman ke@ga Minta halaman selanjutnya Ini novel halaman terakhir 3
Contoh Kasus: Stateless Klien Minta halaman novel Ini halaman novel Server 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 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. 5
Demo Aplikasi Novel Stateful : Dengan Cookie Stateful: Dengan Session Stateless: Dengan Query String 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 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? 8
Beberapa Cara Mempertahankan State Menggunakan variabel GET/POST yang dikirim dari halaman ke halaman Menggunakan HTTP header Menggunakan cookies Menggunakan sessions 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. 10
Cara Kerja Cookie Sumber: Robin Nixon Learning PHP, MySQL, Javascript, CSS 2 nd Edi@on 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. 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. 13
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
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
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
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
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
Contoh Penggunaan Session Halaman login (Demo) Cookie/session theo Cookie/session hijacking 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. 20