Menggunakan Cookies Dan Session di PHP

| | | PHP
Menggunakan Cookies Dan Session di PHP

Membuat dan menggunakan Cookie di PHP adalah cara menyimpan data sementara di sisi client, sedangkan kalau ingin menyimpan di sisi server bisa pakai Session.

Cookie HTTP adalah data kecil yang dikirim dari situs web dan disimpan di komputer pengguna oleh browser saat browsing, biasanya lewat HTTP Header.

syntax cookie di php :

setcookie(name, value, expire, path, domain, secure, httponly);

beberapa parameter yang ada di cookie PHP:

  • name : kunci untuk mengambil nilai dari $_COOKIE superglobal. satu-satunya parameter yang wajib ada
  • value : nilai yang disimpan dalam cookie. data ini bisa diakses browser, jadi jangan simpan data sensitif di sini
  • expire : timestamp Unix kapan cookie kedaluwarsa. kalau di-set 0, cookie berakhir saat sesi browser ditutup
  • path : cakupan cookie. / berarti tersedia di seluruh domain
  • domain : domain atau subdomain tempat cookie tersedia
  • secure : kalau true, cookie hanya dikirim lewat koneksi HTTPS
  • httponly : kalau true, cookie tidak bisa diakses JavaScript, hanya lewat HTTP/HTTPS
  • membuat dan memodifikasi cookie:
setcookie('user', 'Sigit N', time() + 86400, '/');
  • pengecekan data cookie:
if (isset($_COOKIE['user'])) {
  echo 'kamu sebagai user ' . $_COOKIE['user'];
} else {
  // kondisi cookie tidak diset
  echo 'Kamu tidak sedang login';
}
  • mengambil data di cookie:
echo $_COOKIE['user'];
  • menghapus data cookie dengan mengatur waktu kedaluwarsa ke masa lalu:
setcookie('user', '', time() - 3600, '/');

Penjelasan :

  • setcookie('user', 'Sigit N', time() + 86400, '/') : membuat cookie user bernilai Sigit N yang berlaku 1 hari (86400 detik) di seluruh path
  • perlu diingat, cookie baru bisa diakses lewat $_COOKIE di request berikutnya, bukan langsung di halaman yang sama. jadi setelah set, refresh dulu
  • untuk menghapus cookie, set waktu kedaluwarsanya ke waktu yang sudah lewat, misal time() - 3600

Mengenal Session di PHP

Session sama seperti cookie, tapi datanya disimpan di sisi server. session butuh cookie juga, isinya cuma key acak untuk mengunci session. biasanya di PHP ada header PHPSESSID, itu key dari session.

  • penyimpanan utama session ada di sisi server, key-nya (PHPSESSID) disimpan di cookie
  • cookie disimpan penuh di sisi client web browser
  • session cocok untuk menyimpan data sensitif yang tidak boleh dimodifikasi di sisi client

pemanfaatan cookie:

  • memunculkan pesan sementara
  • data sementara seperti analitik user
  • keranjang belanja untuk ecommerce
  • menyimpan preferensi user (tema, bahasa)
  • history browsing

sedangkan pemanfaatan session:

  • menyimpan data login user
  • menyimpan token sementara
  • status data untuk flagging
  • middleware seperti di laravel

Implementasi Syntax Session di PHP

  • memulai Session:
<?php
session_start();
?>
  • simpan dan cek data Session:
<?php

session_start();

$_SESSION['id'] = 441;

if (!isset($_SESSION['login'])) {
    echo 'Silahkan Login terlebih dahulu';
    exit;
}

$user = $_SESSION['login'];
$name = $_SESSION['name'] ?? 'Guest';

?>
  • mengambil data di Session:
$_SESSION['id'] = 1443;
echo $_SESSION['id'];
  • menghapus data Session:
session_start();
$_SESSION = [];

Penjelasan :

Pertanyaan yang Sering Diajukan

Apa beda cookie dan session di PHP?

Cookie disimpan di sisi client (browser) dan bisa diakses user, sedangkan session datanya disimpan di sisi server dan hanya menyimpan key-nya (PHPSESSID) di cookie. Data sensitif seperti login sebaiknya pakai session.

Kenapa setcookie tidak langsung muncul saat diakses?

Cookie baru tersedia di $_COOKIE pada request berikutnya, karena cookie dikirim lewat header HTTP saat response. Untuk tes langsung, refresh halaman dulu.

Kapan cookie kadaluarsa?

Sesuai parameter expire. Kalau di-set 0 atau tidak diisi, cookie hilang saat browser ditutup (end of session). Contoh time() + 86400 berarti berlaku 1 hari.

Aman tidak menyimpan data penting di cookie?

Tidak. Cookie tersimpan di client dan bisa dibaca bahkan dimodifikasi user. Jangan simpan password atau data sensitif di cookie, gunakan session atau enkripsi.

Sigit Nurhanafi avatar
Full-stack developer & technical writer. Berpengalaman di PHP, Laravel, NodeJS, MySQL, dan Python. Aktif menulis tutorial pemrograman dan maintaining open-source projects di PemburuKode sejak 2021.