HTTP pada dasarnya bersifat stateless — server tidak “mengingat” pengunjung antar permintaan. Untuk menyimpan informasi kecil di sisi pengunjung, kita bisa memakai PHP Cookie. Cookie sering dipakai untuk mengingat preferensi pengguna atau fitur “ingat saya” pada halaman login.
Apa Itu Cookie?
Cookie adalah potongan data kecil yang disimpan di browser pengunjung. Setiap kali pengunjung membuka situs Anda, browser otomatis mengirim cookie tersebut kembali ke server. Dengan begitu, situs bisa “mengenali” pengunjung yang datang kembali.
Membuat Cookie
Gunakan fungsi setcookie(). Penting: fungsi ini harus dipanggil sebelum ada output HTML apa pun:
<?php
// nama, nilai, waktu kedaluwarsa
setcookie("pengguna", "Budi", time() + 3600); // berlaku 1 jam
?>
Parameter time() + 3600 berarti cookie kedaluwarsa satu jam dari sekarang (3600 detik).
Membaca Cookie
Cookie yang tersimpan dapat dibaca lewat superglobal $_COOKIE. Perlu diingat, cookie baru bisa dibaca pada permintaan berikutnya, bukan pada saat yang sama ia dibuat:
<?php
if (isset($_COOKIE["pengguna"])) {
echo "Selamat datang kembali, " . $_COOKIE["pengguna"];
} else {
echo "Halo, pengunjung baru!";
}
?>
Menghapus Cookie
Untuk menghapus cookie, setel ulang dengan waktu kedaluwarsa di masa lampau:
<?php
setcookie("pengguna", "", time() - 3600);
?>
Opsi Keamanan Cookie
Untuk cookie yang lebih aman, gunakan opsi tambahan:
<?php
setcookie("token", "abc123", [
"expires" => time() + 3600,
"httponly" => true, // tidak bisa diakses JavaScript (anti-XSS)
"secure" => true, // hanya lewat HTTPS
"samesite" => "Strict"
]);
?>
Cookie vs Session
Perbedaan mendasar: cookie disimpan di browser (sisi klien), sedangkan session disimpan di server. Karena itu, jangan pernah menyimpan data sensitif seperti password atau saldo di cookie — gunakan session untuk itu.
Kesalahan Umum
- Memanggil setcookie() setelah ada output, menyebabkan error “headers already sent”.
- Menyimpan data rahasia di cookie — datanya bisa dilihat dan diubah pengguna.
Kesimpulan
PHP Cookie cocok untuk menyimpan data ringan dan tidak rahasia di sisi pengguna, seperti preferензи tema atau bahasa. Untuk data penting dan status login, kombinasikan dengan session yang lebih aman.
Referensi: untuk penjelasan lebih mendalam, kunjungi dokumentasi resmi PHP (php.net).

