# PHP如何關閉自動轉義
## 什么是自動轉義
在PHP中,自動轉義(Magic Quotes)是一個已棄用的特性,主要用于自動對用戶輸入的GET、POST和COOKIE數據進行轉義處理(添加反斜杠)。該特性在早期PHP版本(5.4之前)中默認啟用,旨在防止SQL注入攻擊,但因其設計缺陷已被官方廢棄。
## 為什么需要關閉自動轉義
1. **功能冗余**:現代PHP應用通常使用預處理語句(PDO/mysqli)防御SQL注入
2. **數據污染**:自動轉義會導致數據存儲時包含多余的反斜杠
3. **開發困擾**:需要手動調用`stripslashes()`清理數據
4. **性能損耗**:不必要的轉義操作增加服務器負擔
## 關閉方法
### 1. 修改php.ini(永久生效)
```ini
; 關閉所有自動轉義
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
if (get_magic_quotes_gpc()) {
function stripslashes_deep($value) {
return is_array($value)
? array_map('stripslashes_deep', $value)
: stripslashes($value);
}
$_GET = stripslashes_deep($_GET);
$_POST = stripslashes_deep($_POST);
$_COOKIE = stripslashes_deep($_COOKIE);
}
mysqli_real_escape_string()
手動轉義// 使用預處理語句替代轉義
$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (?)");
$stmt->execute([$_POST['username']]);
提示:建議直接升級到PHP 5.4+版本,從根本上避免自動轉義問題。對于必須使用舊版本的環境,應確保在所有入口文件頭部進行轉義檢查和處理。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。