Apa Itu Session di PHP?
Session di PHP adalah mekanisme penyimpanan data sementara di server yang digunakan untuk mengidentifikasi pengguna selama sesi tertentu.
Berbeda dengan cookie yang disimpan di browser pengguna, session disimpan di sisi server dan hanya menyimpan ID unik (session ID) di browser.
Dengan session, aplikasi web dapat mengingat pengguna yang sedang login, menyimpan data keranjang belanja, atau status tertentu antar halaman.
Cara Kerja Session
-
Pengguna mengakses halaman web.
-
PHP membuat session ID unik dan menyimpannya di server.
-
Session ID tersebut dikirim ke browser pengguna melalui cookie.
-
Ketika pengguna berpindah halaman, browser mengirimkan kembali session ID itu.
-
Server mengenali pengguna berdasarkan session ID tersebut.
Semua data session di server biasanya disimpan dalam folder:
/tmp/sess_xxxxxxxxxxxxxxx
Cara Menggunakan Session di PHP
1. Memulai Session
Untuk mulai menggunakan session, tambahkan fungsi berikut di baris paling atas file PHP:
<?php session_start(); // wajib sebelum output HTML ?>
2. Menyimpan Data ke Session
<?php session_start(); $_SESSION['username'] = 'Arvian'; $_SESSION['role'] = 'admin'; echo "Session disimpan!"; ?>
3. Mengambil Data Session
<?php session_start(); echo "Selamat datang, " . $_SESSION['username']; ?>
4. Menghapus Data Session
<?php session_start(); unset($_SESSION['username']); // hapus 1 data session_destroy(); // hapus semua data session echo "Session dihapus."; ?>
Contoh Login Menggunakan Session
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// contoh sederhana (harusnya gunakan hashing)
if ($username == 'admin' && $password == '12345') {
$_SESSION['username'] = $username;
header('Location: dashboard.php');
exit;
} else {
echo "Login gagal!";
}
}
?>
<form method="post">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
<button type="submit">Login</button>
</form>
Logout Menghapus Session
<?php
session_start();
session_destroy();
header("Location: login.php");
exit;
?>
Keamanan Session
a. Gunakan session_regenerate_id()
Untuk mencegah session fixation attack, buat ulang ID session setelah login:
<?php session_start(); session_regenerate_id(true); ?>
b. Batasi Waktu Aktif Session
<?php
$_SESSION['last_activity'] = time();
$timeout = 600; // 10 menit
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > $timeout)) {
session_destroy();
header("Location: login.php?timeout=true");
exit;
}
?>
c. Simpan Session di Server Aman
Gunakan HTTPS agar cookie PHPSESSID tidak mudah dicuri.
Kesimpulan
Session di PHP adalah fondasi penting dalam manajemen login dan data pengguna. Dengan memahami cara kerja, penggunaan dasar, dan langkah keamanan seperti session_regenerate_id() dan HTTPS, kamu bisa membuat aplikasi PHP yang aman dan andal.
Pingback: Memahami Cookie di PHP: Cara Kerja, Contoh, dan Keamanan Pengguna - Tutorial