34
PHP State, Session dan Cookies Pemrograman Web Adam Hendra Brata

Rekayasa Perangkat Lunak menggunakan HTTP PHP State - Statefull Pokok Bahasan Konsep State pada PHP - Stateless - Statefull Cookies Session Create Use Destroy. PHP State - Statefull

Embed Size (px)

Citation preview

PHP State, Session dan CookiesPemrograman Web

Adam Hendra Brata

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Konsep State pada PHP Stateless

Statefull

Session

Cookies

Pokok Bahasan

PHP State

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

Session

PHP State - Stateless

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Sistem langsung memberikan response kepada user dengan langsung memberikan halaman baru

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

Destroy

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

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

Session

PHP State dapat dibentuk menggunakan : Cookies

Session

PHP State

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session Create

Use

Destroy

Cookies

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

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)

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

Cara Kerja 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

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

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 dapatmengaktifkan atau me-non-aftifkan penggunaan cookie pada web browser yangkita 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

Serba-Serbi 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

Digunakan untuk 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

Session

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

Session

Dalam PHP Cookie ditangani dengansuperglobal 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

Session

Menerima informasi cookies :

Gunakan isset untuk mengetahui apakah cookies yang diinginkan ada

Pengelolaan Cookies

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Biasanya dalam pengelolaan cookies dalam PHP sering ditemui “masalah” atau peringatan yang bunyinya :

Peringatan ini muncul karena kita memunculkan dua elemen program "header" dalam satu halaman yang diload oleh web browser

Dengan kata lain, data cookie yang kita buat 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

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Warning: Cannot modify header information - headers already sent by...

Solusinya : Selalu letakkan proses pembuatan

cookie sebelum tag <html> atau bahkan sebelum tag <doctype>

Pengelolaan Cookies - Warning

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Selain menggunakan PHP, cookies dapat dibentuk dengan menggunakan Javascript karena pada dasarnya cookies disimpan di browser, sehingga Javascript dapat memanipulasinya

Pengelolaan Cookies

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

<script>document.cookie=“[name]=[value]";</script>

<script>document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";</script>

<script>var x = document.cookie;</script>

Session

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

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 disimpanpada 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

Session

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

Session

Memulai session

Memberi nilai pada variabel session

Membaca nilai dari variabel session

Pengelolaan Session

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Menghapus sebuah variabel session

Menghapus semua session pada pengguna tertentu

Pengelolaan Session

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 - Start

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)

Pengelolaan Session - Saving

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)

Session Timeout

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Terimakasih dan Semoga

Bermanfaat ^^