ความแตกต่างระหว่างเซสชันและคุกกี้
ความแตกต่างที่สำคัญระหว่างเซสชันและคุกกี้
- เซสชันคือไฟล์ฝั่งเซิร์ฟเวอร์ที่มีข้อมูลผู้ใช้ ในขณะที่คุกกี้คือไฟล์ฝั่งไคลเอ็นต์ที่มีข้อมูลผู้ใช้
- เซสชันขึ้นอยู่กับคุกกี้ แต่คุกกี้ไม่ได้ขึ้นอยู่กับเซสชัน
- เซสชันจะสิ้นสุดลงเมื่อผู้ใช้ปิดเบราว์เซอร์ของตน ในขณะที่คุกกี้จะหมดอายุขึ้นอยู่กับอายุการใช้งานที่คุณตั้งไว้
- คุณสามารถจัดเก็บข้อมูลได้มากเท่าที่คุณต้องการในเซสชัน แต่พื้นที่จัดเก็บข้อมูลในคุกกี้มีเพียง 4KB เท่านั้น
- ข้อมูลที่ลงทะเบียนทั้งหมดภายในเซสชันสามารถทำลายได้โดยใช้คำสั่ง Session_destroy() อย่างไรก็ตาม ไม่มีคำสั่งเช่น unsetcookie() ที่จะลบข้อมูลออกจากคุกกี้

