Session ที่แปลเป็นภาษาจีนเรียกว่า "การสนทนา" และความหมายเดิมหมายถึงชุดของการกระทำ/ข้อความที่มีจุดเริ่มต้นและจุดสิ้นสุด ตัวอย่างเช่น เมื่อโทรออก ชุดของกระบวนการตั้งแต่การรับโทรศัพท์จนถึง การโทรออกเพื่อวางสายสามารถเรียกได้ว่าเป็นเซสชัน ความเข้าใจในปัจจุบันเกี่ยวกับเซสชันในสังคมทำให้เกิดความสับสน: บางครั้งเราอาจเห็นคำว่า "ระหว่างเซสชันเบราว์เซอร์..." เซสชันนี้หมายถึงช่วงเวลาตั้งแต่เปิดจนถึงปิดหน้าต่างเบราว์เซอร์ คุณยังสามารถดูได้ว่าเมื่อใด หมายถึงประโยค "ผู้ใช้ (ลูกค้า) ระหว่างเซสชัน" อาจหมายถึงชุดของการกระทำของผู้ใช้ (โดยปกติจะเป็นชุดของการกระทำที่เกี่ยวข้องกับวัตถุประสงค์เฉพาะ เช่น จากการเข้าสู่ระบบ การซื้อสินค้า ไปจนถึงการชำระเงิน กระบวนการซื้อของออนไลน์ดังกล่าว บางครั้งอาจหมายถึงการเชื่อมต่อเท่านั้น ความแตกต่างสามารถอนุมานได้จากบริบทเท่านั้น
อย่างไรก็ตาม เมื่อคำว่า Session เชื่อมโยงกับโปรโตคอลเครือข่าย ก็มักจะหมายถึง "การเชื่อมต่อ" และ/หรือ "Keep state" มีความหมายสองประการ "Connection-Oriented" หมายความว่าฝ่ายที่ติดต่อสื่อสารจะต้องสร้างช่องทางการสื่อสารก่อนทำการสื่อสาร เช่น การโทรออก การสื่อสารไม่สามารถเริ่มต้นได้จนกว่าอีกฝ่ายจะรับสาย " "สถานะ" หมายความว่าฝ่ายที่สื่อสารสามารถเชื่อมโยงชุดข้อความเพื่อให้ข้อความสามารถพึ่งพากันได้ ตัวอย่างเช่น พนักงานเสิร์ฟสามารถจดจำลูกค้าเก่าที่กลับมาอีกครั้งและจำไว้ว่าลูกค้าเป็นหนี้ร้านค้าเป็นเงินดอลลาร์ในครั้งสุดท้าย ตัวอย่างประเภทหนึ่งนี้คือ "เซสชัน TCP" หรือ "เซสชัน POP3"
เนื่องจากความสับสนนี้ไม่สามารถย้อนกลับได้ จึงเป็นเรื่องยากที่จะมีมาตรฐานที่เป็นหนึ่งเดียวในการกำหนดเซสชัน และเมื่ออ่านเกี่ยวกับเซสชัน เราก็มีเพียงหนึ่งเดียวเท่านั้น สามารถเข้าใจได้โดยอนุมานจากบริบท เช่น เมื่อเราโทรออก ตั้งแต่นาทีที่โทรออกจนถึงขณะที่เราวางสาย โทรศัพท์ยังคงเชื่อมต่ออยู่ ดังนั้น สถานะการเชื่อมต่อนี้จึงเรียกว่า Session เป็นสาธารณะ ตัวแปรที่มีอยู่ตลอดเวลาระหว่างการโต้ตอบระหว่างผู้เยี่ยมชมและทั้งเว็บไซต์ เมื่อไคลเอนต์ไม่รองรับคุกกี้ เพื่อให้มั่นใจในความถูกต้องและความปลอดภัยของข้อมูล ตัวแปรเซสชันจะถูกกำหนดให้กับผู้เยี่ยมชมที่เยี่ยมชมเว็บไซต์ รหัสเซสชันที่เรียกว่า มันถูกจัดเก็บไว้ในคุกกี้ของลูกค้าหรือส่งผ่าน URL
การประดิษฐ์เซสชันเติมเต็มข้อจำกัดของโปรโตคอล HTTP: โปรโตคอล HTTP ถือเป็นโปรโตคอลไร้สัญชาติและไม่สามารถทราบสถานะการเรียกดูของผู้ใช้ได้ ใช้งานอยู่ หลังจากที่เซิร์ฟเวอร์ตอบสนองเสร็จสิ้น เซิร์ฟเวอร์จะสูญเสียการติดต่อกับเบราว์เซอร์ ซึ่งสอดคล้องกับวัตถุประสงค์ดั้งเดิมของโปรโตคอล HTTP เท่านั้น จำเป็นต้องบันทึกพฤติกรรมที่ผ่านมาของกันและกัน และแต่ละคำขอมีความเป็นอิสระ เช่นเดียวกับความสัมพันธ์ระหว่างลูกค้ากับตู้จำหน่ายสินค้าอัตโนมัติ หรือไฮเปอร์มาร์เก็ตทั่วไป (ไม่เป็นสมาชิก)
ดังนั้นผ่านเซสชัน (คุกกี้) จึงเป็นอีกเรื่องหนึ่ง วิธีแก้ไข) บันทึกข้อมูลที่เกี่ยวข้องของผู้ใช้เพื่อยืนยันเมื่อผู้ใช้ส่งคำขอไปยังเว็บเซิร์ฟเวอร์อีกครั้ง การประดิษฐ์เซสชันทำให้ผู้ใช้สามารถบันทึกข้อมูลของเขาเมื่อสลับระหว่างหลายเพจด้วยประสบการณ์นี้ ตัวแปรในแต่ละหน้า ไม่สามารถนำมาใช้ในหน้าถัดไปได้ (แม้ว่าจะสามารถนำมาใช้ในรูปแบบและ url ได้ แต่วิธีการเหล่านี้ไม่น่าพอใจมาก) และตัวแปรที่ลงทะเบียนในเซสชันสามารถใช้เป็นตัวแปรส่วนกลางได้
แล้ว Session มีประโยชน์อย่างไร? ทุกคนใช้ตะกร้าสินค้าเมื่อช้อปปิ้งออนไลน์ คุณสามารถเพิ่มผลิตภัณฑ์ที่คุณเลือกลงในตะกร้าสินค้าได้ตลอดเวลา และสุดท้ายไปที่เคาน์เตอร์ชำระเงินเพื่อชำระเงิน ในระหว่างกระบวนการทั้งหมด ตะกร้าสินค้ามีบทบาทในการจัดเก็บสินค้าที่เลือกไว้ชั่วคราว ใช้เพื่อติดตามกิจกรรมของผู้ใช้บนเว็บไซต์ นี่คือบทบาทของเซสชัน ซึ่งสามารถใช้สำหรับการตรวจสอบตัวตนของผู้ใช้ สถานะของโปรแกรม การบันทึกและการส่งผ่านพารามิเตอร์ ฯลฯ
เทคโนโลยี COOKIE ถูกนำมาใช้ในการใช้งาน Session เซสชันจะบันทึก COOKIE ที่มี Session_id (หมายเลขเซสชัน) บนฝั่งไคลเอ็นต์ บันทึกตัวแปร Session อื่น ๆ บนฝั่งเซิร์ฟเวอร์ เช่น Session_name เป็นต้น เมื่อผู้ใช้ร้องขอเซิร์ฟเวอร์ Session_id จะถูกส่งไปยังเซิร์ฟเวอร์ด้วย โดยการแยกตัวแปรที่บันทึกไว้บนฝั่งเซิร์ฟเวอร์ผ่าน Session_id คุณสามารถระบุได้ว่าใครคือผู้ใช้ ในขณะเดียวกัน ก็ไม่ยากที่จะเข้าใจว่าเหตุใดบางครั้ง Session จึงล้มเหลว
เมื่อไคลเอนต์ปิดใช้งานคุกกี้ (คลิก "เครื่องมือ" - "ตัวเลือกอินเทอร์เน็ต" ใน IE คลิกรายการ "ความปลอดภัย" - "ระดับที่กำหนดเอง" ในกล่องโต้ตอบป๊อปอัป และตั้งค่า "อนุญาตคุกกี้ต่อการสนทนา" เป็นปิดใช้งาน) , Session_id จะไม่ผ่าน และเซสชันจะไม่ถูกต้องในขณะนี้ อย่างไรก็ตาม php5 สามารถตรวจสอบสถานะคุกกี้บนแพลตฟอร์ม Linux/Unix ได้โดยอัตโนมัติ หากไคลเอ็นต์ถูกปิดใช้งาน ระบบจะผนวก Session_id เข้ากับ URL โดยอัตโนมัติและส่งต่อไป โฮสต์ Windows ไม่มีฟังก์ชันนี้
ฟังก์ชันและการใช้งานทั่วไปของเซสชัน
Session_start(): เริ่มเซสชันหรือส่งคืนเซสชันที่มีอยู่
หมายเหตุ: ฟังก์ชันนี้ไม่มีพารามิเตอร์และค่าที่ส่งคืนเป็นจริง หากคุณใช้เซสชันที่ใช้คุกกี้ เบราว์เซอร์จะต้องไม่มีเอาต์พุตใดๆ ก่อนที่จะใช้ Session_start() มิฉะนั้นจะเกิดข้อผิดพลาดต่อไปนี้:
คำเตือน: ไม่สามารถส่งตัวจำกัดแคชเซสชัน - ส่วนหัวที่ส่งไปแล้ว (เอาต์พุตเริ่มต้นที่ / usr/local/apache/ htdocs/cga/member/1.php:2)...
คุณสามารถเริ่ม Session.auto_start=1 ใน php.ini ได้ เพื่อจะได้ไม่ต้องเรียก Session_start() ทุกครั้งก่อนใช้งาน Session แต่มีข้อจำกัดบางประการในการเปิดใช้งานตัวเลือกนี้ หากเปิดใช้งาน Session.auto_start จริงๆ คุณจะไม่สามารถใส่ออบเจ็กต์ลงในเซสชันได้เนื่องจากต้องโหลดคำจำกัดความของคลาสก่อนที่จะเริ่มเซสชันเพื่อสร้างออบเจ็กต์ใหม่ในเซสชัน
ตัวแปรที่ลงทะเบียนทั้งหมดจะถูกทำให้เป็นอนุกรมหลังจากการร้องขอเสร็จสมบูรณ์ ตัวแปรที่ลงทะเบียนแต่ไม่ได้กำหนดไว้จะถูกทำเครื่องหมายเป็นไม่ได้กำหนด ตัวแปรเหล่านี้ไม่ได้ถูกกำหนดโดยโมดูลเซสชันในการเข้าถึงครั้งต่อไป เว้นแต่ผู้ใช้จะกำหนดในภายหลัง
ข้อมูลบางประเภทไม่สามารถทำให้เป็นอนุกรมได้ ดังนั้นจึงไม่สามารถบันทึกในเซสชันได้ รวมตัวแปรทรัพยากรหรือวัตถุที่มีการอ้างอิงแบบวงกลม (นั่นคือ วัตถุส่งผ่านการอ้างอิงถึงตัวเองไปยังวัตถุอื่น)