register_globals
是一個 PHP 配置選項,用于控制哪些全局變量可以通過 $_GET
、$_POST
和 $_COOKIE
等超全局數(shù)組訪問。自 PHP 5.4.0 起,register_globals
默認被關閉,以提高安全性。如果你的舊代碼依賴于 register_globals
,你需要進行一些修改以確保代碼在新版本的 PHP 中正常工作。
以下是一些建議,幫助你遷移舊代碼以適應 register_globals
的關閉:
檢查并替換全局變量:
$variable
來訪問全局變量,你需要確保這些變量在 $_GET
、$_POST
或 $_COOKIE
中存在。isset()
或 empty()
函數(shù)來檢查變量是否存在,并使用 $_GET
、$_POST
或 $_COOKIE
數(shù)組來訪問它們。例如,將 $HTTP_GET_VARS['variable']
替換為 $_GET['variable']
(如果適用)。更新變量賦值:
$GLOBALS['variable'] = 'value';
替換為 $_GLOBALS['variable'] = 'value';
(注意:$_GLOBALS
和 $GLOBALS
是相同的,但前者更常用)。處理來自 URL 的參數(shù):
$_GET
數(shù)組來訪問這些值,并對其進行適當?shù)尿炞C和清理。處理來自表單的提交:
$_POST
數(shù)組來訪問它們。確保對提交的數(shù)據(jù)進行驗證和清理,以防止跨站腳本攻擊(XSS)和其他安全問題。處理來自 cookies 的值:
$_COOKIE
數(shù)組來訪問它們。同樣,確保對 cookie 值進行驗證和清理。測試代碼:
register_globals
的情況下仍然按預期工作。考慮使用預處理語句:
考慮使用更安全的功能:
filter_input()
和 filter_var()
,來清理和驗證輸入數(shù)據(jù)。考慮升級 PHP 版本:
總之,遷移舊代碼以適應 register_globals
的關閉需要仔細檢查和更新代碼中的全局變量訪問方式。通過遵循上述建議并進行充分的測試,你可以確保你的代碼在新版本的 PHP 中安全且可靠地運行。