Dalam dunia pengembangan web, cookie adalah salah satu elemen penting yang sering digunakan untuk menyimpan informasi di sisi pengguna (client side). PHP sebagai bahasa server-side memiliki dukungan penuh untuk bekerja dengan cookie, mulai dari membuat, membaca, hingga menghapusnya. Cookie banyak dipakai dalam berbagai skenario, seperti login pengguna, preferensi tampilan, hingga keranjang belanja di e-commerce. Artikel ini akan membahas secara lengkap bagaimana cookie bekerja di PHP, beserta contoh penggunaannya dalam praktik nyata.
Apa Itu Cookie dan Mengapa Penting?
Sebelum masuk ke kode, ada baiknya memahami konsep dasar cookie. Cookie adalah file kecil yang disimpan pada browser pengguna. File ini menyimpan pasangan key-value yang bisa diakses kembali oleh server saat pengguna melakukan request berikutnya. Dengan cookie, server dapat “mengingat” pengguna meski mereka berpindah halaman.
Tanpa cookie, setiap permintaan HTTP akan dianggap stateless alias tidak memiliki ingatan. Inilah alasan kenapa cookie sangat penting: mereka menjembatani kebutuhan untuk menjaga sesi pengguna agar lebih personal dan terhubung.
Cara Membuat Cookie di PHP
Membuat cookie di PHP sangat mudah dengan fungsi bawaan setcookie(). Fungsi ini biasanya ditempatkan sebelum output HTML dikirim ke browser.
Contoh sederhana:
<?php
setcookie("username", "Andi", time() + 3600, "/");
?>
Penjelasan parameter:
- “username” → nama cookie
- “Andi” → nilai cookie
- time() + 3600 → masa berlaku (1 jam dari sekarang)
- “/” → path, artinya cookie berlaku untuk seluruh domain
Jika pengguna membuka halaman lain dalam waktu 1 jam, cookie ini masih bisa diakses oleh server. Setelah masa berlaku habis, browser akan menghapus cookie secara otomatis.
Membaca Cookie di PHP
Setelah cookie dibuat, bagaimana cara membacanya? PHP menyediakan variabel global $_COOKIE yang menyimpan semua cookie yang dikirimkan browser.
Contoh:
<?php
if (isset($_COOKIE["username"])) {
echo "Selamat datang kembali, " . $_COOKIE["username"];
} else {
echo "Halo, pengguna baru!";
}
?>
Kode di atas akan menampilkan pesan berbeda tergantung apakah cookie username ada atau tidak. Dengan cara ini, kita bisa menampilkan pengalaman yang lebih personal.
Menghapus Cookie
Menghapus cookie tidak cukup hanya dengan unset() di PHP. Caranya adalah dengan membuat cookie baru dengan masa berlaku yang sudah lewat.
Contoh:
<?php
setcookie("username", "", time() - 3600, "/");
?>
Perhatikan bahwa nilai cookie diisi string kosong dan waktunya di-set ke masa lalu. Dengan ini, browser akan menghapus cookie tersebut.
Cookie vs Session di PHP
Meskipun sama-sama digunakan untuk menyimpan data pengguna, cookie dan session memiliki perbedaan mendasar. Cookie tersimpan di browser pengguna, sedangkan session tersimpan di server.
Kelebihan cookie:
- Tidak membebani server.
- Bisa digunakan untuk menyimpan preferensi sederhana.
Kekurangannya:
- Lebih mudah dimanipulasi karena tersimpan di sisi client.
- Tidak aman untuk data sensitif.
Untuk login atau data penting, session jauh lebih disarankan karena lebih aman. Namun, cookie tetap bisa bekerja sama dengan session, misalnya untuk menyimpan session ID.
Menambahkan Keamanan pada Cookie
Dalam praktik nyata, penggunaan cookie harus memperhatikan aspek keamanan. PHP memungkinkan pengaturan flag tambahan saat membuat cookie.
Contoh penggunaan parameter lanjutan:
<?php
setcookie(
"authToken",
"abc123",
time() + 3600,
"/",
"example.com",
true, // Secure (hanya lewat HTTPS)
true // HttpOnly (tidak bisa diakses oleh JavaScript)
);
?>
- Secure: memastikan cookie hanya dikirim lewat koneksi HTTPS.
- HttpOnly: mencegah cookie diakses oleh JavaScript, sehingga lebih aman dari serangan XSS.
Pengaturan ini sangat penting untuk aplikasi modern, terutama yang berkaitan dengan autentikasi pengguna.
Studi Kasus: Menggunakan Cookie untuk Menyimpan Tema Website
Bayangkan sebuah website yang menyediakan fitur dark mode dan light mode. Alih-alih memaksa pengguna memilih ulang setiap kali membuka halaman, kita bisa menyimpan preferensi tersebut di cookie.
Contoh kode:
<?php
if (isset($_POST["tema"])) {
$tema = $_POST["tema"];
setcookie("tema", $tema, time() + (86400 * 30), "/"); // Berlaku 30 hari
}
if (isset($_COOKIE["tema"])) {
echo "Tema saat ini: " . $_COOKIE["tema"];
} else {
echo "Tema default digunakan.";
}
?>
Dengan cara ini, pengguna akan mendapatkan tampilan sesuai pilihan mereka, bahkan saat mereka kembali ke website setelah beberapa hari.
Cookie untuk Sistem Login Sederhana
Meskipun sebaiknya login dikelola dengan session, ada kalanya cookie dipakai untuk mengingat login pengguna (remember me). Contoh berikut hanya untuk tujuan belajar:
<?php
if ($_POST["username"] == "admin" && $_POST["password"] == "1234") {
setcookie("login", "true", time() + 3600, "/");
echo "Login berhasil!";
}
?>
Kemudian di halaman lain:
<?php
if (isset($_COOKIE["login"]) && $_COOKIE["login"] == "true") {
echo "Selamat datang, Admin!";
} else {
echo "Silakan login terlebih dahulu.";
}
?>
Namun, cara ini tidak aman untuk aplikasi nyata karena cookie bisa dicuri atau dimanipulasi. Untuk produksi, gunakan kombinasi session, token, dan enkripsi.
Cookie dengan Array di PHP
PHP juga mendukung penyimpanan cookie dalam bentuk array. Hal ini berguna jika kita ingin menyimpan data lebih dari satu dengan nama yang sama.
Contoh:
<?php
setcookie("user[username]", "Budi", time() + 3600);
setcookie("user[email]", "budi@example.com", time() + 3600);
?>
Cara membacanya:
<?php
if (isset($_COOKIE["user"])) {
foreach ($_COOKIE["user"] as $key => $value) {
echo "$key : $value <br>";
}
}
?>
Hasilnya bisa berupa:
username : Budi
email : budi@example.com
Batasan dan Ukuran Cookie
Cookie bukanlah tempat untuk menyimpan data dalam jumlah besar. Browser umumnya membatasi ukuran cookie hingga 4KB per cookie, dan hanya memperbolehkan sekitar 20-50 cookie per domain. Jika menyimpan data terlalu besar, aplikasi bisa menjadi lambat atau cookie tidak tersimpan sama sekali.
Oleh karena itu, simpan hanya informasi penting atau preferensi kecil dalam cookie, sementara data besar lebih baik disimpan di database.
Kesalahan Umum dalam Penggunaan Cookie
Banyak developer pemula sering mengalami masalah saat menggunakan cookie di PHP. Beberapa kesalahan umum antara lain:
- Menggunakan setcookie setelah output HTML → Cookie tidak akan tersimpan.
- Tidak mengatur path dengan benar → Cookie hanya berlaku pada folder tertentu.
- Lupa mengatur masa berlaku → Cookie langsung hilang setelah browser ditutup.
Dengan memperhatikan detail kecil ini, penggunaan cookie bisa lebih stabil dan sesuai harapan.
