要獲取下拉框的值,首先確保 <select> 元素有 name 屬性,表單採用 POST 或 GET 方法提交。
<form action="process.php" method="post">
<label for="category">選擇分類:</label>
<select name="category" id="category">
<option value="">-- 請選擇 --</option>
<option value="tech">科技</option>
<?php
// process.php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 獲取選中值(自動過濾 XSS)
$category = isset($_POST['category']) ? htmlspecialchars(trim($_POST['category'])) : '';
if ($category === '') {
echo "請選擇一個分類";
} else {
echo "您選擇的分類是:$category";
// 進一步業務邏輯...
// 如:根據分類查詢數據庫
// $stmt = $pdo->prepare("SELECT * FROM articles WHERE category = ?");
// $stmt->execute([$category]);
}
}
?>
<!-- HTML:添加 multiple 屬性,name 以 [] 結尾 -->
<select name="tags[]" id="tags" multiple>
<option value="php">PHP</option>
<option value="javascript">JavaScript</option>
<option value="mysql">MySQL</option>
<option value="linux">Linux</option>
</select>
<?php
// PHP 獲取的是數組
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$tags = isset($_POST['tags']) ? $_POST['tags'] : [];
if (empty($tags)) {
echo "請至少選擇一個標籤";
} else {
echo "選中的標籤:" . implode(', ', array_map('htmlspecialchars', $tags));
// 處理多選值,如批量插入數據庫
}
}
?>
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 獲取到空值 | select 缺少 name 屬性 | 添加 name="your_name" |
| 多選只獲取最後一個 | name 未加 [] 後綴 | name="tags[]" 而非 name="tags" |
| 值包含特殊字符導致錯誤 | 未轉義輸出 | 使用 htmlspecialchars() 輸出時轉義 |
| 默認選中不生效 | option 缺少 selected 屬性 |
in_array($category, $allowedCategories)htmlspecialchars()