ความแตกต่างระหว่างเซสชันและคุกกี้

ความแตกต่างที่สำคัญระหว่างเซสชันและคุกกี้

  • เซสชันคือไฟล์ฝั่งเซิร์ฟเวอร์ที่มีข้อมูลผู้ใช้ ในขณะที่คุกกี้คือไฟล์ฝั่งไคลเอ็นต์ที่มีข้อมูลผู้ใช้
  • เซสชันขึ้นอยู่กับคุกกี้ แต่คุกกี้ไม่ได้ขึ้นอยู่กับเซสชัน
  • เซสชันจะสิ้นสุดลงเมื่อผู้ใช้ปิดเบราว์เซอร์ของตน ในขณะที่คุกกี้จะหมดอายุขึ้นอยู่กับอายุการใช้งานที่คุณตั้งไว้
  • คุณสามารถจัดเก็บข้อมูลได้มากเท่าที่คุณต้องการในเซสชัน แต่พื้นที่จัดเก็บข้อมูลในคุกกี้มีเพียง 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()

สรุป

ฉันแนะนำให้ใช้เซสชันเมื่อข้อกำหนดด้านความปลอดภัยและความจุของข้อมูลเกินกว่าที่คุกกี้สามารถนำเสนอได้ อย่างไรก็ตาม คุกกี้นั้นไม่มีใครเทียบได้เนื่องจากความสะดวกในการใช้งานและการใช้งานการติดตามสถานะผู้ใช้แบบต่อเนื่องและสม่ำเสมอ