Ketika berbicara tentang pengembangan web dengan PHP, salah satu fitur yang paling sering digunakan adalah session. Fitur ini memungkinkan data dapat dipertahankan antar halaman, sehingga pengalaman pengguna menjadi lebih konsisten dan personal. Tanpa session, setiap kali pengguna berpindah halaman, data akan hilang begitu saja. Session-lah yang membuat situs bisa “mengenali” pengguna setelah login, menyimpan keranjang belanja di e-commerce, atau menampilkan preferensi yang sudah disimpan.
Apa Itu Session di PHP?
Session di PHP adalah mekanisme penyimpanan data sementara yang berjalan di server. Data ini dihubungkan dengan pengguna tertentu melalui Session ID, biasanya dikirimkan lewat cookie atau URL. Dengan cara ini, server dapat membedakan data milik satu pengguna dengan pengguna lain.
Berbeda dengan cookie yang disimpan di browser, session menyimpan informasi di server, sehingga relatif lebih aman dari manipulasi langsung oleh pengguna.
Cara Kerja Session di PHP
Sebelum mulai menulis kode, penting untuk memahami alur kerja session. Saat pengguna pertama kali mengakses halaman, PHP akan:
- Membuat Session ID unik.
- Menyimpan data session di server, biasanya berupa file di folder
tmp. - Mengirimkan Session ID ke browser melalui cookie.
- Pada setiap request berikutnya, browser mengirim kembali Session ID tersebut sehingga server tahu data siapa yang sedang diakses.
Dengan mekanisme ini, session menjadi semacam “identitas sementara” yang berlaku selama pengguna masih berinteraksi dengan aplikasi web.
Memulai Session dengan session_start()
Setiap kali ingin menggunakan session di PHP, langkah pertama yang harus dilakukan adalah memanggil fungsi session_start(). Fungsi ini harus ditulis di bagian paling atas skrip PHP, sebelum ada output HTML apapun.
Contoh kode:
<?php
session_start();
$_SESSION['username'] = "Chanelle";
echo "Halo, " . $_SESSION['username'];
?>
Kode di atas akan menyimpan nilai Chanelle ke dalam session dengan key username. Di halaman lain, selama session masih aktif, data ini bisa dipanggil kembali.
Menyimpan dan Mengambil Data Session
Session bekerja seperti array asosiatif di PHP. Kita bisa dengan mudah menyimpan nilai dengan menuliskan:
$_SESSION['email'] = "user@example.com";
Untuk mengambilnya, cukup panggil:
echo $_SESSION['email'];
Karena fleksibilitas ini, session sering digunakan untuk menyimpan informasi login, preferensi, atau data sementara lain yang perlu bertahan antar halaman.
Menghapus Data Session
Dalam beberapa kasus, data session harus dihapus. Misalnya saat pengguna melakukan logout. Ada dua cara umum:
- Menghapus variabel tertentu:
unset($_SESSION['username']);Cara ini hanya menghapus satu key di dalam session. - Menghapus seluruh session:
session_destroy();Fungsi ini akan menghapus semua data yang tersimpan di session. Biasanya digunakan saat logout total.
Perbedaan Session dan Cookie
Sekilas, session mirip dengan cookie karena keduanya bisa digunakan untuk menyimpan data antar halaman. Namun ada perbedaan mendasar:
- Lokasi Penyimpanan: Session disimpan di server, sedangkan cookie disimpan di browser.
- Keamanan: Session lebih aman karena tidak terlihat langsung oleh pengguna, sedangkan cookie bisa dimodifikasi dari sisi client.
- Ukuran Data: Cookie dibatasi hingga 4KB, sementara session dapat menyimpan data lebih besar karena dikelola di server.
- Masa Berlaku: Cookie bisa diset bertahan lama (bahkan setelah browser ditutup), sedangkan session biasanya berakhir ketika browser ditutup atau waktu tertentu habis.
Masa Hidup Session
Session di PHP tidak berlangsung selamanya. Ada batas waktu yang disebut session lifetime. Secara default, PHP akan menghapus session setelah sekitar 24 menit tidak aktif, tapi ini bisa diubah dengan konfigurasi php.ini:
session.gc_maxlifetime = 3600
Kode di atas akan membuat session aktif hingga 1 jam. Namun, masa hidup session juga bisa dipengaruhi oleh browser, terutama jika pengguna menutup tab atau membersihkan cookie.
Studi Kasus: Sistem Login dengan Session
Salah satu implementasi paling umum adalah pada sistem login. Prosesnya biasanya seperti ini:
- Pengguna memasukkan username dan password.
- Server memverifikasi data dengan database.
- Jika valid, server menyimpan data pengguna ke session.
- Selama session aktif, pengguna dianggap sudah login.
Contoh kode sederhana:
<?php
session_start();
if ($_POST['username'] == "admin" && $_POST['password'] == "1234") {
$_SESSION['is_login'] = true;
header("Location: dashboard.php");
} else {
echo "Login gagal!";
}
?>
Lalu di halaman dashboard.php:
<?php
session_start();
if (!isset($_SESSION['is_login'])) {
header("Location: login.php");
exit;
}
echo "Selamat datang di Dashboard!";
?>
Dengan pendekatan ini, session memastikan hanya pengguna yang sudah login yang bisa mengakses halaman tertentu.
Keamanan Session di PHP
Karena session menyimpan data penting, ada beberapa aspek keamanan yang harus diperhatikan:
- Session Hijacking: Pencurian Session ID bisa membuat orang lain masuk ke akun pengguna. Solusinya dengan regenerasi Session ID:
session_regenerate_id(true); - HTTPS: Pastikan session berjalan melalui koneksi aman agar Session ID tidak bisa disadap.
- HttpOnly Cookie: Mengatur cookie session agar tidak bisa diakses melalui JavaScript, mengurangi risiko XSS.
Session dan Skala Aplikasi
Pada aplikasi kecil, session biasanya disimpan sebagai file di server. Namun, pada aplikasi besar yang melibatkan banyak server, session sering dipindahkan ke database atau in-memory cache seperti Redis atau Memcached. Tujuannya agar data session bisa diakses dari banyak server sekaligus tanpa terikat pada satu mesin.
Kesalahan Umum Saat Menggunakan Session
Banyak pemula yang sering melakukan kesalahan ketika bekerja dengan session. Beberapa di antaranya:
- Lupa memanggil
session_start()sebelum mengakses$_SESSION. - Meletakkan
session_start()setelah ada output HTML sehingga menghasilkan error. - Tidak menghapus session setelah logout sehingga data masih tersisa.
- Mengandalkan session tanpa memperhatikan masa hidupnya, sehingga pengguna tiba-tiba ter-logout.
Kesalahan-kesalahan ini tampak sederhana, tapi bisa berdampak besar pada kenyamanan pengguna.
Menghubungkan Session dengan Pengalaman Pengguna
Lebih jauh dari sekadar menyimpan data, session juga memengaruhi bagaimana pengguna berinteraksi dengan aplikasi. Misalnya, sebuah e-commerce tanpa session tidak bisa menyimpan keranjang belanja antar halaman. Situs berita tanpa session tidak bisa menampilkan rekomendasi sesuai preferensi pembaca. Bahkan forum online membutuhkan session untuk memastikan setiap komentar dan posting dikaitkan dengan akun yang benar.
