Cookies pada PHP

Untuk mengakses cookies pada PHP, digunakan variabel superglobal $_COOKIE. Berbeda dengan session, cookie disimpan di sisi klien (client side), dan dapat dibaca dan diubah-ubah oleh user (yang mengerti javascript).

Menyimpan data ke dalam cookie pada PHP

Untuk menyimpan cookie pada PHP, gunakan perintah setcookie()

setcookie("nama_cookie", "isi_cookie", $intKapanExpire);

nama_cookie dan isi_cookie harus berupa string. Cookie tidak dapat menerima value (isi) berupa array ataupun object.

$intKapanExpire adalah angka timestamp yang melambangkan waktu saat cookie tersebut akan expired. Misalkan bila membuat suatu cookie yang berlaku selama dua hari:

setcookie("kode_login", "abc123def456", time() + 3600 * 24 * 2);

Di mana 3600 adalah jumlah detik dalam satu jam.

Jika perlu menyimpan array atau object, dapat menggunakan json_encode dan json_decode.

class CartItem{
  public $item_id, $qty;
  public function __construct($arrKeyVal) {
    foreach ($arrKeyVal as $k=>$v) $this->$k = $v;
  }
}
$cart = [];
$cart[] = new CartItem(["item_id"=>1, "qty"=>23]);
$cart[] = new CartItem(["item_id"=>2, "qty"=>37]);
setcookie("cart", json_encode($cart), time()+24*3600*5);

Mengakses cookie pada PHP

Untuk mengakses cookie, pakai perintah

$suatuVar = $_COOKIE['nama_cookie'];

Bila cookie disimpan dalam bentuk json, ambil dengan cara:

class CartItem{
  public $item_id, $qty;
  public function __construct($arrKeyVal) {
    foreach ($arrKeyVal as $k=>$v) $this->$k = $v;
  }
}
$cart = json_decode($_COOKIE["cart"]);
if ($cart != null) {
  foreach ($cart as $k=>$v) $cart[$k] = new CartItem ($v);
}
print_r($cart);

Menghapus cookie pada PHP

Dan untuk menghapus cookie, gunakan:

setcookie("nama_cookie", "nilai kosong juga oke", time()-1);

time()-1 adalah satu detik sebelum sekarang, sehingga cookienya akan langsung expired. Tidak harus -1, Anda bisa menggunakan -2, -10, -2000 dan sebagainya. Tetapi jangan memasukkan 0 ke dalam masa berlaku cookie, karena hasilnya pada browser Internet Explorer akan sulit ditebak.

Tips penting tentang cookie

Jangan pernah menyimpan password di dalam cookie, karena cookie dapat dengan mudah diakses melalui javascript.

Cookie juga dapat diubah dengan mudah melalui javascript. Misalkan Anda menyimpan userid di cookie dan bergantung dengan userid di cookie tersebut untuk login, maka sistem Anda akan dapat dengan mudah dibobol.

Untuk melihat isi cookie, masuk ke console browser (pada umumnya shortcutnya F12). Kemudian ketikkan document.cookie. Untuk mengubah nilai cookie lewat javascript, bisa dengan perintah misalnya: document.cookie += "; userid=1";

Anda mungkin tertarik untuk membaca membuat login remember me dengan PHP.