เซสชันและฟอร์มใน PHP
สมมติว่าเรามีไฟล์ PHP สองไฟล์ มาเริ่มด้วยการวางฟอร์มในไฟล์
test1.php ที่จะถามผู้ใช้เกี่ยวกับตัวเลขสองตัว:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
ในไฟล์เดียวกันนี้ เราจะวางโค้ดสำหรับประมวลผลฟอร์ม ในโค้ดนี้เราจะบันทึกข้อมูลจากอินพุตลงในเซสชัน:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
รายละเอียดสำคัญ: ในไฟล์ โค้ดสำหรับประมวลผลฟอร์ม จะต้องอยู่ก่อนตัวฟอร์มเอง ทำไม: เพราะในโค้ดนี้เราทำงานกับเซสชัน ดังนั้น จะต้องไม่มีการส่งผลลัพธ์ออกทางหน้าจอก่อนหน้านี้
ทีนี้มาในไฟล์ test2.php หา
ผลรวมของตัวเลขที่บันทึกไว้ในเซสชัน:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
ลำดับการทำงานทั้งหมดนี้ควรเป็นอย่างไร? เริ่มต้นผู้ใช้เข้าไปที่
หน้า test1.php กรอกฟอร์ม
และกดปุ่ม หลังจากนั้นเขาจะกลับเข้ามาที่
test1.php อีกครั้ง แต่คราวนี้พร้อมกับข้อมูลที่ส่งจากฟอร์ม
ขณะเดียวกันเขาจะเข้าสู่เงื่อนไข
ซึ่งเราจะเขียนข้อมูลจากฟอร์มลงในเซสชัน
จากนั้นผู้ใช้จะต้องเข้าไปที่
หน้า test2.php ด้วยตัวเอง - และที่นั่นเขาจะเห็น
ผลรวมของตัวเลขที่ป้อนเข้าไป
คุณอาจจะถาม: ทำไมต้องวุ่นวายขนาดนี้? ในเมื่อ
สามารถส่งฟอร์มไปที่หน้า
test2.php ได้โดยตรงเลย ไม่เป็นไรเพราะ
ในกรณีนี้ความสะดวกอยู่ที่ตัวฟอร์มและโค้ด
การประมวลผลของมันนั้นวางอยู่บนหน้าเดียวกัน
แน่นอนว่าแบบนี้ไม่สะดวกเสมอไป แต่บางครั้ง
ก็จำเป็น
บนหน้าเดียวโดยใช้ฟอร์ม ให้สอบถาม ผู้ใช้เกี่ยวกับนามสกุล ชื่อ และอายุ บันทึก ข้อมูลนี้ลงในเซสชัน เมื่อเข้าสู่อีกหน้า หนึ่ง ให้แสดงข้อมูลนี้บนหน้าจอ