PHP State, Session dan Cookies
4
Pemrograman Web
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
Session
Konsep State pada PHP
Stateless
Statefull
Session
Cookies
State = Keadaan
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
PHP State - Stateless
Pokok Bahasan
Konsep State pada PHP
- Stateless
- Statefull
Cookies
Session
Stateful adalah kemampuan situs untuk mempertahankan state (keadaan)
Pada interaksi statefull, membuat sebuah website dapat menyimpan keadaan seorang user walaupun komunikasi data di jaringan tetap menggunakan HTTP
PHP State - Statefull
Pokok Bahasan
Konsep State pada PHP
- Stateless
- Statefull
Cookies
Session
Create Use
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
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
Konsep State pada PHP
- Stateless - Statefull
Cookies
PHP State dapat dibentuk menggunakan :
Cookies
Session
PHP State
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
Session Create
Use
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
Cookies
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
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)
Cookies
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
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
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
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
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
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-aftifkan
penggunaan cookie pada web browser yang kita gunakan
Serba-Serbi Cookies
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
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
Serba-Serbi Cookies
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
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
Jenis Cookies
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
IE :
C:\Documents and
Settings\administrator\Cookies
Firefox
%APPDATA%\Mozilla\Firefox\???.defau lt\cookies.txt
Dimana ??? adalah karakter acak
Chrome :
C:\Users\<User
Name>\AppData\Local\Google\Chrome \User Data
Penyimpanan Cookies
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
Cookie ditangani dengan superglobal array $_COOKIE
Set cookies :
Kalau tidak didefinisikan batas timeoutnya, maka secara default cookies akan dianggap session cookies
Pengelolaan Cookies
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
Menerima informasi cookies :
Gunakan isset untuk mengetahui apakah cookies yang diinginkan ada
Pengelolaan Cookies
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
Session adalah konsep abstrak yang
merepresentasikan interaksi antara browser dan server
Beda session dan cookies
Cookies adalah data yang disimpan di client
Data session disimpan di server (1 session per user)
Session biasanya dibangun diatas cookies
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
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
Session merupakan kombinasi dari client-side session ID + server-client-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 dapat digunakan untuk menyimpan data berukuran sangat besar, sedangkan cookie hanya dapat menyimpan data
berukuran kecil (karena dibatasi oleh web browser)
Session
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
Pertama-tama browser melakukan request ke server
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
Cara Kerja Session
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
Memulai session
Memberi nilai pada variabel session
Membaca nilai dari variabel session
Pengelolaan Session
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
Menghapus sebuah variabel session
Menghapus semua session pada pengguna tertentu
Pengelolaan Session
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
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 - Start
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
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)
Pengelolaan Session - Saving
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
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)
Session Timeout
Pokok Bahasan
Konsep State pada PHP
- Stateless - Statefull
Cookies
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 :
Kamis, 12 Maret 2015 jam 12.00
siang
Judul folder email :
PW-A-Kode_Tugas-NIM
Contoh :