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

  1. PHP membuat session ID unik (berupa string acak panjang)
  2. Session ID disimpan di cookie browser user (PHPSESSID)
  3. Data session disimpan di server (biasanya di folder temp)
  4. 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() lalu session_destroy()
  • Selalu cek keberadaan session sebelum mengakses halaman terproteksi

Tutorial berikutnya membahas cookie di PHP.


ariq fadhil

Im Ariq Tech, a Top Rated Fullstack Developer with 5+ years of experience, delivering high-quality solutions across 50+ projects.