5. State

advertisement
5. State
PTI15010
Pemrograman Web
Agi Putra Kharisma, S.T., M.T.
Genap 2014/2015
Desain slide ini dadaptasi dari University of San Fransisco
State
?
http://wmblanchardco.com/wp-content/uploads/2013/01/StateMap3.jpg
State commonly refers to either the
condition of a system or entity
Interaksi Client-Server Pada HTTP
Application state
(Sumber: Tim Downey – Guide To Web Development With Java)
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?
?
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/
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.
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
Cookie (3/3)
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 menon-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.
Session (3/3)
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'];
?>
PHP: Penanganan Session (2/2)
• Menghapus sebuah variabel session
<?php
session_start();
if(isset($_SESSION['status']))
unset($_SESSION['status']);
?>
• Menghapus semua session pada pengguna tertentu
<?php
session_destroy();
?>
Download