D Server
เนื้อหาของเรา
- กลับหน้าแรก
- CGI-Perl WebBoard
- Php3 WebBoard
- Developer WebBoard
บริการของเรา
- Free GuestBook
- Free Counter
- Free WebBoard
- Free Stats
- Free JumpBox
- Free E-Mail
ข้อมูลของเรา
- ข่าวประกาศ
- D'Server คืออะไร?
- ทีมงาน D'Server
- ติดต่อลงโฆษณา
- ข้อมูลการติดต่อทีมงาน
- ข้อตกลงการให้บริการ
Bandwidth Support by Internet Thailand
Power by Apache
Power by FreeBSD
คุ๊กกี้ (Cookie).. ขนมสุดที่รัก สำหรับ.. Web programmer
หลักการและการทำงานของ Cookie

Cookie ทำงานยังไง?

ก่อนที่จะทำความเข้าใจกับการทำงานของ Cookie อยากจะให้ทำความ เข้าใจกับเรื่องของ HTTP กันก่อนด้วยนะครับ ว่ามันทำงานยังไง เพราะว่า Cookie จะส่งผ่านกันระหว่าง Server และ Client (คือ Browser นั่นเอง) โดยผ่าน HTTP header ข้อกำหนดของ HTTP header สามารถหา อ่านได้จากเอกสาร RFC 2109 (ไปหาเอาเองนะครับ ไม่ยากครับ เข้า search engine ยอดนิยมของต่างประเทศ แล้วลองพิมพ์ RFC 2109 หาดูครับ)

สำหรับ Cookie ที่ส่งจาก Server ไปยัง Client จะทำงานโดย มีการส่งข้อมูล เพิ่มเข้าไปใน HTTP header ตัวอย่างเช่น
Content-type: text/html
Set-Cookie:test=pass; path=/; expires Mon, 09-Mar-2008 15:00:11 GMT

จาก header นี้ผลลัพธ์ก็คือจะมี Cookie ชื่อว่า test และค่าของ test จะมีค่าเท่ากับ pass นอกจากนี้ path ของ Cookie ก็คือ / หมายความว่า Cookie นี้จะมีผลกับทุกๆ path ภายใต้ domain นี้ทั้งหมด และจะมีวันหมดอายุของ Cookie เป็นวันและเวลาที่ Mon, 09-Mar-2008 15:00:11 GMT หมายความว่าจนกว่าจะถึงวันและเวลา ที่กำหนด Cookie นี้ก็จะยังมีอายุการใช้งานอยู่ตลอด (ยกเว้นจะถูกลบด้วยเหตุอื่นๆเสียก่อน)

เมื่อ Cookie ส่งจาก Client ไปยัง Server ส่วน header ก็จะเปลี่ยนไปเป็น
Content-type: text/html
Cookie: test=pass

โปรแกรมที่ทำงานที่ Server ก็จะต้องตีความความหมายให้ได้ว่า Cookie ชื่อ test มีค่าเท่ากับ pass

แจกแจง parameter ของ Cookie

