Perbedaan Cookie dan Session di PHP (Studi Kasus Login & Remember Me)

By | 14 October 2025

Dalam pengembangan web, cookie dan session adalah dua konsep penting untuk menyimpan data pengguna antar halaman. Keduanya sering digunakan untuk keperluan login, pengingat pengguna, dan personalisasi pengalaman web. Namun, banyak pemula masih bingung, apa sebenarnya perbedaan cookie dan session di PHP, dan kapan harus menggunakan masing-masing?

Untuk menjawabnya, kita akan bahas dari konsep dasar hingga contoh nyata menggunakan studi kasus login dengan fitur “Remember Me”.

Apa Itu Cookie di PHP

Cookie adalah data kecil yang disimpan di browser pengguna. Cookie digunakan agar situs dapat mengenali pengguna saat mereka kembali membuka website — meskipun browser sudah ditutup.

Contoh membuat cookie:

<?php
setcookie("username", "Arvian", time() + 3600, "/"); // berlaku 1 jam
?>

Cookie dikirim ke server setiap kali pengguna mengunjungi situs tersebut kembali.

Cocok digunakan untuk:

  • Menyimpan preferensi pengguna (tema gelap/terang)

  • Menyimpan login otomatis (Remember Me)

  • Menyimpan data ringan antar kunjungan

Apa Itu Session di PHP

Session disimpan di sisi server, bukan browser. Saat pengguna membuka situs, PHP membuat session_id unik dan menyimpannya sementara di browser (biasanya dalam cookie bernama PHPSESSID).

Contoh menggunakan session:

<?php
session_start();
$_SESSION['username'] = "Arvian";
echo $_SESSION['username'];
?>

Cocok digunakan untuk:

  • Menyimpan status login yang aman

  • Menyimpan data sensitif (ID user, role, token)

  • Menangani proses checkout atau form bertahap

Tabel Perbandingan Cookie vs Session

Aspek Cookie Session
Lokasi penyimpanan Browser (klien) Server
Keamanan Rentan dicuri (XSS) Lebih aman
Ukuran Maks. ±4KB per domain Tidak terbatas (bergantung server)
Lama hidup Bisa bertahan lama Hilang saat browser ditutup
Akses Bisa dibaca JavaScript Hanya diakses oleh server PHP
Penggunaan umum “Remember Me”, preferensi Login, keranjang belanja, autentikasi

Studi Kasus: Login dengan “Remember Me”

Sekarang kita gabungkan konsep session dan cookie dalam kasus nyata — sistem login dengan fitur “Ingat Saya”.

Struktur file:

config.php
login.php
dashboard.php
logout.php

File: config.php

<?php
$host = "localhost";
$user = "root";
$pass = "";
$db   = "db_login";

$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
    die("Koneksi gagal: " . $conn->connect_error);
}
?>

File: login.php

<?php
session_start();
include 'config.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = trim($_POST['username']);
    $password = $_POST['password'];
    $remember = isset($_POST['remember']);

    $stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows > 0) {
        $user = $result->fetch_assoc();

        if (password_verify($password, $user['password'])) {
            $_SESSION['user'] = $user['username'];

            // Jika Remember Me dicentang → buat cookie
            if ($remember) {
                setcookie("remember_user", $user['username'], time() + (86400 * 7), "/", "", false, true);
            }

            header("Location: dashboard.php");
            exit;
        } else {
            echo "<div class='alert alert-danger'>Password salah!</div>";
        }
    } else {
        echo "<div class='alert alert-danger'>Username tidak ditemukan!</div>";
    }
}
?>

<form method="POST">
  <h3>Login</h3>
  <input type="text" name="username" placeholder="Username" required><br>
  <input type="password" name="password" placeholder="Password" required><br>
  <label><input type="checkbox" name="remember"> Ingat Saya</label><br>
  <button type="submit">Login</button>
</form>

File: dashboard.php

<?php
session_start();

// jika session belum ada, coba periksa cookie
if (!isset($_SESSION['user']) && isset($_COOKIE['remember_user'])) {
    $_SESSION['user'] = $_COOKIE['remember_user'];
}

if (!isset($_SESSION['user'])) {
    header("Location: login.php");
    exit;
}
?>

<h2>Selamat Datang, <?php echo $_SESSION['user']; ?>!</h2>
<p>Anda berhasil login menggunakan <?php echo isset($_COOKIE['remember_user']) ? 'Cookie' : 'Session'; ?>.</p>
<a href="logout.php">Logout</a>

File: logout.php

<?php
session_start();
session_destroy();

// hapus cookie juga
setcookie("remember_user", "", time() - 3600, "/");
header("Location: login.php");
exit;
?>

Penjelasan Mekanisme Login

Tahap Proses
1. Login Jika pengguna berhasil login, data disimpan di $_SESSION.
2. Remember Me Jika dicentang, cookie “remember_user” dibuat dan disimpan di browser selama 7 hari.
3. Revisit Saat user membuka kembali situs tanpa logout, sistem membaca cookie dan otomatis login.
4. Logout Menghapus session dan cookie agar pengguna benar-benar keluar.

Tips Keamanan

Jangan simpan password dalam cookie!
Simpan hanya ID atau username, bukan data sensitif.

Gunakan httponly dan secure flag
Untuk mencegah cookie dicuri oleh JavaScript:

<?php
setcookie("remember_user", $user['username'], time() + (86400 * 7), "/", "", true, true);
?>

Gunakan Token Unik untuk Remember Me (lebih aman)
Simpan token acak di database dan cookie, lalu cocokkan saat pengguna kembali login.

Kesimpulan

Baik cookie maupun session memiliki peran penting dalam manajemen pengguna di PHP.

  • Session lebih aman untuk data sensitif (login, autentikasi).

  • Cookie berguna untuk kenyamanan pengguna (Remember Me, preferensi).

Dengan memadukan keduanya, kamu bisa membangun sistem login yang aman sekaligus user-friendly.

Category: PHP