5. state · desain slide ini dadaptasi dari university of san fransisco 5. state pti15010...
TRANSCRIPT
Desain slide ini dadaptasi dari University of San Fransisco
5. State
PTI15010
Pemrograman Web
Agi Putra Kharisma, S.T., M.T.
Genap 2014/2015
State
?
http://wmblanchardco.com/wp-content/uploads/2013/01/StateMap3.jpg
Interaksi Client-Server Pada HTTP
(Sumber: Tim Downey – Guide To Web Development With Java)
Application state Resource state
Application State vs Resource State
Clients handle application state, servers resource state
Application state is information about where you are in the
interaction. It is used during your session with an application.
Resource state is the kind of (semi-)permanent data a
server stores, and lasts beyond the duration of a single
session of interactions.
http://ruben.verborgh.org/blog/2012/08/24/rest-wheres-my-state/
Stateless vs Stateful
Client-server system is stateless if: Client is independently responsible for its actions, server doesn’t track set of clients or ensure that cached data stays up to date Client-server system is stateful if: Server tracks its clients, takes actions to keep their cached states “current”. Client can trust its cached data.
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, tidak memiliki keterkaitan satu
sama lain.
• Server HTTP tidak mengingat apa yang terjadi pada
interaksi request-response yang telah terjadi.
• Pada interaksi stateless, server HTTP tidak menyimpan
state yang berhubungan dengan klien.
Mengapa stateless?
Statelessness eliminates the need
to remember.
The server should not remember the state of the application.
As a consequence, the client should send all information
necessary for execution along with each request, because the
server cannot reuse information from previous requests as it
didn’t memorize them.
http://ruben.verborgh.org/blog/2012/08/24/rest-wheres-my-state/
Keunggulan Statelessness
Visibility
Every request contains all context necessary to understand it.
Therefore, looking at a single request is sufficient to visualize
the interaction.
Reliability
Since a request stands on its own, failure of one request does
not influence others.
Scalability
The server does not have to remember the application state,
enabling it to serve more requests in a shorter amount of time.
http://ruben.verborgh.org/blog/2012/08/24/rest-wheres-my-state/
Faktanya, tidak sedikit aplikasi berbasis web yang membutuhkan interaksi stateful (terdapat
pasangan request/response yang tidak independen).
Telah dibahas bahwa HTTP 1.1 bersifat stateless, maka:
• Bagaimana server bisa mengingat bahwa pengguna telah login?
• Bagaimana server bisa mengingat barang-barang yang
dimasukkan pengguna ke dalam keranjang belanja (shopping
cart)?
• dsb
Beberapa Teknik Mengelola State
Terdapat banyak teknik/cara yang dapat digunakan untuk
mengelola state. Dalam perkuliahan ini hanya membahas 2
cara, yaitu:
1. Cookie
2. Session
Cookie (1/3)
• Cookie adalah file kecil yang diletakkan oleh server pada
komputer pengguna.
• Cookie dikirim setiap kali pengguna mengakses web yang
menjadi pemilik cookie tersebut. Sehingga, ukuran cookie
perlu diperhatikan supaya tidak membebani jaringan secara
berlebihan.
• Ketika kita mendefinisikan suatu cookie, maka kita
menentukan berapa lama cookie tersebut valid. Jika telah
melampaui waktu valid (expires), maka cookie tersebut
akan dihapus.
Cookie (2/3)
http://1.bp.blogspot.com/-z8y4KSfhhj0/T9SGemmK30I/AAAAAAAAAP4/fBFChYOINDc/s1600/http_cookie1.png
Keamanan Cookie (1/2)
• Apakah cookie berbahaya? Pada dasarnya tidak.
• 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 aktivitas pengguna,
misalnya seberapa sering pengguna mengakses, kapan
waktu aksesnya, link apa saja yang di-klik, dsb.)
• Untuk alasan tertentu, kita dapat mengaktifkan atau me-
non-aktifkan penggunaan cookie pada web browser yang
kita gunakan.
Keamanan Cookie (2/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 tidak berwenang.
PHP: Penanganan Cookie
Cookie ditangani dengan superglobal array $_COOKIE
Sets cookies: setcookie(name, [value], [expire], [path], [domain]); <?php setcookie("user", “Si Bolang", time()+3600); ?>
Retrieves cookies: $_COOKIE["name of cookie"]; <?php if(isset($_COOKIE["user"])) echo $_COOKIE["user"]; ?>
Session (1/3)
• 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.
Session (2/3)
• 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.
PHP: Penanganan Session (1/2)
•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']; ?>