freelance, web developer, web designer, hosting, domain name
ลองแบบนี้ดูครับ setcookie("login", FALSE);
setcookie("login", "", time()); แบบนี้มันเหมือนเซตค่าว่างให้กับตัวแปลlogin อะ
แต่ setcookie("login", "", time());
มันเป็นการสร้างขึ้นมาใหม่อีกตัวอ่ะป่าว
เอาแบบ งูๆ ปลาๆ ของผม
ลองเป็นตัวแปรอ้างอิงดู
ตอน login
var a = setcookie("login","admin",time()+3600);
ตอน out
a = setcookie("login", "", time());
หรือไม่
ผมเดาว่าน่าจะมีคำสั่ง เกี่ยวกับ พวก unset หรือ delete ไอ้ขนมคุ๊กกี้นี้อยู่นะ
เป็นการเคลียร์ cookie จริงครับแต่เป็นการเคลียร์ที่ cookie ครับ ไม่ได้เคลีรย์ที่ตัวแปร บางครั้งอาจมีการับค่าจาก cookie ไว้เพื่อการตรวจสอบ อาจพลาดตรงนี้ครับ ดังนั้นควรทำลายตัวแปรด้วย จึงจะสมบูรณ์
อีกอย่างหนึ่งที่อาจเป็นไปได้ คือ บน Browser สมัยใหม่ เช่น IE7 อาจมีการกรอกฟอร์มอัตโนมัติครับ ให้ทดลองปิดการทำงานนี้ด้วยครับ
ลองแบบนี้ดูครับ setcookie("login", FALSE);
setcookie("login", "", time()); แบบนี้มันเหมือนเซตค่าว่างให้กับตัวแปลlogin อะ
ต้องทำความเข้าใจเรื่อง Cookie กันนิดนึึง
PHP ไม่มีคำสั่งยกเลิก Cookie โดยตรงครับ
ถ้ากลับไปดู Manual ของ PHP เขาระบุไว้ว่า
bool setcookie ( string $name [, string $value [, int $expire= 0 [, string $path [, string $domain [, bool $secure= false [, bool $httponly= false ]]]]]] )
$name คือ ชื่อ cookie
$value คือ ค่าของมัน
$expire คือ เ่วลาหมดอายุ
การทำลาย cookie แบบง่ายๆ ก็คือการกำหนดให้ cookie หมดอายุในตอนนี้ครับ ดังนั้นก็คือการกำหนดให้ cookie หมดอายุที่เวลาปัจจุบัน time()
ตัวอย่าง
setcookie("login", "อะไรก็ได้ ถึงยังไงมันก็หมดอายุ แต่เรามักใช้ค่าว่าง เพื่อให้การตรวจสอบทำได้ง่าย", time());
$name คงไม่ต้อง อธิบาย เพราะคือชื่อของ cookie
$value คือกำหนดค่าให้กับมัน โดยปกติ ถ้าสร้าง จะใช้วิธีกำหนดค่า ถ้าทำลาย มักจะกำหนดให้เป็นค่า ตรงข้ามกับตอนสร้าง เช่น ถ้าเป็น string ตอนทำลายมักกำหนดค่าเป็น ค่าว่าง หรือถ้าตอนสร้างกำหนดเป็น true ตอนทำลาย มักกำหนดเป็น false เป็นต้น
$expire ถ้าใส่ ค่า 0 หรือ ไม่กำหนดค่า cookie จะหมดอายุเมื่อปิด Browser (ไม่ถูกทำลายโดยทันที) ถ้ากำหนดเป็น time() หมายถึง หมดอายุทันทีตอนนี้ หรือ time()+60*60*24*30 หมายถึง หมดอายุภายใน 30 วัน เป็นต้น