關閉魔術引號

magic_quotes_gpc 指令只能在系統級關閉,不能在運行時。也就是說不能用 ini_set()

例子 31-1. 在伺服器端關閉魔術引號

下面是一個通過 php.ini 檔案把這些選項設為 Off 的範例。更多訊息請參見本手冊的怎樣修改配置設定

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

若果不能修改伺服器端的配置檔,使用 .htaccess 也可以。範例如下:

php_flag magic_quotes_gpc Off

為了能寫出移植性較強的代碼(可以運行於任何環境),例如不能修改伺服器配置的情況,下面的例子可以在運行時關閉 magic_quotes_gpc。但是這樣做比較低效,適當的修改配置才是更好的辦法。

例子 31-2. 在運行時關閉魔術引號

<?php
if (get_magic_quotes_gpc()) {
    function 
stripslashes_deep($value)
    {
        
$value is_array($value) ?
                    
array_map('stripslashes_deep'$value) :
                    
stripslashes($value);

        return 
$value;
    }

    
$_POST array_map('stripslashes_deep'$_POST);
    
$_GET array_map('stripslashes_deep'$_GET);
    
$_COOKIE array_map('stripslashes_deep'$_COOKIE);
}
?>