เกี่ยวกับCookie ไม่ถูกทำลาย

คืือได้ทำการlogin ด้วยการใช้ cookie

setcookie("login","admin",time()+3600);

แบบนี้แล้วสามารถเข้าloginได้ แต่ ตอน logout

setcookie("login", "", time());


แต่ไม่ยอมทำลาย cookie ตัวนี้ค่ะ ไม่รู้ว่าผิดตรงไหนแล้วเพราะอารัยถึงไม่ทำลาย cookie ค่ะ ช่วยทีค่ะ





20 ก.พ. 2552 5 4,767

ไม่รู้เรื่องขนมคุ๊กกี้หรอก
แต่ setcookie("login", "", time());
มันเป็นการสร้างขึ้นมาใหม่อีกตัวอ่ะป่าว

เอาแบบ งูๆ ปลาๆ ของผม
ลองเป็นตัวแปรอ้างอิงดู

ตอน login
var a = setcookie("login","admin",time()+3600);


ตอน out
a = setcookie("login", "", time());

หรือไม่
ผมเดาว่าน่าจะมีคำสั่ง เกี่ยวกับ พวก unset หรือ delete ไอ้ขนมคุ๊กกี้นี้อยู่นะ

#1

setcookie("login", "", time());

เป็นการเคลียร์ cookie จริงครับแต่เป็นการเคลียร์ที่ cookie ครับ ไม่ได้เคลีรย์ที่ตัวแปร บางครั้งอาจมีการับค่าจาก cookie ไว้เพื่อการตรวจสอบ อาจพลาดตรงนี้ครับ ดังนั้นควรทำลายตัวแปรด้วย จึงจะสมบูรณ์

อีกอย่างหนึ่งที่อาจเป็นไปได้ คือ บน Browser สมัยใหม่ เช่น IE7 อาจมีการกรอกฟอร์มอัตโนมัติครับ ให้ทดลองปิดการทำงานนี้ด้วยครับ
#2

ลองแบบนี้ดูครับ  setcookie("login", FALSE);  

setcookie("login", "", time()); แบบนี้มันเหมือนเซตค่าว่างให้กับตัวแปลlogin อะ

 

#3

555+++

ต้องทำความเข้าใจเรื่อง 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 วัน เป็นต้น


#4

ขอบคุณมากนะค่ะ  กำลังหาอยู่พอดี ^_^
#5
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^