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