Tutorial PHP #17: Session di PHP
1. Apa itu Session?
HTTP bersifat stateless - artinya setiap request dianggap baru dan server tidak ingat request sebelumnya. Session adalah solusi untuk masalah ini: session menyimpan data user di server sehingga bisa diakses di seluruh halaman selama user masih aktif.
Contoh penggunaan session: sistem login - setelah user login, session menyimpan data user agar tidak perlu login ulang di setiap halaman.
2. Cara Kerja Session
- PHP membuat session ID unik (berupa string acak panjang)
- Session ID disimpan di cookie browser user (
PHPSESSID) - Data session disimpan di server (biasanya di folder temp)
- Setiap request, PHP mencocokkan cookie session ID dengan data di server
3. Memulai Session
session_start() harus dipanggil sebelum output apapun - sebelum HTML, echo, atau spasi sekalipun.
<?php
session_start(); // HARUS di baris paling atas!
// Menyimpan data ke session
$_SESSION["user_id"] = 1;
$_SESSION["username"] = "ariq";
$_SESSION["role"] = "admin";
$_SESSION["login_at"] = time();
echo "Session berhasil dibuat";
?>
4. Mengambil Data Session
<?php
session_start();
// Mengambil data session
if (isset($_SESSION["username"])) {
echo "Halo, " . $_SESSION["username"] . "!";
echo "Role: " . $_SESSION["role"];
} else {
echo "Silakan login terlebih dahulu";
header("Location: login.php");
exit;
}
?>
5. Contoh Implementasi Login Session
<?php
// login.php
session_start();
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$username = $_POST["username"] ?? "";
$password = $_POST["password"] ?? "";
// Simulasi cek user (normalnya dari database)
if ($username === "admin" && $password === "admin123") {
$_SESSION["logged_in"] = true;
$_SESSION["username"] = $username;
$_SESSION["role"] = "admin";
header("Location: dashboard.php");
exit;
} else {
$error = "Username atau password salah";
}
}
?>
<?php
// dashboard.php - halaman yang perlu login
session_start();
if (!isset($_SESSION["logged_in"]) || !$_SESSION["logged_in"]) {
header("Location: login.php");
exit;
}
echo "Selamat datang, " . $_SESSION["username"] . "!";
?>
6. Menghapus Session (Logout)
<?php
// logout.php
session_start();
// Hapus semua data session
session_unset();
// Hancurkan session
session_destroy();
// Hapus cookie session dari browser
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), "", time() - 3600, "/");
}
header("Location: login.php");
exit;
?>
7. Konfigurasi Session
<?php
// Atur durasi session sebelum session_start()
ini_set("session.gc_maxlifetime", 3600); // 1 jam
session_set_cookie_params(3600);
session_start();
// Cek apakah session sudah expired
if (isset($_SESSION["login_at"]) && (time() - $_SESSION["login_at"]) > 3600) {
session_destroy();
header("Location: login.php?expired=1");
exit;
}
?>
8. Ringkasan
- Session menyimpan data user di server antar halaman
session_start()wajib dipanggil sebelum output apapun- Data session diakses via
$_SESSION - Untuk logout:
session_unset()lalusession_destroy() - Selalu cek keberadaan session sebelum mengakses halaman terproteksi
Tutorial berikutnya membahas cookie di PHP.
.jpg)
