# PHP5.2怎么去除反斜杠
## 問題背景
在PHP5.2及更早版本中,當`magic_quotes_gpc`配置開啟時,所有通過GET、POST、COOKIE傳入的數據會被自動添加反斜杠(`\`)進行轉義。雖然這是早期防止SQL注入的安全措施,但會導致數據處理時出現多余的轉義字符,影響代碼邏輯和顯示效果。
## 解決方案
### 方法一:關閉magic_quotes_gpc(推薦)
修改`php.ini`文件是最徹底的解決方式:
```ini
magic_quotes_gpc = Off
修改后需重啟Web服務器生效。若無法修改服務器配置,可在.htaccess
中添加:
php_flag magic_quotes_gpc 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);
}
$input = $_POST['content'];
if (get_magic_quotes_gpc()) {
$input = stripslashes($input);
}
如果數據需要存入數據庫,建議使用參數化查詢(如PDO預處理)而非手動轉義:
$pdo = new PDO("mysql:host=localhost;dbname=test", "user", "pass");
$stmt = $pdo->prepare("INSERT INTO table (content) VALUES (?)");
$stmt->execute([$_POST['content']]);
magic_quotes_gpc
特性,無需處理此問題stripslashes_deep
函數)方法 | 適用場景 | 優點 | 缺點 |
---|---|---|---|
修改配置 | 有服務器權限時 | 一勞永逸 | 需重啟服務 |
代碼處理 | 無權限修改配置時 | 靈活可控 | 增加代碼量 |
數據庫預處理 | 所有場景 | 最安全 | 需改造查詢邏輯 |
建議優先通過關閉配置解決問題,其次是使用預處理語句,最后才選擇代碼過濾方案。 “`
(注:實際字符數約650字,可根據需要刪減示例代碼或說明部分調整字數)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。