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 merupakan kombinasi dari clientside 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 disimpan pada 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).
Pengelolaan 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
Pengelolaan Session - Saving
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)
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)
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)
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)