bool get_magic_quotes_gpc ( void )返回當前 magic_quotes_gpc 配置選項的設置 記住,嘗試在運行時設置 magic_quotes_gpc 將不會生效.
默認情況下,PHP 指令 magic_quotes_gpc 為 on,它主要是對所有的 GET、POST 和 COOKIE 數(shù)據(jù)自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義,遇到這種情況時可以使用函數(shù) get_magic_quotes_gpc() 進行檢測.
addslashes()示例,代碼如下:
- <?php
- $str = "Is your name O'reilly?";
- // 輸出:Is your name O'''reilly?
- echo addslashes($str);
- ?>
返回值,關閉 magic_quotes_gpc 時返回 0,否則是 1, 在 PHP 5.4.O 起將使用返回 FALSE.
例,代碼如下:
- <?php
- // 如果啟用了魔術引號
- echo $_POST['lastname']; // O'reilly
- echo addslashes($_POST['lastname']); // O/'reilly
- // 適用各個 PHP 版本的用法
- if (get_magic_quotes_gpc()) {
- $lastname = stripslashes($_POST['lastname']);
- }
- else {
- $lastname = $_POST['lastname'];
- }
- // 如果使用 MySQL
- $lastname = mysql_real_escape_string($lastname);
- echo $lastname; // O'reilly
- $sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
- ?>
php.ini:get_magic_quotes_gpc
在php的配置文件中,有個布爾值的設置,就是magic_quotes_runtime,當它打開時,php的大部分函數(shù)自動的給從外部引入的(包括數(shù)據(jù)庫或者文件)數(shù)據(jù)中的溢出字符加上反斜線,當然如果重復給溢出字符加反斜線,那么字符串中就會有多個反斜線,所以這時就要用set_magic_quotes_runtime()與get_magic_quotes_runtime()設置和檢測php.ini文件中magic_quotes_runtime狀態(tài),為了使自己的程序不管服務器是什么設置都能正常執(zhí)行,可以在程序開始用get_magic_quotes_runtime檢測該設置的狀態(tài)決定是否要手工處理,或者在開始(或不需要自動轉義的時候)用set_magic_quotes_runtime(0)關掉該設置。
magic_quotes_gpc設置是否自動為GPC(get,post,cookie)傳來的數(shù)據(jù)中的'"/加上反斜線,可以用get_magic_quotes_gpc()檢測系統(tǒng)設置,如果沒有打開這項設置,可以使用addslashes()函數(shù)添加,它的功能就是給數(shù)據(jù)庫查詢語句等的需要在某些字符前加上了反斜線,這些字符是單引號(')、雙引號(")、反斜線(/)與 NUL(NULL 字符).
新聞熱點
疑難解答