Apa Itu Cookie di PHP?
Cookie di PHP adalah file kecil yang disimpan di browser pengguna untuk menyimpan informasi sementara, seperti username, preferensi tema, atau status login. Berbeda dengan session yang disimpan di server, cookie disimpan di sisi klien (browser).
Dengan cookie, website dapat mengingat pengguna bahkan setelah browser ditutup dan dibuka kembali — selama masa berlaku cookie belum habis.
Cara Kerja Cookie di PHP
Berikut alur sederhana bagaimana cookie bekerja:
-
Server mengirimkan data cookie ke browser.
-
Browser menyimpan cookie tersebut di lokal (misalnya:
C:\Users\<nama>\AppData\Local\Google\Chrome\User Data). -
Setiap kali pengguna mengunjungi halaman yang sama, browser mengirimkan cookie itu kembali ke server.
-
Server dapat membaca cookie tersebut untuk mengenali pengguna.
Membuat dan Mengatur Cookie di PHP
PHP menyediakan fungsi setcookie() untuk membuat cookie.
Contoh Sederhana:
<?php
// set cookie yang berlaku selama 1 jam
setcookie("username", "Arvian", time() + 3600, "/");
echo "Cookie berhasil dibuat!";
?>
Penjelasan parameter:
-
"username"→ nama cookie -
"Arvian"→ nilai cookie -
time() + 3600→ masa berlaku (1 jam) -
"/"→ path berlaku di seluruh website
Membaca Cookie di PHP
Untuk membaca cookie yang sudah diset:
<?php
if (isset($_COOKIE['username'])) {
echo "Selamat datang, " . $_COOKIE['username'];
} else {
echo "Cookie belum diset.";
}
?>
Menghapus Cookie di PHP
Menghapus cookie dilakukan dengan mengatur waktu kadaluarsa ke masa lalu:
<?php
setcookie("username", "", time() - 3600, "/");
echo "Cookie berhasil dihapus!";
?>
Contoh Login Menggunakan Cookie
Cookie sering digunakan untuk fitur “Remember Me” di halaman login.
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// contoh sederhana (harusnya gunakan hashing)
if ($username == 'admin' && $password == '12345') {
if (isset($_POST['remember'])) {
setcookie("username", $username, time() + (86400 * 7), "/"); // berlaku 7 hari
}
header("Location: dashboard.php");
} else {
echo "Login gagal!";
}
}
?>
<form method="post">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
<label><input type="checkbox" name="remember"> Remember Me</label><br>
<button type="submit">Login</button>
</form>
Keamanan Cookie
Walaupun berguna, cookie juga bisa menjadi celah keamanan jika tidak dijaga dengan benar. Berikut beberapa praktik aman:
a. Gunakan httponly dan secure flag
Mencegah cookie dibaca oleh JavaScript (untuk menghindari XSS):
<?php
setcookie("username", "Arvian", time() + 3600, "/", "", true, true);
?>
Parameter true, true artinya:
-
secure= hanya dikirim lewat HTTPS -
httponly= tidak bisa diakses lewat JavaScript
b. Hindari Menyimpan Data Sensitif
Jangan pernah menyimpan password, token, atau informasi penting di cookie.
c. Gunakan Enkripsi
Jika harus menyimpan data penting (misalnya user ID), gunakan enkripsi sederhana:
<?php
$user_id = 123;
$encrypted = base64_encode($user_id);
setcookie("user_id", $encrypted, time() + 3600, "/");
?>
Dan untuk membacanya:
<?php $user_id = base64_decode($_COOKIE['user_id']); ?>
Perbedaan Cookie dan Session
| Fitur | Cookie | Session |
|---|---|---|
| Lokasi Penyimpanan | Browser (klien) | Server |
| Keamanan | Lebih rentan | Lebih aman |
| Durasi | Bisa bertahan lama | Hanya selama sesi aktif |
| Ukuran Maksimum | ±4KB per domain | Tidak terbatas (tergantung server) |
Kesimpulan
Cookie di PHP membantu kita mengenali pengguna antar sesi dan menyimpan preferensi pengguna secara berkelanjutan. Namun, karena disimpan di browser, cookie harus digunakan dengan hati-hati dan diamankan menggunakan httponly, secure, serta tidak menyimpan data sensitif.