Cookies dan Session
Yang akan Kita Pelajari Cookies Session
Stateful Browser/Server Interaction Stateful adalah kemampuan situs untuk mempertahankan state (keadaan) Situs seperti facebook.com, amazon.com dll, seakan-akan tahu siapa kita, bagaimana situs-situs tersebut melakukan ini?, bagaimana caranya server menyediakan isi yang spesifik sesuai dengan yang kita inginkan? Sekarang, kita akan mempelajari sebuah data yang disebut cookies yang digunakan sebagai dasar untuk mempertahankan session antara browser dengan server HTTP adalah protocol yang stateless, jadi hanya memungkinkan untuk browser meminta satu dokumen saja dari web server
Apa yang Dimaksud dengan Cookies? Cookies adalah informasi (biasanya kecil) yang dikirim oleh server kepada browser dan kemudian dikirim balik oleh browser untuk request (permintaan) berikutnya 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)
Bagaimana Cookie Dikirim? 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 alternatif : kode javascript bisa melakukan set/get cookies
Mitos dan Fakta Seputar Cookies 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
Berapa Lama Cookies Ada? 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
Dimana Cookies Disimpan? C:\Documents and Settings\administrator\Cookies Firefox : %APPDATA%\Mozilla\Firefox\???.default\cookies.txt Dimana ??? adalah karakter acak Chrome : Pada Win XP – C:\Documents and Settings\<User Name>\Local Settings\Application Data\Google\Chrome\User Data Pada Win Vista - C:\Users\<User Name>\AppData\Local\Google\Chrome\User Data
Cookies di JavaScript JavaScript mempunyai field global document.cookie Kita bisa melakukan set/get cookies dari field ini dan kemudian menyimpannya di browser Kita tidak bisa menghapus cookies, tetapi bisa membuat cookies tersebut expire
Set Cookies di PHP Perintah setcookie ini membuat server mengirimkan cookie ke browser setcookie ini harus dipanggil sebelum ada statement output dijalankan ( blok HTML, print atau echo ) Kita bisa membuat cookies multiple (20-50) dengan ukuran sekitar 3-4 kilo bytes
Menerima Informasi dari Cookies Cookies yang dikirim oleh browser akan di simpan di associative array $_COOKIE Gunakan isset untuk mengetahui apakan cookies yang diinginkan ada
Setting Persistent Cookie di PHP Untuk menjadikan cookie persisten (disimpan), kita harus menambahkan parameter ketiga yaitu timeout (waktu kedaluwarsa) Fungsi time() ini dalam detik, misalkan kita ingin timeout di set 1 jam maka kita isi dengan time() + 3600
Menghapus Persistent Cookies Jika server ingin menghapus persisten cookie, maka cookie tersebut di set ulang dengan timeout yang sudah terjadi
Yang akan Kita Pelajari Cookies Session
Apa yang Dimaksud Dengan 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 di simpan oleh browser dalam bentuk cookie
Bagaimana Sebuah Session Terjadi 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
Session di PHP : session_start() 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
Mengakses Data Session Associative array $_SESSION membaca dan menyimpan semua data session Gunakan isset() untuk mengetahui apakah isi dari session tersebut ada atau tidak
Dimanakah Session Disimpan? 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)
Jika Browser Tidak Support Cookies Jika browser tidak support cookies, kita masih bisa mengirimkannya melalui parameter querystring dengan nama PHPSESSID , hal ini dilakukan secara otomatis saat kita membuat session_start() di PHP Fungsi session_id() digunakan untuk menerima id session dari client jika diperlukan
Session Timeout 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)