จากที่เรากล่าวกันมาแล้วข้างต้น Cookie มีส่วนประกอบมากกว่า ชื่อ Cookie และค่าที่จะกำหนด ให้กับ Cookie โดยที่ Cookie เองจะมีส่วนประกอบของ parameter อยู่ 6 ส่วนดังต่อไปนี้
  • name คือชื่อของ Cookie
  • value คือค่าของ Cookie
  • expiration date คือวันหมดอายุของ Cookie
  • path คือ path ที่จะมีผลกับ Cookie นั้นๆ
  • domain คือ domain ที่จะมีผลกับ Cookie นั้นๆ
  • secure คือเป็นตัวบ่งบอกว่า จะต้องมีการติตต่อแบบ secure ก่อนหรือไม่ ถ้าจะใช้ Cookie นั้นๆ
    โดยที่ parameter จะแยกออกจากกันโดยใช้ ; (เซมิโคลอน) ต่อไปนี้คือรายละเอียด ของแต่ละ parameter

    name, value
    คือชื่อและค่าที่จะกำหนดของ Cookie โดยสอง parameter นี้ จะถูกกำหนดไว้คู่กัน ตามรูปแบบ
    name=value;
    ถ้าต้องการที่จะลบค่าของ Cookie ก็ทำได้โดยกำหนดให้ value มีค่า เท่ากับ null ตามรูปแบบนี้
    name=;

    expire
    คือ parameter ที่ใช้สำหรับกำหนดช่วงอายุการใช้งานของ Cookie เพื่อให้ Browser ตรวจสอบว่าหมดอายุการใช้งานของ Cookie นั้นแล้วหรือไม่ จะอยู่ในรูปแบบ
    expires=Day, DD-Mon-YYYY HH:MM:SS GMT
    ถ้าหากว่าไม่กำหนดอายุการใช้งานของ Cookie ๆ ก็จะมีอายุการใช้งานจนจบ การใช้งาน Browser ครั้งหนึ่งๆ ซึ่งอาจจะแตกต่างกันออกไปตามแต่ละ Browser โดยปกติจะมีค่าจนกว่าจะปิด Browser หรือบาง Browser ก็จะมีค่าจนกว่า ผู้เยี่ยมชมจะออกจาก site นั้นๆ

    path
    คือ parameter ที่ใช้สำหรับกำหนดว่า Cookie นั้นจะใช้ได้ภายใน path ใดๆ ในแต่ละ domain บ้าง โดย path ที่อยู่ภายนอก path ที่กำหนดนั้น ก็จะไม่สามารถที่จะ ใช้ Cookie นั้นๆได้ ซึ่งถ้าหากไม่ได้กำหนด path ค่าปริยายของมันจะมีค่าเท่ากับ path ที่โฮมเพจนั้นๆอยู่

    domain
    สำหรับ parameter ค่อนข้างจะซับซ้อนกว่า parameter อื่นๆอยู่ซักนิดนะครับ ถ้าหากว่าเวปไซต์ของคุณมีหลาย hostname ใน domain เดียวกัน (ตัวอย่างเช่น แบบ D'Server ที่มี hostname ต่างๆมากมาย tutor.dserver.org มั่งหละ board.dserver.org มั่งหละ) และถ้าคุณต้องการที่จะให้ Cookie ตัวเดียวกันนี้ เข้าถึงได้จากทุกๆ hostname เหมือนกัน ก็จะต้องกำหนดให้ Cookie นั้นมีค่า domain เท่ากับ domain ของคุณโดยไม่ระบุ hostname โดยปกติแล้วรูปแบบ การกำหนดค่าของ parameter นี้ก็จะมีรูปแบบดังนี้
    domain=www.mydomain.com
    การกำหนด parameter นี้สามารถกำหนดได้ทั้งแบบ hostname ใคร hostname มันแยกจากกันต่างหาก หรือกำหนดแบบใช้ได้กันทีเดียวทั้ง domain เลยก็ได้ โดยกำหนดเป็น .mydomain.com ซึ่งข้อจำกัดอย่างหนึ่งของค่าที่จะกำหนด ให้กับ domain นี้ก็คือ ค่าที่จะกำหนดจะต้องมี . (จุด) อย่างน้อย 2 จุด สำหรับ top-level domain ทั่วไป เช่น .net .org .com (จะต้องกำหนดว่า .mydomain.com ไม่ใช่ mydomain.com) และสำหรับ extened domain ก็จะต้องกำหนด 3 จุด (เช่น .mydomain.co.th)

    ซึ่งในส่วนของ parameter ตัวนี้จะเป็นตัวแยกแยะว่า Cookie นั้นๆ ใช้ได้กับ domain ใดบ้าง และ Cookie ก็จะไม่สามารถใช้กันข้าม domain ได้ อันนี้เป็นเหตุผลทาง ระบบความปลอดภัยของ Cookie ถ้าไม่มีการกำหนด Domain ก็จะมีค่าปริยายเป็น domain เต็มๆของเวปเพจ ที่สร้าง Cookie นั้นๆขึ้นมา

    secure
    สำหรับ parameter นี้เป็นตัวบ่งบอกว่า Cookie นี้จะต้องมีการติดต่อแบบ secure เพื่อการรับส่งข้อมูลที่ปลอดภัยหรือไม่ (พวก SSL , SET) ถ้าปกติค่าจะถูกกำหนดเป็น FALSE ซึ่งจะไม่ต้องการการติดต่อแบบ secure

  • การจัดเก็บ Cookie ของ Browser

    ในขณะที่มีการติดต่อกันระหว่าง Server และ Client ตัว Cookie จะถูกส่งผ่านกัน โดยใช้ HTTP header และจะถูกเก็บไว้ในหน่วยความจำของ Browser และถ้าหากว่า ค่าที่เรากำหนดให้กับ expires มีค่ามากกว่าเวลาในขณะนั้นที่ Browser จะไม่ใช้งาน เวปไซต์นั้นๆ หรือผู้เยี่ยมชมจะปิดโปรแกรม Browser ตัว Browser เองก็จะทำการจัดเก็บ Cookie ลงในแฟ้มข้อมูลใน harddisk เพื่อให้เมื่อเปิด Browser ใช้งานมาครั้งต่อๆไป Cookie นั้นก็จะยังคงอยู่ ให้ใช้ได้อีกจนกว่าจะหมดอายุการใช้งานที่กำหนดไว้

    Cookie ใช้ได้หลังปี 2000 รึปล่าว

    ณ เวลานี้คำตอบก็ออกมาแล้วนะครับ ว่าใช้ได้ และก็ยังคงใช้กันอยู่ทั่วไป นั่นเป็นเพราะว่ามันไม่มีข้อจำกัดเรื่อง รูปแบบของวันใน HTTP header ที่ใช้ในการรับส่ง Cookie และ Browser ส่วนมากก็ไม่มีปัญหาส่วนนี้ กันเสียด้วย มันสามารถรับรูปแบบปีได้ทั้ง 2 หลัก และ 4 หลัก แต่อย่างไรก็ตาม แนะนำว่าในการกำหนด ให้กำหนดเป็น 4 หลักจะดีที่สุด

    เนื้อหาส่วนถัดไป.. ->



    [ สนับสนุนช่องทางข้อมูลโดย Internet Thailand | สงวนลิขสิทธิ์ (c) Dream Group 2542 | ข้อตกลงการบริการ | ทีมงาน Dream Group | แนะนำติชม มาที่ webmonster@dserver.org ]