ที่นี่ฉันได้วิเคราะห์ความแตกต่างระหว่าง เซสชันและคุกกี้ และจะประเมินข้อดีข้อเสียอย่างครอบคลุม
เซสชั่นคืออะไร?
เซสชันคือตัวแปรทั่วโลกที่จัดเก็บไว้บนเซิร์ฟเวอร์ แต่ละเซสชันจะได้รับการกำหนด ID เฉพาะ ซึ่งใช้ในการดึงค่าที่จัดเก็บไว้ ทุกครั้งที่มีการสร้างเซสชัน คุกกี้ที่มี ID เซสชันเฉพาะจะถูกเก็บไว้ในคอมพิวเตอร์ของผู้ใช้และส่งกลับมาพร้อมกับทุกคำขอไปยังเซิร์ฟเวอร์ หากเบราว์เซอร์ไคลเอนต์ไม่รองรับคุกกี้ ID เซสชันเฉพาะจะแสดงใน URL เซสชันมีความสามารถในการจัดเก็บข้อมูลได้ค่อนข้างมากเมื่อเทียบกับคุกกี้
ค่าเซสชันจะถูกลบโดยอัตโนมัติเมื่อปิดเบราว์เซอร์ หากคุณต้องการจัดเก็บค่าอย่างถาวร คุณควรเก็บไว้ใน ฐานข้อมูล.
เช่นเดียวกับตัวแปรอาร์เรย์ $_COOKIE ตัวแปรเซสชันจะถูกจัดเก็บไว้ในตัวแปรอาร์เรย์ $_SESSION เช่นเดียวกับคุกกี้ เซสชันต้องเริ่มต้นก่อนแท็ก HTML ใดๆ
เหตุใดฉันจึงควรใช้เซสชันและเมื่อใด
เซสชันใช้ในการส่งผ่านค่าจากหน้าหนึ่งไปยังอีกหน้าหนึ่ง พวกเขาจัดเก็บข้อมูลที่สำคัญ เช่น ID ผู้ใช้ ไว้อย่างปลอดภัยมากขึ้นบนเซิร์ฟเวอร์ ซึ่งผู้ใช้ที่ประสงค์ร้ายไม่สามารถยุ่งเกี่ยวกับมันได้
นอกจากนี้ยังใช้เมื่อคุณต้องการทางเลือกอื่นนอกเหนือจากคุกกี้บนเบราว์เซอร์ที่ไม่รองรับคุกกี้ เพื่อจัดเก็บตัวแปรส่วนกลางด้วยวิธีที่มีประสิทธิภาพและปลอดภัยยิ่งขึ้น ดีกว่าส่งผ่าน URL หรือเมื่อพัฒนาแอพพลิเคชั่นเช่นตะกร้าสินค้าที่เก็บข้อมูลชั่วคราวที่มีความจุมากกว่า 4KB
การสร้างเซสชันด้วย PHP
หากต้องการเริ่มเซสชัน คุณต้องเริ่มฟังก์ชัน session_start ใน PHP แล้วบันทึกค่าของคุณใน $_SESSION superglobal array
พิจารณาสถานการณ์ที่คุณต้องการติดตามความถี่ของการเข้าชมเพจ การใช้เซสชันเป็นวิธีการที่มีประสิทธิภาพสำหรับจุดประสงค์นี้
ตัวอย่างต่อไปนี้สาธิตวิธีการสร้างและเข้าถึงค่าในเซสชัน:
<?php session_start(); //start the PHP_session function if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>Output:
You are visitor number 1
ข้อดีของเซสชั่น
นี่คือข้อดีของเซสชันจากมุมมองของฉัน
- ปรับปรุงการโต้ตอบของผู้ใช้โดยรักษาสถานะการสนทนาอย่างต่อเนื่องในคำขอหลายรายการ
- ลดภาระของเซิร์ฟเวอร์ด้วยการจัดเก็บข้อมูลผู้ใช้ชั่วคราว
- ปรับปรุงความปลอดภัยด้วยการเปิดเผยข้อมูลที่ได้รับการควบคุมในระยะเวลาที่จำกัด
- อนุญาตประสบการณ์ส่วนตัวตามพฤติกรรมและความชอบของผู้ใช้
- อำนวยความสะดวกในธุรกรรมที่ซับซ้อนโดยการติดตามขั้นตอนต่างๆ หลายขั้นตอน
- เพิ่มประสิทธิภาพเว็บไซต์โดยลดความจำเป็นในการตรวจสอบสิทธิ์อีกครั้ง
- รองรับความสามารถในการปรับขนาดโดยการจัดการเซสชันผู้ใช้อย่างมีประสิทธิภาพในระบบแบบกระจาย
ข้อเสียของเซสชั่น
จากประสบการณ์ของฉัน นี่คือข้อเสียของการใช้เซสชัน
- เพิ่มความเสี่ยงของการละเมิดข้อมูลหากข้อมูลเซสชันถูกดักจับ
- ใช้หน่วยความจำเซิร์ฟเวอร์ ซึ่งอาจส่งผลให้ประสิทธิภาพโดยรวมของระบบลดลง
- อาจนำไปสู่ประสบการณ์ผู้ใช้ที่ไม่สอดคล้องกันหากได้รับการจัดการอย่างไม่เหมาะสม
- ต้องใช้ทรัพยากรเซิร์ฟเวอร์เพิ่มเติมเพื่อรักษาและตรวจสอบเซสชัน
- การหมดอายุของเซสชันอาจรบกวนกิจกรรมของผู้ใช้ ทำให้เกิดความหงุดหงิด
- เสี่ยงต่อการถูกขโมยเซสชันและการโจมตีแบบตรึง
- อาจทำให้การปฏิบัติตามกฎระเบียบด้านความเป็นส่วนตัวมีความซับซ้อนเนื่องจากการจัดเก็บข้อมูลอย่างต่อเนื่อง
คุกกี้คืออะไร?
คุกกี้คือไฟล์ขนาดเล็กที่มีขนาดสูงสุด 4KB ที่เว็บเซิร์ฟเวอร์จัดเก็บไว้ในคอมพิวเตอร์ไคลเอนต์ เมื่อตั้งค่าคุกกี้แล้ว คำขอเพจทั้งหมดที่ตามมาจะส่งคืนชื่อและค่าคุกกี้ คุกกี้สามารถอ่านได้จากโดเมนที่ออกเท่านั้น ตัวอย่างเช่น ไม่สามารถอ่านคุกกี้ที่ตั้งค่าโดยใช้โดเมน www.guru99.com จากโดเมน career.guru99.com ได้ เว็บไซต์ส่วนใหญ่บนอินเทอร์เน็ตแสดงองค์ประกอบจากโดเมนอื่น เช่น การโฆษณา โดเมนที่ให้บริการองค์ประกอบเหล่านี้สามารถตั้งค่าคุกกี้ของตนเองได้เช่นกัน สิ่งเหล่านี้เรียกว่าคุกกี้ของบุคคลที่สาม คุกกี้ที่สร้างโดยผู้ใช้สามารถมองเห็นได้เพียงพวกเขาเท่านั้น ผู้ใช้รายอื่นไม่สามารถมองเห็นคุณค่าของมันได้ ที่สุด เว็บเบราว์เซอร์ มีตัวเลือกสำหรับการปิดใช้งานคุกกี้ คุกกี้ของบุคคลที่สาม หรือทั้งสองอย่าง
เหตุใดฉันจึงควรใช้คุกกี้และเมื่อใด
HTTP เป็นโปรโตคอลไร้สัญชาติ คุกกี้ช่วยให้เราสามารถติดตามสถานะของแอปพลิเคชันโดยใช้ไฟล์ขนาดเล็กที่จัดเก็บไว้ในคอมพิวเตอร์ของผู้ใช้ เส้นทางที่เก็บคุกกี้ขึ้นอยู่กับเบราว์เซอร์ Internet Explorer มักจะจัดเก็บไว้ในโฟลเดอร์ Temporal Internet Files
การปรับเปลี่ยนประสบการณ์ผู้ใช้ให้เป็นแบบส่วนตัว:ทำได้โดยให้ผู้ใช้เลือกการตั้งค่าของตนเอง คำขอหน้าที่ตามมาจะถูกปรับแต่งตามการตั้งค่าที่กำหนดไว้ในคุกกี้ ติดตามหน้าที่ผู้ใช้เยี่ยมชม
การสร้างคุกกี้ด้วย PHP
ตอนนี้ เรามาเจาะลึกไวยากรณ์พื้นฐานที่จำเป็นสำหรับการสร้างคุกกี้กันดีกว่า
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
- ใน PHP setcookie ฟังก์ชัน ใช้เพื่อสร้างคุกกี้ “cookie_name” แสดงถึงตัวระบุสำหรับคุกกี้ ซึ่งจำเป็นสำหรับเซิร์ฟเวอร์เมื่อจำเป็นต้องดึงค่าของคุกกี้จากอาร์เรย์ $_COOKIE ชื่อนี้เป็นชื่อบังคับ
- “cookie_value” หมายถึงเนื้อหาของคุกกี้และจำเป็นด้วย
- พารามิเตอร์ "[expiry_time]" เป็นตัวเลือกที่ไม่บังคับและสามารถตั้งค่าให้กำหนดอายุการใช้งานของคุกกี้ได้ เช่น การตั้งค่าให้หมดอายุใน 1 ชั่วโมง ซึ่งทำได้โดยการเพิ่มหรือลบวินาทีจากฟังก์ชัน PHP time() เช่น time() + 3600 เพื่อตั้งค่าเป็น 1 ชั่วโมง
- "[cookie_path]" เป็นอีกหนึ่งพารามิเตอร์ทางเลือกที่กำหนดเส้นทางเซิร์ฟเวอร์ที่สามารถเข้าถึงคุกกี้ได้ การใช้เครื่องหมายทับ “/” แสดงว่าคุกกี้สามารถใช้ได้ทั่วทั้งโดเมน ในขณะที่การระบุไดเรกทอรีย่อยจะจำกัดการเข้าถึงโดเมนย่อยเหล่านั้น
- พารามิเตอร์ "[โดเมน]" ซึ่งเป็นทางเลือกเช่นกัน จะกำหนดตำแหน่งที่สามารถเข้าถึงคุกกี้ได้ เช่น ตั้งเป็น
www.cookiedomain.com
ทำให้สามารถใช้ได้ทั่วทั้งโดเมน ในขณะที่www.sub.cookiedomain.com
จำกัดไว้เฉพาะโดเมนย่อยและโดเมนย่อยเท่านั้น โปรดจำไว้ว่า โดเมนย่อยสามารถมีโดเมนย่อยของตัวเองได้ ตราบใดที่ความยาวรวมของโดเมนไม่เกิน 253 อักขระ - พารามิเตอร์ "[ปลอดภัย]" เป็นทางเลือก โดยการตั้งค่าเริ่มต้นเป็นเท็จ ระบุว่าควรส่งคุกกี้ผ่าน HTTPS (หากเป็นจริง) หรือ HTTP (หากเป็นเท็จ)
- การตั้งค่า “[Httponly]” ก็เป็นทางเลือกเช่นกัน เมื่อตั้งค่าเป็นจริง คุกกี้จะไม่สามารถเข้าถึงได้ด้วยภาษาสคริปต์ฝั่งไคลเอ็นต์ เช่น Javaต้นฉบับ .
หมายเหตุ ต้องเรียกใช้ฟังก์ชัน setcookie ของ PHP ก่อนที่จะส่งออกแท็ก HTML ใดๆ
ลองพิจารณาตัวอย่างเชิงปฏิบัติที่เกี่ยวข้องกับคุกกี้
ในกรณีนี้ เราจะพัฒนาโปรแกรมง่ายๆ ที่จะจัดเก็บชื่อผู้ใช้ไว้ในคุกกี้ที่ตั้งค่าให้หมดอายุหลังจากผ่านไปสิบวินาที
โค้ด "cookies.php" ต่อไปนี้สาธิตวิธีการใช้งาน
<?php setcookie("user_name", "Guru99", time() + 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>Output:
the cookie has been set for 60 seconds
ข้อดีของคุกกี้
จากประสบการณ์ของผม นี่คือข้อดีของ คุ้กกี้:
- ช่วยเพิ่มองค์ประกอบแห่งความประหลาดใจในการค้นพบรสชาติ
- นำเสนอความสวยงามแบบมินิมอล เหมาะสำหรับการสร้างแบรนด์สมัยใหม่
- ลดความยุ่งเหยิงของบรรจุภัณฑ์โดยเน้นความสนใจไปที่ผลิตภัณฑ์
- ขจัดอคติตามความชอบของส่วนผสมหรือการรับรู้ถึงแบรนด์
- ส่งเสริมการชิมโดยปราศจากความคิดเห็นล่วงหน้า นำไปสู่การตอบรับที่เป็นกลาง
- อาจช่วยลดต้นทุนการพิมพ์สำหรับบรรจุภัณฑ์ได้
- ลดความซับซ้อนในการปฏิบัติตามกฎระเบียบในตลาดด้วยกฎหมายการติดฉลากที่เข้มงวดน้อยกว่า
ข้อเสียของคุกกี้
จากสิ่งที่ฉันได้เห็น นี่คือข้อเสียของคุกกี้
- ลูกค้าไม่สามารถระบุสารก่อภูมิแพ้หรือข้อจำกัดด้านอาหารได้
- ขาดข้อมูลทางโภชนาการซึ่งเป็นสิ่งสำคัญสำหรับผู้บริโภคที่ใส่ใจสุขภาพ
- พลาดโอกาสในการเน้นส่วนผสมที่เป็นเอกลักษณ์หรือพรีเมี่ยม
- อาจทำให้เกิดความสับสนระหว่างสินค้าที่คล้ายคลึงกันบนชั้นวางได้
- ป้องกันการรับรู้แบรนด์และการสร้างความภักดี
- เบี่ยงเบนความสนใจจากการตัดสินใจของผู้บริโภคโดยอาศัยข้อมูล
- ซึ่งอาจนำไปสู่ปัญหาทางกฎหมายในภูมิภาคที่มีกฎหมายการติดฉลากที่เข้มงวด
เซสชันกับคุกกี้: ความแตกต่างระหว่างพวกเขา
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างเซสชันและคุกกี้ที่ฉันสังเกตเห็นในการปฏิบัติงาน:
เซสชันคือไฟล์ฝั่งเซิร์ฟเวอร์ซึ่งมีข้อมูลผู้ใช้ |
คุกกี้คือไฟล์ฝั่งไคลเอ็นต์ที่มีข้อมูลผู้ใช้ |
เซสชันจะสิ้นสุดลงเมื่อผู้ใช้ปิดเบราว์เซอร์ |
คุกกี้จะสิ้นสุดลงตามอายุการใช้งานที่คุณตั้งไว้ |
In PHPก่อนใช้ $_SESSION คุณต้องเขียน session_start(); เช่นเดียวกับภาษาอื่น ๆ |
คุณไม่จำเป็นต้องเริ่มคุกกี้เนื่องจากคุกกี้ถูกจัดเก็บไว้ในเครื่องของคุณ |
ภายในเซสชัน คุณสามารถจัดเก็บข้อมูลได้มากเท่าที่คุณต้องการ ขีดจำกัดเดียวที่คุณสามารถเข้าถึงได้คือหน่วยความจำสูงสุดที่สคริปต์สามารถใช้ได้ในคราวเดียว ซึ่งก็คือ 128MB ตามค่าเริ่มต้น |
ขนาดคุกกี้สูงสุดอย่างเป็นทางการคือ 4KB |
เซสชันขึ้นอยู่กับคุกกี้ |
คุกกี้ไม่ขึ้นอยู่กับเซสชัน |
Session_destroy() ใช้เพื่อทำลายข้อมูลที่ลงทะเบียนทั้งหมดหรือยกเลิกการตั้งค่าบางส่วน |
ไม่มีฟังก์ชันชื่อ unsetcookie() |
สรุป
ฉันแนะนำให้ใช้เซสชันเมื่อข้อกำหนดด้านความปลอดภัยและความจุของข้อมูลเกินกว่าที่คุกกี้สามารถนำเสนอได้ อย่างไรก็ตาม คุกกี้นั้นไม่มีใครเทียบได้เนื่องจากความสะดวกในการใช้งานและการใช้งานการติดตามสถานะผู้ใช้แบบต่อเนื่องและสม่ำเสมอ