伺服器端驗證是防止空值、惡意輸入的第一道防線。本文示範基本必填欄位檢查與錯誤顯示。
<form method="POST" action="ErrorCheck.php">
<h1>Contact Information</h1>
<label>Nickname:</label> <input type="text" name="nickname"><br>
<label>Title:</label> <input type="text" name="title"><br>
<input type="submit" value="Submit">
<input type="reset" value="Clear">
</form>
ErrorCheck.php<?php
$errors = [];
// trim() 移除首尾空白字元(空格、Tab、換行、NUL 等)
if (!trim($_POST['nickname'] ?? '')) {
$errors[] = "<b>Nickname</b> 為必填欄位。";
}
if (!trim($_POST['title'] ?? '')) {
$errors[] = "<b>Title</b> 為必填欄位。";
}
if ($errors) {
echo "<div style='color:red'>";
echo "<h3>發現錯誤:</h3><ul>";
foreach ($errors as $err) echo "<li>$err</li>";
echo "</ul><p>請點擊瀏覽器「上一頁」返回修正。</p>";
echo "</div>";
} else {
echo "表單通過驗證,進行後續處理...";
}
?>
" " (ASCII 32) 空格 "\t" (ASCII 9) Tab "\n" (ASCII 10) 換行 "\r" (ASCII 13) 歸位 "\0" (ASCII 0) NUL "\v" (ASCII 11) 垂直 Tab
mb_strlen() 限制最小/最大長度。filter_var($email, FILTER_VALIDATE_EMAIL),手機號用正則。<input type="hidden" name="csrf_token" value="= $_SESSION['csrf_token'] ?>">。Respect\Validation、Laravel Validator、Symfony Validator 等成熟庫。