Anda di halaman 1dari 33

Pemrograman Web

PHP State, Session dan Cookies


Adam Hendra Brata

Pokok Bahasan
Konsep State pada PHP
Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Stateless
Statefull

Session
Cookies

PHP State

PHP State - Stateless


State = Keadaan

Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Website pada umumnya menggunakan


protokol HTTP
Pada dasarnya protokol HTTP memiliki sifat
stateless

Pada interaksiyang 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
terjadi
Pada interaksi stateless, server HTTP tidak
menyimpan state yang berhubungan
dengan klien

PHP State - Stateless


Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session
Sistem langsung memberikan response
kepada user dengan langsung memberikan
halaman baru

PHP State - Statefull


Stateful adalah kemampuan situs untuk
mempertahankan state (keadaan)

Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull

Pada interaksi statefull, membuat sebuah


website dapat menyimpan keadaan seorang
user walaupun komunikasi data di jaringan
tetap menggunakan HTTP

Cookies
Destroy

Session
Use
Create

PHP State - Statefull


Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session
Sistem mengetahui keadaan user sekarang
dan dapat melanjutkan halaman apa yang
diminta oleh user daripada dia memberikan
apa yang diminta user dengan langsung
memberikan halaman baru

PHP State
Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Penggunaan PHP State


Bagaimana pengguna tetap logged-in
ketika dia berpindah-pindah halaman ?
Bagaimana keranjang belanja
pengguna tetap tersimpan ketika
pengguna tersebut melihat lihat
barang di halaman lain untuk
ditambahkan ke keranjang belanja
tersebut ?

PHP State
Pokok Bahasan

PHP State dapat dibentuk menggunakan :


Cookies
Session

Konsep State pada


PHP
- Stateless
- Statefull
Cookies

Session

Create

Use

Destroy

Cookies

Cookies
Cookie adalah file kecil yang diletakkan oleh
server pada komputer pengguna

Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

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

Cookies
Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Cookies bisa digunakan untuk :


Otentifikasi
Melacak User
Mempertahankan preferensi user,
shopping chart dll

Data cookie berisi pasangan name/value


yang dikirim melalui header dari request
HTTP (Post/Get)

Cara Kerja Cookies


Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Saat browser meminta page, server dapat


mengirim cookies bersamaan dengan page
tersebut
Jika server sebelumnya sudah mengirimkan
cookies, browser akan mengirimkannya
bersamaan dengan request

Cara Kerja Cookies


Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Saat browser meminta page, server dapat


mengirim cookies bersamaan dengan page
tersebut
Jika server sebelumnya sudah mengirimkan
cookies, browser akan mengirimkannya
bersamaan dengan request

Serba-Serbi Cookies
Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Mitos
Cookies seperti virus yang bisa
menghapus data di komputer kita
(salah)
Cookies bisa mencuri informasi kita
(salah)
Cookies digunakan untuk spam (salah)
Fakta
Cookies hanyalah data
Cookies biasanya anonim (tidak berisi
informasi personal)
Cookies bisa digunakan untuk melacak
kebiasaan kita dalam melihat suatu
situs

Serba-Serbi Cookies
Apakah cookie berbahaya?
Pada dasarnya tidak

Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

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-aftifkan
penggunaan cookie pada web browser yang
kita gunakan

Serba-Serbi Cookies
Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

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

Jenis Cookies
Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Session cookies : tipe default, cookie


sementara yang hanya disimpan di memory
browser
Ketika browser ditutup, cookies ini akan
terhapus
Tidak bisa digunakan untuk melacak
informasi yang lama
Lebih aman, karena tidak ada program
yang bisa mengaksesnya (kecuali
browser itu sendiri)
Persistent Cookies : cookies yang disimpan
pada sebuah file yang ada di komputer
browser
Bisa melacak informasi yang bisa
bertahan lama
Berpotensial untuk tidak aman, sebab
user / program, bisa membuka file
tersebut atau mengubah isi cookies nya

Penyimpanan Cookies
Pokok Bahasan

IE :
C:\Documents and
Settings\administrator\Cookies

Konsep State pada


PHP
- Stateless
- Statefull

Firefox
%APPDATA%\Mozilla\Firefox\???.defau
lt\cookies.txt
Dimana ??? adalah karakter acak

Cookies

Chrome :
C:\Users\<User
Name>\AppData\Local\Google\Chrome
\User Data

Session

Pengelolaan Cookies
Cookie ditangani dengan superglobal array
$_COOKIE

Pokok Bahasan

Set cookies :

Konsep State pada


PHP
- Stateless
- Statefull
Cookies

Session
Kalau tidak didefinisikan batas timeoutnya,
maka secara default cookies akan dianggap
session cookies

Pengelolaan Cookies
Menerima informasi cookies :

Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session
Gunakan isset untuk mengetahui apakah
cookies yang diinginkan ada

Session

Session
Session adalah konsep abstrak yang
merepresentasikan interaksi antara browser
dan server

Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull

Beda session dan cookies


Cookies adalah data yang disimpan di
client
Data session disimpan di server (1
session per user)

Cookies

Session biasanya dibangun diatas cookies

Session

Setiap permintaan page, client mengirim


cookie yang berisi session ID , dan server
menggunakan session ID ini untuk mencari
dan menerima data session -nya
Data session ID ini bisa disimpan oleh
browser dalam bentuk cookie

Session
Session merupakan kombinasi dari clientside session ID + server-side session data

Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

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 dapat digunakan untuk menyimpan


data berukuran sangat besar, sedangkan
cookie hanya dapat menyimpan data
berukuran kecil (karena dibatasi oleh web
browser)

Cara Kerja Session


Pertama-tama browser melakukan request
ke server

Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Server mengetahui IP client, kemudian


memberikan data session yang akan dikirim
lagi ke client dalam bentuk session ID
Untuk interaksi selanjutnya client mengirim
session ID tersebut ke server
Server menggunakan session ID ini untuk
mendapatkan data client yang disimpan di
database server

Pengelolaan Session
Memulai session

Pokok Bahasan

Memberi nilai pada variabel session

Konsep State pada


PHP
- Stateless
- Statefull
Cookies

Session

Membaca nilai dari variabel session

Pengelolaan Session
Menghapus sebuah variabel session

Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Menghapus semua session pada pengguna


tertentu

Pengelolaan Session - Start


Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

session_start() menandakan server


menginginkan untuk memulai sesi dengan
user
perintah ini harus di jalankan di awal
sebelum output diproduksi

Ketika kita memanggil session_start() maka:


Jika server tidak pernah berinteraksi
dengan user, maka akan dibuat session
baru
Jika user sudah pernah berintaksi, maka
data session akan di simpan di
assosiative array $_SESSION
Kita dapat menyimpan data di
$_SESSION dan menerimanya kembali
untuk digunakan lagi nantinya

Pengelolaan Session - Saving


Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Pada client, session disimpan sebagai


cookies dengan nama PHPSESSID
Pada server, data session disimpan sebagai
file temporary dengan nama acak
seperti /tmp/sess_fcc17f071
Kita bisa mencari atau mengubah folder
dimana session disimpan dengan
menggunakan fungsi session_save_path
Untuk aplikasi yang besar, session bisa
disimpan di database (misalnya mysql)

Session Timeout
Pokok Bahasan
Konsep State pada
PHP
- Stateless
- Statefull
Cookies

Session

Karena HTTP adalah stateless, maka akan


sulit untuk menentukan apakah user sudah
menyelesaikan sessionnya
Idealnya, user harus melakukan logout
untuk menyelesaikan session, tetapi
kebanyakan user jarang melakukannya
Browser akan secara otomatis menghapus
session ketika ditutup
Server secara otomatis akan menghapus
session setelah beberapa waktu tertentu
( bisa diset melalui setting PHP
session_cache_expire )
Session bisa dihapus secara paksa dengan
perintah session_destroy (biasanya
dilakukan saat user logout)

Latihan

Latihan

Buatlah sebuah halaman untuk melakukan


login sederhana dengan menggunakan
teknik session dan cookies, tanpa
menggunakan database, definisi nilai
session dan cookies langsung di kode
PHPnya
Percantik halaman login yang kalian buat
dengan menggunakan konsep desain yang
baik plus CSS
Halaman login ini harus bisa melakukan
autentifikasi user, dengan input dasar
username dan password dan dapat
menampilkan halaman lain yang hanya bisa
dibuka setelah login

Latihan
Kumpulkan script HTML, PHP dan CSSnya
dalam 1 folder dan kirimkan via email
Deadline :

Latihan

Kamis, 12 Maret 2015 jam 12.00


siang
Judul folder email :
PW-A-Kode_Tugas-NIM
Contoh :

PW-A-2-126060312111002

Terimakasih dan
Semoga
Bermanfaat ^^