ใน PHP เราใช้ session_start() ฟังก์ชัน inbuilt เพื่อเริ่มเซสชัน แต่ปัญหาที่เราเผชิญในสคริปต์ PHP คือถ้าเราเรียกใช้งานมากกว่าหนึ่งครั้งจะทำให้เกิดข้อผิดพลาด ดังนั้น เราจะมาเรียนรู้วิธีตรวจสอบเซสชันที่เริ่มต้นหรือไม่โดยไม่ต้องเรียกใช้ฟังก์ชัน session_start() สองครั้ง
มีสองวิธีในการแก้ไขปัญหานี้
สำหรับเวอร์ชัน PHP 5.4.0 ที่ต่ำกว่า
ตัวอย่าง
<?php if(session_id() == ''){ session_start(); } ?>
คำอธิบาย
หากเซสชั่นไม่ได้เริ่มต้นโค้ดด้านบนนี้จะเริ่มเซสชั่นในสคริปต์ PHP เสมอ
ในวิธีที่สอง เราสามารถใช้ฟังก์ชัน session_status() ซึ่งจะคืนค่าสถานะของเซสชันปัจจุบัน ฟังก์ชันนี้สามารถคืนค่าจำนวนเต็มสามค่า ซึ่งทั้งหมดเป็นค่าคงที่ที่กำหนดไว้ล่วงหน้า เหล่านี้คือ:
- 0 – PHP_SESSION_DISABLED:เซสชันถูกปิดใช้งานในขณะนี้
- 1 – PHP_SESSION_NONE:เปิดใช้งานเซสชันแล้ว แต่ยังไม่ได้เริ่มเซสชัน
- 2 – PHP_SESSION_ACTIVE:เปิดใช้งานเซสชันและเริ่มเซสชันแล้ว
ตัวอย่าง:
<?php if (session_status() == PHP_SESSION_NONE) { session_start(); } ?>
คำอธิบาย
โค้ดด้านบนจะตรวจสอบว่าเซสชันเริ่มต้นขึ้นหรือไม่ หากไม่ได้เริ่ม เซสชันนี้จะเริ่มเซสชันในสคริปต์ PHP
หมายเหตุ
ฟังก์ชัน session_status() ทำงานในเวอร์ชัน PHP 5.4.0 ขึ้นไปเท่านั้น