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

PHP 開發者必知的 10 個進階技巧:效能、安全與最佳實踐

     編輯:PHP 相關知識

1. IP 地址整數儲存:ip2long / long2ip

IPv4 轉無號整數儲存,空間省 75% (15 bytes → 4 bytes),範圍查詢極快:

$ipInt = ip2long('192.168.1.1'); // 3232235777
$ipStr = long2ip($ipInt);         // 192.168.1.1

// SQL 範圍查詢
SELECT * FROM logs WHERE ip_int BETWEEN ip2long('192.168.1.0') AND ip2long('192.168.1.255');

注意:PHP `ip2long` 回傳有號整數,MySQL `INET_ATON()`/`INET_NTOA()` 為無號,建議資料庫用 `INT UNSIGNED`。

2. Email 域名驗證:checkdnsrr

function validateEmailDomain($email) {
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) return false;
    $domain = array_pop(explode('@', $email));
    return checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A');
}

3. 改用 mysqli 預處理語句

MySQL 4.1+ / PHP 5+ 必須棄用 `mysql_*`,改用 `mysqli` 或 `PDO`:

$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ? AND status = ?");
$stmt->bind_param('si', $email, $status);
$stmt->execute();
// 防 SQL 注入、效能更好 (查詢計畫重用)

4. 善用三元運算子與 Null 合併運算子 (PHP 7+)

$value = $input ?? 'default';        // null 合併
$status = $user->isActive ? '啟用' : '停用'; // 三元
$page = ($_GET['page'] ?? 1) > 0 ? (int)$_GET['page'] : 1;

5. 善用 PEAR / Composer 套件管理

不要重造輪子。常用套件:

  • HTTP: `guzzlehttp/guzzle`
  • 日期: `nesbot/carbon`
  • 驗證: `respect/validation`
  • 圖片: `intervention/image`
  • 日誌: `monolog/monolog`

6. 程式碼高亮輸出:highlight_file / highlight_string


// 除錯時輸出格式化程式碼
highlight_file(__FILE__); 
// 或
echo highlight_string('', true);

警告:勿暴露含密碼/金鑰的檔案!

7. 生產環境關閉錯誤顯示:error_reporting(0)


// 入口檔案第一行
error_reporting(0);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');

避免洩露資料庫結構、路徑、SQL 查詢等敏感資訊。

8. 大型文字壓縮儲存:gzcompress / gzuncompress

$compressed = gzcompress($longText, 9); // 9 最高壓縮
// 儲存至 BLOB/TEXT 欄位
$original = gzuncompress($compressed);
// 典型文字壓縮率 70-90%

不適用需全文搜尋的欄位。

9. 參考傳遞回傳多值

function getUserInfo($id, &$name, &$email, &$role) {
    // 查詢資料庫...
    $name = 'John'; $email = 'john@example.com'; $role = 'admin';
    return true; // 成功指標
}
getUserInfo(123, $name, $email, $role);
// $name, $email, $role 已被修改

10. 徹底理解 Magic Quotes 與 SQL 注入防禦

  • Magic Quotes (PHP 5.4 移除) 自動跳脫輸入,**不可依賴**
  • 永遠使用**預處理語句** (Prepared Statements)
  • 輸出到 HTML 必須 `htmlspecialchars($str, ENT_QUOTES, 'UTF-8')`
  • 資料庫識別字元 (表名、欄位名) 無法參數化,需白名單驗證

總結

這 10 個技巧涵蓋資料庫優化、安全防禦、效能提升、程式碼品質,是從初階邁向資深 PHP 開發者的關鍵里程碑。持續精進、追蹤 PHP 版本更新 (目前 PHP 8.3),保持程式碼現代化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved