| 提示 | 原因 | 嚴重級別 |
|---|---|---|
| Undefined variable | 使用未定義的變量(如 echo $a;) | E_NOTICE |
| Undefined index / offset | 訪問數組不存在的鍵(如 $_GET['id']) | E_NOTICE |
<?php
// 推薦:三元運算符 + isset/empty
$id = isset($_GET['id']) ? $_GET['id'] : 0;
$name = $_POST['name'] ?? 'anonymous'; // PHP 7+ null 合併運算符
// 封裝通用獲取函數
function get($arr, $key, $default = null) {
return isset($arr[$key]) ? $arr[$key] : $default;
}
$id = get($_GET, 'id', 0);
?>
; php.ini 生產環境建議
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
或運行時設置:
error_reporting(E_ALL ^ E_NOTICE); // 忽略 Notice
// 更精確
error_reporting(E_ALL & ~E_NOTICE);
舊代碼依賴 register_globals = On 自動將 GET/POST 變為全局變量,此特性自 PHP 5.4 移除。**切勿開啟**,極大安全風險。請重構代碼顯式從超全局數組獲取。
E_ALL 盡早發現問題。var_dump($_GET) 確認數據結構。