get_magic_quotes_gpc() 究竟是作什麼的?

在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 字符)。

通常用法以下;
if(!get_magic_quotes_gpc())
{
    addslashes($prot);
}

默認狀況下,PHP 指令 magic_quotes_gpcon,它主要是對全部的 GET、POST 和 COOKIE 數據自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),由於這樣會致使雙層轉義。遇到這種狀況時能夠使用函數 get_magic_quotes_gpc() 進行檢測。


其實這個函數就是判斷有PHP有沒有自動調用addslashes 這個函數,
下面是例子,其實也是從手冊上弄下來的,傳過來就爲本身看着方便,由於本身記性很差..


見笑:
< html >
    <!--以POST方式傳過去一個帶有單引號的字符串 -->
     < body >
          < form action ="first.php" method ="post" >
               < input type ="text" name ="lastname" value ="Simao'pig" >
               < input type ="submit" value ="提交" >
          </form>
     </body>    
    
</html>

<?php
echo get_magic_quotes_gpc();         // 很很差意思,個人這個是0
echo $_POST['lastname'];             //
Simao'pig
echo addslashes($_POST['lastname']); // Simao\'pig

if (!get_magic_quotes_gpc()) {
    
$lastname = addslashes($_POST['lastname']);
} else {
    
$lastname = $_POST['lastname'];
}

echo
$lastname; //
Simao\'pig
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
?>


本文出自 「 蟲zi」 博客,請務必保留此出處 http://yufulong.blog.51cto.com/285526/53990
相關文章
相關標籤/搜索