PHP - Cookie
Cookies adalah file teks yang disimpan di komputer klien dan disimpan untuk tujuan pelacakan penggunaan. PHP secara transparan mendukung cookie HTTP.
Ada tiga langkah yang terlibat dalam mengidentifikasi pengguna yang kembali -
Skrip server mengirimkan sekumpulan cookie ke browser. Misalnya nama, usia, atau nomor identifikasi dll.
Browser menyimpan informasi ini di komputer lokal untuk digunakan di masa mendatang.
Ketika lain kali browser mengirimkan permintaan apa pun ke server web, maka ia mengirimkan informasi cookie tersebut ke server dan server menggunakan informasi itu untuk mengidentifikasi pengguna.
Bab ini akan mengajari Anda cara menyetel cookie, cara mengaksesnya, dan cara menghapusnya.
Anatomi Cookie
Cookie biasanya disetel di header HTTP (meskipun JavaScript juga dapat menyetel cookie langsung di browser). Skrip PHP yang menyetel cookie mungkin mengirim header yang terlihat seperti ini -
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT;
path=/; domain=tutorialspoint.com
Connection: close
Content-Type: text/html
Seperti yang Anda lihat, tajuk Set-Cookie berisi pasangan nilai nama, tanggal GMT, jalur, dan domain. Nama dan nilai akan dienkode URL. Kolom kedaluwarsa adalah instruksi pada browser untuk "melupakan" cookie setelah waktu dan tanggal yang ditentukan.
Jika browser dikonfigurasi untuk menyimpan cookie, maka informasi ini akan disimpan hingga tanggal kedaluwarsa. Jika pengguna mengarahkan browser ke halaman mana pun yang cocok dengan jalur dan domain cookie, itu akan mengirim ulang cookie ke server. Header browser mungkin terlihat seperti ini -
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz
Script PHP kemudian akan memiliki akses ke cookie di variabel lingkungan $ _COOKIE atau $ HTTP_COOKIE_VARS [] yang menyimpan semua nama dan nilai cookie. Cookie di atas dapat diakses menggunakan $ HTTP_COOKIE_VARS ["nama"].
Mengatur Cookies dengan PHP
PHP disediakan setcookie()berfungsi untuk mengatur cookie. Fungsi ini membutuhkan hingga enam argumen dan harus dipanggil sebelum tag <html>. Untuk setiap cookie, fungsi ini harus dipanggil secara terpisah.
setcookie(name, value, expire, path, domain, security);
Berikut adalah detail dari semua argumen -
Name- Ini menetapkan nama cookie dan disimpan dalam variabel lingkungan yang disebut HTTP_COOKIE_VARS. Variabel ini digunakan saat mengakses cookie.
Value - Ini menetapkan nilai variabel bernama dan merupakan konten yang sebenarnya ingin Anda simpan.
Expiry- Ini menentukan waktu mendatang dalam detik sejak 00:00:00 GMT pada 1 Jan 1970. Setelah waktu ini cookie tidak akan dapat diakses. Jika parameter ini tidak disetel maka cookie secara otomatis akan kedaluwarsa saat Browser Web ditutup.
Path- Ini menentukan direktori yang valid cookie. Satu karakter garis miring memungkinkan cookie berlaku untuk semua direktori.
Domain- Ini dapat digunakan untuk menentukan nama domain di domain yang sangat besar dan harus berisi setidaknya dua periode agar valid. Semua cookie hanya valid untuk host dan domain yang membuatnya.
Security - Ini dapat disetel ke 1 untuk menentukan bahwa cookie hanya boleh dikirim melalui transmisi aman menggunakan HTTPS jika tidak disetel ke 0 yang berarti cookie dapat dikirim melalui HTTP biasa.
Contoh berikut akan membuat dua cookie name dan age cookie ini akan kedaluwarsa setelah satu jam.
<?php
setcookie("name", "John Watkin", time()+3600, "/","", 0);
setcookie("age", "36", time()+3600, "/", "", 0);
?>
<html>
<head>
<title>Setting Cookies with PHP</title>
</head>
<body>
<?php echo "Set Cookies"?>
</body>
</html>
Mengakses Cookies dengan PHP
PHP menyediakan banyak cara untuk mengakses cookie. Cara termudah adalah dengan menggunakan variabel $ _COOKIE atau $ HTTP_COOKIE_VARS. Contoh berikut akan mengakses semua cookie yang diatur dalam contoh di atas.
<html>
<head>
<title>Accessing Cookies with PHP</title>
</head>
<body>
<?php
echo $_COOKIE["name"]. "<br />";
/* is equivalent to */
echo $HTTP_COOKIE_VARS["name"]. "<br />";
echo $_COOKIE["age"] . "<br />";
/* is equivalent to */
echo $HTTP_COOKIE_VARS["age"] . "<br />";
?>
</body>
</html>
Kamu dapat memakai isset() berfungsi untuk memeriksa apakah cookie sudah disetel atau belum.
<html>
<head>
<title>Accessing Cookies with PHP</title>
</head>
<body>
<?php
if( isset($_COOKIE["name"]))
echo "Welcome " . $_COOKIE["name"] . "<br />";
else
echo "Sorry... Not recognized" . "<br />";
?>
</body>
</html>
Menghapus Cookie dengan PHP
Secara resmi, untuk menghapus cookie Anda harus memanggil setcookie () dengan argumen nama saja tetapi ini tidak selalu berfungsi dengan baik, bagaimanapun, dan tidak boleh diandalkan.
Paling aman untuk mengatur cookie dengan tanggal yang sudah kedaluwarsa -
<?php
setcookie( "name", "", time()- 60, "/","", 0);
setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>
<head>
<title>Deleting Cookies with PHP</title>
</head>
<body>
<?php echo "Deleted Cookies" ?>
</body>
</html>