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>