首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 表單驗證:Checkbox(復選框)有效性檢查最佳實踐

     編輯:PHP 相關知識

核心邏輯

Checkbox 未勾選時不會提交任何值($_POST 中鍵不存在)。驗證需分兩步:

  1. isset($_POST['subscribe']) 判斷是否勾選。
  2. 若存在,比對值是否為預期值(如 '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 '驗證失敗:用戶未訂閱或值無效。';
}

進階:多個同名 Checkbox(陣列提交)

<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 屬性輔助,但後端必須二次驗證。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved