บทนำ
Superglobal $_COOKIE เก็บตัวแปรที่ส่งมาพร้อม HTTP request ในรูปของ cookies $HTTP_COOKIE_VARS ก็มีข้อมูลเดียวกัน แต่ไม่ใช่ superglobal และถูก deprecated แล้ว
Cookie คืออะไร?
Cookies เป็นไฟล์ข้อความที่เซิร์ฟเวอร์เก็บไว้บนคอมพิวเตอร์ของ client และใช้เพื่อติดตาม (tracking) PHP รองรับ HTTP cookies อย่างโปร่งใส Cookies มักถูกตั้งใน HTTP header JavaScript ก็สามารถตั้ง cookie โดยตรงบนเบราว์เซอร์ได้
Server script ส่งชุด cookies ไปยังเบราว์เซอร์ มันเก็บข้อมูลนี้บนเครื่อง local สำหรับใช้ในอนาคต เมื่อครั้งต่อไปเบราว์เซอร์ส่ง request ไปยังเว็บเซิร์ฟเวอร์ มันจะส่งข้อมูล cookies นั้นๆ ไปพร้อมกัน และเซิร์ฟเวอร์ใช้ข้อมูลนั้นระบุตัวตนผู้ใช้
PHP มีฟังก์ชัน setcookie สำหรับสร้าง cookie object เพื่อส่งไปยัง client พร้อม HTTP response
setcookie
ไวยากรณ์
setcookie(name, value, expire, path, domain, security);
parameters
- Name - ชื่อของ cookie ที่เก็บ
- Value - ตั้งค่าของตัวแปรที่มีชื่อนั้น
- Expiry - ระบุเวลาในอนาคตเป็นวินาทีนับจาก 00:00:00 GMT วันที่ 1 ม.ค. 1970
- Path - ไดเรกทอรีที่ cookie ถูกต้อง
- Domain - ระบุชื่อโดเมนในโดเมนขนาดใหญ่
- Security - 1 สำหรับ HTTPS ค่าเริ่มต้น 0 สำหรับ HTTP ธรรมดา
ตัวอย่าง Cookie
<?php if (isset($_COOKIE['username'])) echo "Cookie name is already set with value: " . $_COOKIE['username'] . "
"; else { setcookie("username", "Anil"); echo "Cookie is now set
"; ?>
เพื่อดึง cookies เมื่อ client เยี่ยมชมอีกครั้ง
ตัวอย่าง
<?php $arr = $_COOKIE; foreach ($arr as $key => $val); echo "$key=>$val
"; ?>
ผลลัพธ์
เบราว์เซอร์จะแสดงผลลัพธ์คล้ายกับนี้
username=>Anil
เพื่อลบ cookie ให้ตั้ง cookie ด้วยวันที่หมดอายุแล้ว