รายละเอียดการใช้ช่องทำเครื่องหมายใน PHP
สมมติว่าในฟอร์มของเรามีเพียงช่องทำเครื่องหมาย:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
สมมติว่ารหัสการประมวลผลฟอร์มของเราดูเหมือนว่านี้:
<?php
if (!empty($_GET)) { // หากส่งฟอร์มแล้ว
if (isset($_GET['flag'])) { // หากช่องทำเครื่องหมายถูกเลือก
echo 'ถูกเลือก';
} else {
echo 'ไม่ถูกเลือก';
}
}
?>
เรากำลังจะเจอปัญหา - หากช่องทำเครื่องหมายไม่ถูกเลือก
เนื่องจากในฟอร์มไม่มีองค์ประกอบอื่นนอกจากช่องทำเครื่องหมาย
ใน $_GET จะมีอาเรย์ว่าง
ซึ่งหมายความว่าในโค้ดการประมวลผลฟอร์ม
เราจะไม่เข้าสู่เงื่อนไข if แรก ที่ตรวจสอบ
การส่งฟอร์ม
สำหรับการแก้ปัญหา ใช้เทคนิคพิเศษ: สร้างอินพุตแบบซ่อนด้วยชื่อเดียวกัน กับช่องทำเครื่องหมายของเรา ในกรณีนี้ค่า ของอินพุตแบบซ่อนถูกตั้งเป็นศูนย์ และช่องทำเครื่องหมาย - เป็นหนึ่ง:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
ในกรณีนี้จะได้ผลดังต่อไปนี้ หาก ช่องทำเครื่องหมายไม่ถูกเลือก เซิร์ฟเวอร์จะได้รับ เฉพาะค่าจากอินพุตแบบซ่อนเท่านั้น แต่หาก ช่องทำเครื่องหมายถูกเลือก เซิร์ฟเวอร์จะได้รับ ค่าทั้งสองที่มีชื่อเดียวกัน แต่เนื่องจาก ค่าของช่องทำเครื่องหมายจะเป็นลำดับที่สอง มันจะ เขียนทับค่าลำดับแรก
ดังนั้น ตอนนี้ช่องทำเครื่องหมายของเราจะส่ง ไปยังเซิร์ฟเวอร์เป็นศูนย์หรือหนึ่ง:
<?php
var_dump($_GET['flag']); // '0' หรือ '1'
?>
มาใช้สิ่งนี้ในการตรวจสอบของเรา:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'ถูกเลือก';
} else {
echo 'ไม่ถูกเลือก';
}
}
?>
ใช้ช่องทำเครื่องหมายถามผู้ใช้
ว่าอายุถึง 18 ปีแล้วหรือไม่ หาก
ถึงแล้ว อนุญาตให้เขาเข้าถึงเว็บไซต์ได้ แต่หาก
ไม่ถึง - ไม่อนุญาต