PHP 5.4 移除 magic_quotes_gpc,導致 $_SERVER 等超全局變量不再自動轉義,舊代碼依賴自動轉義會產生安全隱患。
<?php
$magic_quotes_gpc = get_magic_quotes_gpc();
@extract(daddslashes($_COOKIE));
@extract(daddslashes($_POST));
@extract(daddslashes($_GET));
if (!$magic_quotes_gpc) {
$_FILES = daddslashes($_FILES);
}
// 遞歸轉義函數
function daddslashes($string) {
if (!is_array($string)) return addslashes($string);
foreach ($string as $key => $val) {
$string[$key] = daddslashes($val);
}
return $string;
}
?>
get_magic_quotes_gpc() 獲取配置狀態(已棄用,PHP 7+ 恒返回 false)。$_GET/POST/COOKIE/FILES 遞歸執行 addslashes。@extract 將轉義後的數組導入當前符號表(舊風格,現不推薦)。magic_quotes_gpc(PHP 5.4+ 預設關閉)。htmlspecialchars 防 XSS。