Advanced PHP

ในบทนี้ คุณจะได้เรียนรู้โครงสร้างที่ลึกมากกว่าเดิมที่คุณต้องต้องทราบในการเขียนโปรแกรมด้วยภาษา PHP
รูปแบบและกฏเกณฑ์ต่างๆ ในการเขียนโปรแกรมด้วยภาษา PHP

มาเริ่มต้นกับการเขียนโปรแกรมที่ Advanced กัน

การใช้งาน session (เซสชั่น) เบื้องต้นใน PHP

SESSION ใน PHP คืออะไร?

Session หรือ Web Session เป็น value ที่จะถูกสร้างขึ้นมาเมื่อ Client มีการเปิดเว็บบราวเซอร์และติดต่อกับ URL ของเว็บไซต์นั้น เมื่อ Client ปิดตัวลง session จะถูกทำลายหรือปิดลง ข้อมูลจะถูกบันทึกลง session ในฝั่ง server สามารถเก็บค่าข้อความหรือตัวเลข และตัวแปรที่เป็น Object ต่างๆ ได้ แต่มีความพิเศษคือ ค่าตัวแปรจะยังคงอยู่ไม่ว่าจะเปลี่ยนหน้าไปหน้าใดก็ตาม

Session นิยมนำมาใช้ในการรับส่งค่าข้อมูลที่เก็บเป็นความลับที่จะต้องใช้ในการระบุตัวตนโดยใช้สิทธิ การยืนยันตัวตนด้วย Username และ Password เพื่อให้ได้ค่าตัวแปรนี้มาระบุตัวตน ตัวแปรเซสชั่นจึงมีความปลอดภัยในการเก็บรักษาข้อมูลได้อย่างมาก

อ้างอิงรูปภาพจาก https://dev.to/dennis1001/understanding-cookies-and-sessions-in-php-35k5

Start a PHP Session

เริ่มต้นใช้เซสชั่น (Session)

ก่อนการใช้งานตัวแปรเซสชั่น เพื่อโหลดข้อมูลเซสชั่น (session) มาเก็บไว้ที่หน่วยความจำ ต้องใช้คำสั่งเพื่อเปิดเซสชั่นดังนี้

ถ้าหากเราจะสร้างหรือเก็บข้อมูลลง session ต้องทำอย่างไร?

ใช้ไฟล์ php เพื่อติดต่อกับ session ฝั่ง Server และส่ง html ไปยังฝั่ง Client ตัวอย่าง สร้างไฟล์ demo_session1.php

ตัวอย่าง ส่วนกำหนดตัวแปรเซสชั่น (session)

  • session_start() คือ ประกาศสร้าง session ต้องสร้างเป็นอันดับแรกเสมอ ฟังก์ชัน session_start() ต้องเป็นสิ่งแรกสุดก่อนแท็ก HTML ใดๆ
  • $_SESSION คือ การใช้เรียกงาน session ไม่ว่าจะเป็นการเก็บข้อมูลหรือนำ session ไปใช้งานอย่างอื่น

Get PHP Session Variable Values

ต่อไป เราจะสร้างอีกหน้าชื่อ "demo_session2.php" จากหน้านี้ เราจะเข้าถึงข้อมูลเซสชันที่เราตั้งค่าไว้ในหน้าแรก ("demo_session1.php")

โปรดสังเกตว่าตัวแปรเซสชันจะไม่ถูกส่งแยกกันไปยังแต่ละหน้าใหม่ แต่จะถูกดึงมาจากเซสชันที่เราเปิดที่จุดเริ่มต้นของแต่ละหน้าแทน (session_start())

โปรดสังเกตด้วยว่าค่าตัวแปรเซสชันทั้งหมดถูกเก็บไว้ในตัวแปร $_SESSION

ตัวอย่าง ส่วนแสดงผลตัวแปรเซสชั่น (session)

ผลลัพธ์

1. เปิดหน้า demo_session1.php

2. เปิดหน้า demo_session2.php

มันทำงานอย่างไร? มันรู้ได้ยังไงว่าเป็นฉัน?

เซสชันส่วนใหญ่จะตั้งค่ารหัสผู้ใช้บนคอมพิวเตอร์ของผู้ใช้ที่มีลักษณะดังนี้: 765487cf34ert8dede5a562e4f3a7e12 จากนั้น เมื่อมีการเปิดเซสชันในหน้าอื่น ระบบจะสแกนคอมพิวเตอร์เพื่อหารหัสผู้ใช้ หากมีการจับคู่ จะเข้าถึงเซสชันนั้น หากไม่ตรงกัน จะเริ่มเซสชันใหม่

Destroy a PHP Session

หากต้องการลบตัวแปรเซสชันทั่วโลกทั้งหมดและทำลายเซสชัน ให้ใช้ session_unset() และ session_destroy()

ตัวอย่าง การลบค่าเซสชั่น (session)

การส่งข้อมูลจากฟอร์ม (form) แบบ GET vs POST

การส่งข้อมูลจากฟอร์ม (form) แบบ GET

ส่งข้อมูลแนบต่อท้าย URL ในแบบ Query String ทำให้ผู้ใช้งานสามารถมองเห็นข้อมูลที่ส่งไปได้ เหมาะสำหรับการส่งข้อมูลสั้นๆ ไม่เกิน 256 ตัว

ส่วนของ PHP ที่ได้จากฟอร์ม (form) ไปประมวลผล ในการจะรับข้อมูลแบบ GET นั้น ฟอร์ม (form) ที่ส่งข้อมูลมา จะต้องกำหนด method="get" จะใช้ตัวแปร $_GET ในการรับข้อมูล อ้างอิงถึง name ของ tag นั้นๆ

ผลลัพธ์

ส่วนของ PHP ที่ได้จากฟอร์ม (form) จะส่งข้อมูลแนบต่อท้าย URL มาด้วย


การส่งข้อมูลจากฟอร์ม (form) แบบ POST

ส่งข้อมูลไม่แสดงข้อมูลที่ส่งไปให้เห็นผ่าน URL เหมาะสำหรับการส่งข้อมูลแบบยาวๆ เพราะไม่มีข้อจำกัดของเรื่องขนาดของข้อมูลที่ส่ง และต้องการความปลอดภัย

ส่วนของ PHP ที่ได้จากฟอร์ม (form) ไปประมวลผล ในการรับข้อมูลในการจะรับข้อมูลแบบ POST นั้น ฟอร์ม(form) ที่ส่งข้อมูลมา จะต้องกำหนด method="post" ในภาษา PHP จะใช้ตัวแปร $_POST ในการรับข้อมูล อ้างอิงถึง name ของ tag นั้นๆ

ผลลัพธ์

การส่งค่าไปหน้าอื่นด้วย post จะเป็นการส่งค่าผ่านแท็ก form ร่วมกับปุ่ม submit จากตัวอย่างโค้ด input text มีตัวแปรชื่อ name เมื่อผู้ใช้งานกรอกข้อมูล และกดปุ่ม submit ตัวแปร name จะถูกส่งไปที่ไฟล์ที่กำหนด จากนั้นรับค่าด้วย $_POST['name'] หมายความว่ารับค่าตัวแปรชื่อ name ชนิด post ด้วยคำสั่ง $_POST ส่วนของ PHP ที่ได้จากฟอร์ม (form) จะ ไม่ ส่งข้อมูลแนบต่อท้าย URL มาด้วย