PW 6 Adam – PHP State, Cookies dan Session
PHP State, Session dan Cookies Pemrograman Web
Adam Hendra Brata
Pokok Bahasan
Konsep State pada PHP
Stateless Pokok Bahasan
Statefull
Konsep State pada
Session
PHP
- Stateless
Cookies
- Statefull Cookies Session
PHP State
PHP State - Stateless
State = Keadaan
Website pada umumnya menggunakan protokol HTTP Pokok Bahasan
Pada dasarnya protokol HTTP memiliki sifat
stateless
Konsep State pada PHP Pada interaksiyang bersifat stateless, maka
- Stateless
antara suatu interaksi request-response
- Statefull dengan request-response lainnya bersifat independen, tidak memiliki keterkaitan satu sama lain
Cookies
Server HTTP tidak mengingat apa yang Session 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
- State
- 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)
Pada interaksi statefull, membuat sebuah website dapat menyimpan keadaan seorang user walaupun komunikasi data di jaringan tetap menggunakan HTTP
Pokok Bahasan
Konsep State pada PHP
- State
- Statefull
Cookies Session
Create Use Destroy
PHP State - Statefull
Pokok Bahasan
Konsep State pada PHP
- State
- 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
Penggunaan PHP State
Bagaimana pengguna tetap logged-in ketika dia berpindah-pindah halaman ? Pokok Bahasan
Bagaimana keranjang belanja
Konsep State pada
pengguna tetap tersimpan ketika
PHP
pengguna tersebut melihat – lihat
- Stateless barang di halaman lain untuk
- Statefull ditambahkan ke keranjang belanja tersebut ?
Cookies Session
PHP State
PHP State dapat dibentuk menggunakan :
Cookies
Pokok Bahasan Session
Konsep State pada PHP
- Stateless - Statefull Cookies
Create
Session
Use Destroy Cookies
Cookies
Cookie adalah file kecil yang diletakkan oleh server pada komputer pengguna
Pokok Bahasan Cookie dikirim setiap kali pengguna mengakses web yang menjadi pemilik Konsep State pada cookie tersebut, sehingga, ukuran cookie perlu diperhatikan supaya tidak membebani PHP
- Stateless jaringan secara berlebihan
- Statefull
Ketika kita mendefinisikan suatu cookie, maka kita menentukan berapa lama cookie
Cookies
tersebut valid. Jika telah melampaui waktu valid (expires), maka cookie tersebut akan Session dihapus
Cookies
Cookies bisa digunakan untuk :
Otentifikasi Pokok Bahasan
Melacak User
Mempertahankan preferensi user, Konsep State pada shopping chart dll PHP
- Stateless
Data cookie berisi pasangan name/value
- Statefull yang dikirim melalui header dari request HTTP (Post/Get)
Cookies
Session
Cara Kerja 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
Pokok Bahasan Konsep State pada PHP
- Stateless - Statefull
Cookies
Session
Cara Kerja 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
Pokok Bahasan Konsep State pada PHP
- Stateless - Statefull
Cookies
Session
Serba-Serbi Cookies
Mitos
Cookies seperti virus yang bisa menghapus data di komputer kita Pokok Bahasan
(salah)
Cookies bisa mencuri informasi kita Konsep State pada
(salah) PHP
- Stateless
Cookies digunakan untuk spam (salah)
- Statefull
Fakta
Cookies hanyalah data
Cookies
Cookies biasanya anonim (tidak berisi Session informasi personal)
Cookies bisa digunakan untuk melacak
kebiasaan kita dalam melihat suatu situs
Serba-Serbi Cookies
Apakah cookie berbahaya?
Pada dasarnya tidak
Pokok Bahasan
Namun, cookie dapat digunakan untuk menyimpan informasi tentang pengguna Konsep State pada tanpa disadari oleh pengguna tersebut PHP
Dengan kata lain, cookie dapat Digunakan
- Stateless sebagai media untuk memata-‐matai
- Statefull aktivitas pengguna, misalnya seberapa sering pengguna mengakses, kapan waktu
Cookies
aksesnya, link apa saja yang di-‐klik, dsb Session
Untuk alasan tertentu, kita dapat mengaktifkan atau me-non-aftifkan penggunaan cookie pada web browser yang kita gunakan
Serba-Serbi 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
Pokok Bahasan Konsep State pada PHP
- Stateless - Statefull
Cookies
Session
Jenis Cookies
Session cookies : tipe default, cookie
sementara yang hanya disimpan di memory browser Pokok Bahasan
Ketika browser ditutup, cookies ini akan terhapus Konsep State pada
Tidak bisa digunakan untuk melacak PHP informasi yang lama
- Stateless
Lebih aman, karena tidak ada program
- Statefull yang bisa mengaksesnya (kecuali browser itu sendiri)
Cookies
Persistent Cookies : cookies yang disimpan Session pada sebuah file yang ada di komputer browser
Digunakan untuk informasi yang bisa
bertahan lama
Berpotensial untuk tidak aman, sebab user / program, bisa membuka file
Penyimpanan Cookies
IE :
C:\Documents and Pokok Bahasan
Settings\administrator\Cookies
Firefox Konsep State pada
%APPDATA%\Mozilla\Firefox\???.defau
PHP lt\cookies.txt
- Stateless - Statefull
Dimana ??? adalah karakter acak
Chrome :
Cookies C:\Users\<User
Name>\AppData\Local\Google\Chrome Session
\User Data
Pengelolaan Cookies
Dalam PHP Cookie ditangani dengan
superglobal array $_COOKIE
Set cookies :
- Stateless - Statefull
Kalau tidak didefinisikan batas timeoutnya,
maka secara default cookies akan dianggap session cookies
Pokok Bahasan Konsep State pada PHP
Cookies
Session
Pengelolaan Cookies
Menerima informasi cookies : Pokok Bahasan Konsep State pada PHP
- Stateless - Statefull
Cookies
Session
Gunakan isset untuk mengetahui apakah cookies yang diinginkan ada
Pengelolaan Cookies - Warning
Biasanya dalam pengelolaan cookies dalam PHP sering ditemui “masalah” atau peringatan yang bunyinya :
Pokok Bahasan
Warning : Cannot modify header
Konsep State pada information - headers already sent by... PHP
- Stateless Peringatan ini muncul karena kita
- Statefull memunculkan dua elemen program
"header" dalam satu halaman yang diload
Cookies oleh web browser Dengan kata lain, data cookie yang kita buat
Session untuk memodifikasi elemen header HTML dikirim setelah dokumen HTML diload oleh browser karena pada dasarnya semua dokumen HTML yang sudah diload oleh browser sudah memiliki header
Pengelolaan Cookies - Warning
Solusinya :
Selalu letakkan proses pembuatan
Pokok Bahasan
cookie sebelum tag <html> atau bahkan sebelum tag <doctype>
Konsep State pada PHP
- Stateless - Statefull
Cookies
Session
Pengelolaan Cookies
Selain menggunakan PHP, cookies dapat dibentuk dengan menggunakan Javascript Pokok Bahasan karena pada dasarnya cookies disimpan di browser, sehingga Javascript dapat
Konsep State pada memanipulasinya PHP
- Stateless <script>
document.cookie= ;
- Statefull
“[name]=[value]" </script>
Cookies <script> document.cookie= "username=John Doe;
Session
expires=Thu, 18 Dec 2013 12:00:00 UTC" ; </script> <script> var x = document.cookie; </script>
Session
Session
Session adalah konsep abstrak yang merepresentasikan interaksi antara browser dan server
Pokok Bahasan
Beda session dan cookies
Cookies adalah data yang disimpan di Konsep State pada client PHP
Data session disimpan di server (1
- Stateless session per user)
- Statefull
Session biasanya dibangun diatas cookies Cookies
Setiap permintaan page, client mengirim
Session
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 client-
side session ID + server-side session data Pokok Bahasan
Client-side session ID dapat berupa parameter URL, cookie, atau HTTP request header
Konsep State pada PHP
Cara yang paling umum adalah
- Stateless menggunakan cookie untuk menyimpan client-side session ID
- Statefull
Server-side session data dapat disimpan
Cookies pada file maupun basis data
Session dapat digunakan untuk menyimpan
Session
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 Server mengetahui IP client, kemudian memberikan data session yang akan dikirim Konsep State pada lagi ke client dalam bentuk session ID PHP
Untuk interaksi selanjutnya client mengirim
- Stateless session ID tersebut ke server
- Statefull
Server menggunakan session ID ini untuk Cookies mendapatkan data client yang disimpan di database server
Session
Pengelolaan Session
Memulai session Pokok Bahasan
Memberi nilai pada variabel session Konsep State pada PHP
- Stateless - Statefull
Membaca nilai dari variabel session Cookies
Session
Pengelolaan Session
Menghapus sebuah variabel session Pokok Bahasan Konsep State pada PHP
- Stateless - Statefull
Menghapus semua session pada pengguna Cookies tertentu
Session
Pengelolaan Session - Start
session_start() menandakan server
menginginkan untuk memulai sesi dengan user Pokok Bahasan
perintah ini harus di jalankan di awal Konsep State pada sebelum output diproduksi PHP
Ketika kita memanggil session_start() maka:
- Stateless
Jika server tidak pernah berinteraksi
- Statefull dengan user, maka akan dibuat session baru
Cookies
Jika user sudah pernah berintaksi, maka
Session
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
Pada client, session disimpan sebagai cookies dengan nama PHPSESSID Pokok Bahasan
Pada server, data session disimpan sebagai file temporary dengan nama acak Konsep State pada seperti /tmp/sess_fcc17f071 PHP
- Stateless
Kita bisa mencari atau mengubah folder
- Statefull dimana session disimpan dengan menggunakan fungsi session_save_path
Cookies
Untuk aplikasi yang besar, session bisa disimpan di database (misalnya mysql)
Session
Session Timeout
Karena HTTP adalah stateless, maka akan
sulit untuk menentukan apakah user sudah menyelesaikan sessionnya Pokok Bahasan
Idealnya, user harus melakukan logout Konsep State pada untuk menyelesaikan session, tetapi PHP kebanyakan user jarang melakukannya
- Stateless
Browser akan secara otomatis menghapus
- Statefull session ketika ditutup
Cookies
Server secara otomatis akan menghapus
session setelah beberapa waktu tertentu
Session
( bisa diset melalui setting PHP session_cache_expire )
Session bisa dihapus secara paksa dengan
perintah session_destroy (biasanya dilakukan saat user logout) Terimakasih dan Semoga
Bermanfaat ^^