php關於get_magic_quotes_gpc()方法的使用

magic_quotes_gpc函數在php中的做用是判斷解析用戶提示的數據,如包括有:post、get、cookie過來的數據增長轉義字符「\」,以確保這些數據不會引發程序,特別是數據庫語句由於特殊字符(單引號,雙引號,反斜線)引發的污染而出現致命的錯誤。php

在php的配置文件中,有個布爾值的設置,就是magic_quotes_runtime,當它打開時,php的大部分函數自動的給從外部引入的(包括數據庫或者文件)數據中的溢出字符加上反斜線。 固然若是重複給溢出字符加反斜線,那麼字符串中就會有多個反斜線,因此這時就要用set_magic_quotes_runtime()與get_magic_quotes_runtime()設置和檢測php.ini文件中magic_quotes_runtime狀態。 爲了使本身的程序無論服務器是什麼設置都能正常執行。能夠在程序開始用get_magic_quotes_runtime檢測該設置的狀態決定是否要手工處理,或者在開始(或不須要自動轉義的時候)用set_magic_quotes_runtime(0)關掉該設置。數據庫

magic_quotes_gpc設置是否自動爲GPC(get,post,cookie)傳來的數據中的'"\加上反斜服務器

線。能夠用get_magic_quotes_gpc()檢測系統設置。若是沒有打開這項設置,能夠使用
addslashes()函數添加,它的功能就是給數據庫查詢語句等的須要在某些字符前加上了反斜線。這些字符是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字符)。cookie

簡單用法,添加轉義過濾:函數

if(!get_magic_quotes_gpc())
{
    addslashes($prot);
}

也能夠在項目程序初始化時應用該方法:post

/**
     * 構造函數
     *
     * 構造應用程序對象
     */
    protected function __construct()
    {
        
        // 1.初始化運行環境
        
        // 1.1 禁止 magic quotes
        set_magic_quotes_runtime(0);

        // 1.2 處理被 magic_quotes_gpc 自動轉義過的數據
        if (get_magic_quotes_gpc())
        {
            $in = array(& $_GET, & $_POST, & $_COOKIE, & $_REQUEST);
            while (list ($k, $v) = each($in))
            {
                foreach ($v as $key => $val)
                {
                    if (! is_array($val))
                    {
                        // 解析被轉義過的數據
                        $in[$k][$key] = stripslashes($val);
                        continue;
                    }
                    $in[] = & $in[$k][$key];
                }
            }
            unset($in);
        }
  }

php配置:spa

clipboard.png

相關文章
相關標籤/搜索