PHP Sessions
เซสชันคือวิธีการจัดเก็บข้อมูล (ในตัวแปร) เพื่อใช้ในหลาย ๆ หน้า
ข้อมูลจะไม่ถูกเก็บไว้ในคอมพิวเตอร์ของผู้ใช้ต่างจากคุกกี้
เซสชัน PHP คืออะไร?
เมื่อคุณทำงานกับแอปพลิเคชัน คุณต้องเปิดแอปพลิเคชันนั้น ทำการเปลี่ยนแปลงบางอย่าง จากนั้นจึงปิดแอปพลิเคชันนั้น นี้เป็นเหมือนเซสชั่น คอมพิวเตอร์รู้ว่าคุณเป็นใคร มันรู้เมื่อคุณเริ่มแอปพลิเคชันและเมื่อคุณสิ้นสุด แต่มีปัญหาหนึ่งบนอินเทอร์เน็ต: เว็บเซิร์ฟเวอร์ไม่รู้ว่าคุณเป็นใครหรือทำอะไร เพราะที่อยู่ HTTP ไม่ได้รักษาสถานะไว้
ตัวแปรเซสชันแก้ปัญหานี้โดยจัดเก็บข้อมูลผู้ใช้เพื่อใช้ในหลาย ๆ หน้า (เช่น ชื่อผู้ใช้ สีที่ชอบ ฯลฯ) โดยค่าเริ่มต้น ตัวแปรเซสชันจะคงอยู่จนกว่าผู้ใช้จะปิดเบราว์เซอร์
ดังนั้น; ตัวแปรเซสชันเก็บข้อมูลเกี่ยวกับผู้ใช้รายเดียว และใช้ได้กับทุกหน้าในแอปพลิเคชันเดียว
เคล็ดลับ:หากคุณต้องการที่เก็บข้อมูลถาวร คุณอาจต้องการจัดเก็บข้อมูลใน ฐานข้อมูล
เริ่มเซสชัน PHP
เซสชันเริ่มต้นด้วยsession_start()
ฟังก์ชัน
ตัวแปรเซสชันถูกกำหนดด้วยตัวแปรโกลบอลของ PHP: $_SESSION
ตอนนี้ มาสร้างหน้าใหม่ชื่อ "demo_session1.php" ในหน้านี้ เราจะเริ่มเซสชัน PHP ใหม่และตั้งค่าตัวแปรของเซสชัน:
ตัวอย่าง
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
หมายเหตุ: ฟังก์ชัน นี้session_start()
จะต้องเป็นสิ่งแรกในเอกสารของคุณ ก่อนแท็ก HTML ใดๆ
รับค่าตัวแปรเซสชัน PHP
ต่อไป เราสร้างหน้าใหม่ชื่อ "demo_session2.php" จากหน้านี้ เราจะเข้าถึงข้อมูลเซสชันที่เราตั้งค่าไว้ในหน้าแรก ("demo_session1.php")
โปรดสังเกตว่าตัวแปรของเซสชันจะไม่ถูกส่งผ่านไปยังหน้าใหม่แต่ละหน้า แต่จะถูกดึงมาจากเซสชันที่เราเปิดที่จุดเริ่มต้นของแต่ละหน้า ( session_start()
)
นอกจากนี้ ให้สังเกตว่าค่าตัวแปรเซสชันทั้งหมดถูกเก็บไว้ในตัวแปร $_SESSION ส่วนกลาง:
ตัวอย่าง
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
อีกวิธีในการแสดงค่าตัวแปรเซสชันทั้งหมดสำหรับเซสชันผู้ใช้คือการเรียกใช้โค้ดต่อไปนี้:
ตัวอย่าง
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
มันทำงานอย่างไร? มันรู้ได้ยังไงว่าเป็นผม?
เซสชันส่วนใหญ่ตั้งค่าคีย์ผู้ใช้บนคอมพิวเตอร์ของผู้ใช้ที่มีลักษณะดังนี้: 765487cf34ert8dede5a562e4f3a7e12 จากนั้น เมื่อเปิดเซสชันบนหน้าอื่น ระบบจะสแกนคอมพิวเตอร์เพื่อหาคีย์ผู้ใช้ หากมีการแข่งขัน มันจะเข้าถึงเซสชันนั้น หากไม่มี มันก็จะเริ่มต้นเซสชันใหม่
แก้ไขตัวแปรเซสชัน PHP
หากต้องการเปลี่ยนตัวแปรเซสชัน ให้เขียนทับ:
ตัวอย่าง
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
ทำลาย PHP Session
หากต้องการลบตัวแปรเซสชันส่วนกลางทั้งหมดและทำลายเซสชัน ให้ใช้session_unset()
และsession_destroy()
:
ตัวอย่าง
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>