rekayasa perangkat lunak · pdf filebagaimana keranjang belanja pengguna tetap tersimpan...

33
PHP State, Session dan Cookies 4 Pemrograman Web Adam Hendra Brata

Upload: vutu

Post on 06-Feb-2018

240 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

PHP State, Session dan Cookies 4Pemrograman Web

Adam Hendra Brata

Page 2: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Konsep State pada PHP Stateless

Statefull

Session

Cookies

Pokok Bahasan

Page 3: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

PHP State

Page 4: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 5: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

PHP State - Stateless

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Sistem langsung memberikan response kepada user dengan langsung memberikan halaman baru

Page 6: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 7: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 8: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 9: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

PHP State dapat dibentuk menggunakan : Cookies

Session

PHP State

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session Create

Use

Destroy

Page 10: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

Cookies

Page 11: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 12: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 13: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 14: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 15: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 16: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 17: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 18: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Session

Page 19: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 20: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Session

Page 21: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

Menerima informasi cookies :

Gunakan isset untuk mengetahui apakah cookies yang diinginkan ada

Pengelolaan Cookies

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Page 22: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

Session

Page 23: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 24: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 25: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 26: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

Memulai session

Memberi nilai pada variabel session

Membaca nilai dari variabel session

Pengelolaan Session

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Page 27: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

Menghapus sebuah variabel session

Menghapus semua session pada pengguna tertentu

Pengelolaan Session

Pokok Bahasan

Konsep State pada PHP

- Stateless- Statefull

Cookies

Session

Page 28: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 29: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 30: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Page 31: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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

Latihan

Page 32: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

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 :

PW-A-2-126060312111002

Latihan

Latihan

Page 33: Rekayasa Perangkat Lunak · PDF fileBagaimana keranjang belanja pengguna tetap tersimpan ketika pengguna tersebut melihat –lihat barang di halaman lain untuk

Terimakasih dan Semoga

Bermanfaat ^^