เกี่ยวกับCookie ไม่ถูกทำลาย HomeForumเกี่ยวกับCookie ไม่ถูกทำลาย kataynoy ratee คืือได้ทำการlogin ด้วยการใช้ cookie setcookie("login","admin",time()+3600); แบบนี้แล้วสามารถเข้าloginได้ แต่ ตอน logout setcookie("login", "", time()); แต่ไม่ยอมทำลาย cookie ตัวนี้ค่ะ ไม่รู้ว่าผิดตรงไหนแล้วเพราะอารัยถึงไม่ทำลาย cookie ค่ะ ช่วยทีค่ะ .::{เปรียว}::. ไม่รู้เรื่องขนมคุ๊กกี้หรอก แต่ setcookie("login", "", time()); มันเป็นการสร้างขึ้นมาใหม่อีกตัวอ่ะป่าว เอาแบบ งูๆ ปลาๆ ของผม ลองเป็นตัวแปรอ้างอิงดู ตอน login var a = setcookie("login","admin",time()+3600); ตอน out a = setcookie("login", "", time()); หรือไม่ ผมเดาว่าน่าจะมีคำสั่ง เกี่ยวกับ พวก unset หรือ delete ไอ้ขนมคุ๊กกี้นี้อยู่นะ กรกฎ วิริยะ setcookie("login", "", time()); เป็นการเคลียร์ cookie จริงครับแต่เป็นการเคลียร์ที่ cookie ครับ ไม่ได้เคลีรย์ที่ตัวแปร บางครั้งอาจมีการับค่าจาก cookie ไว้เพื่อการตรวจสอบ อาจพลาดตรงนี้ครับ ดังนั้นควรทำลายตัวแปรด้วย จึงจะสมบูรณ์ อีกอย่างหนึ่งที่อาจเป็นไปได้ คือ บน Browser สมัยใหม่ เช่น IE7 อาจมีการกรอกฟอร์มอัตโนมัติครับ ให้ทดลองปิดการทำงานนี้ด้วยครับ ccie_hongza@hotmail.com ลองแบบนี้ดูครับ setcookie("login", FALSE); setcookie("login", "", time()); แบบนี้มันเหมือนเซตค่าว่างให้กับตัวแปลlogin อะ กรกฎ วิริยะ 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 วัน เป็นต้น ioff ขอบคุณมากนะค่ะ กำลังหาอยู่พอดี ^_^ ความคิดเห็น รายละเอียด ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M ส่งความคิดเห็น
แต่ 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 วัน เป็นต้น