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

PHP 表單驗證三大函式:isset、empty、is_numeric 差異與最佳實踐

     編輯:PHP 綜合知識

函式行為對照表

輸入值isset()empty()is_numeric()
未定義變數falsetrue錯誤/false
nullfalsetruefalse
'' (空字串)truetruefalse
0 (整數)truetruetrue
'0' (字串)truetruetrue
falsetruetruefalse
123 / '123'truefalsetrue

適用場景

  • isset():檢查變數是否存在且非 null(如檢查 $_GET['id'] 是否在 URL 中)
  • empty():檢查「無效值」(未定義、null、空字串、0、false),表單必填驗證首選
  • is_numeric():純數值格式檢查,**需先確認變數存在**,否則觸發警告

綜合驗證範例

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$fo = $_GET['fo'] ?? null;

echo '<h2>isset 檢查</h2>';
var_dump(isset($fo));

echo '<h2>empty 檢查</h2>';
var_dump(empty($fo));

echo '<h2>is_numeric 檢查</h2>';
if (isset($fo)) { // 先確認存在
    var_dump(is_numeric($fo));
} else {
    echo '變數不存在,無法檢查 is_numeric';
}
?>
<a href="?fo=Jack">有效值</a>
<a href="?fo=">空值</a>
<a href="?fo=0">零值</a>
<a href="?">無參數</a>

最佳實踐建議

  1. 第一層用 empty() 判斷使用者是否有輸入內容
  2. 第二層用 is_numeric()、filter_var()、正則等做格式驗證
  3. 避免直接對 $_GET['key'] 用 is_numeric() 或 $_GET['key'] == '',若 key 不存在會噴 Notice
  4. PHP 7+ 推薦 $_GET['key'] ?? '' 取得預設空字串再驗證
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved