Checkbox 未勾選時不會提交任何值($_POST 中鍵不存在)。驗證需分兩步:
isset($_POST['subscribe']) 判斷是否勾選。'yes')。<?php
$expectedValue = 'yes';
// 輸出表單(演示用)
echo '<form method="post">';
echo '<input type="checkbox" name="subscribe" value="' . $expectedValue . '"> 訂閱電子報';
echo '<button type="submit">提交</button>';
echo '</form>';
$subscribed = false;
if (isset($_POST['subscribe'])) {
if ($_POST['subscribe'] === $expectedValue) {
$subscribed = true;
} else {
// 值被竄改
echo '提交的復選框值無效。';
}
}
if ($subscribed) {
echo '驗證通過:用戶已訂閱。';
} else {
echo '驗證失敗:用戶未訂閱或值無效。';
}
<input type="checkbox" name="interests[]" value="php"> PHP
<input type="checkbox" name="interests[]" value="js"> JavaScript
<input type="checkbox" name="interests[]" value="go"> Go
// PHP 處理
$allowed = ['php', 'js', 'go'];
$selected = isset($_POST['interests']) ? $_POST['interests'] : [];
$valid = array_intersect($selected, $allowed); // 過濾非法值
=== 嚴格比較,防止 'yes' == true 等弱類型陷阱。required 屬性輔助,但後端必須二次驗證。