php中get_magic_quotes_gpc()函數說明_PHP教程

來源:互聯網
上載者:User
get_magic_quotes_gpc函數是一個用來判斷是否為使用者提供的資料增加斜線了,這個在php.ini設定檔中哦,下面我來介紹一下get_magic_quotes_gpc()函數說明.

get_magic_quotes_gpc函數介紹

取得 PHP 環境變數 magic_quotes_gpc 的值,屬於 PHP 系統功能。
文法: long get_magic_quotes_gpc(void);
傳回值: 長整數
本函數取得 PHP 環境配置的變數 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示關閉本功能;返回 1 表示本功能開啟。


當 magic_quotes_gpc 開啟時,所有的 ‘ (單引號), ” (雙引號), (反斜線) and Null 字元會自動轉為含有反斜線的溢出字元。
magic_quotes_gpc設定是否自動為GPC(get,post,cookie)傳來的資料中的’”加上反斜線。可以用get_magic_quotes_gpc()檢測系統設定。
如果沒有開啟這項設定,可以使用addslashes()函數添加,它的功能就是給資料庫查詢語句等的需要在某些字元前加上了反斜線。
這些字元是單引號(’)、雙引號(”)、反斜線()與 NUL(NULL 字元)。
預設情況下,PHP 指令 magic_quotes_gpc 為 on,它主要是對所有的 GET、POST 和 COOKIE 資料自動運行 addslashes()。

不要對已經被 magic_quotes_gpc 轉義過的字串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。

利用 get_magic_quotes_gpc()預防資料庫攻擊的正確做法

代碼如下 複製代碼

function check_input($value)
{
// 去除斜杠
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// 如果不是數字則加引號
if (!is_numeric($value))
{
$value = “‘” . mysql_real_escape_string($value) . “‘”;
}
return $value;
}
$con = mysql_connect(“localhost”, “hello”, “321″);
if (!$con)
{
die(‘Could not connect: ‘ . mysql_error());
}
// 進行安全的 SQL
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = “SELECT * FROM users WHERE
user=$user AND password=$pwd”;
mysql_query($sql);
mysql_close($con);
?>

總結如下:

1. 對於magic_quotes_gpc=on的情況,

我們可以不對輸入和輸出資料庫的字串資料作
addslashes()和stripslashes()的操作,資料也會正常顯示。

如果此時你對輸入的資料作了addslashes()處理,
那麼在輸出的時候就必須使用stripslashes()去掉多餘的反斜線。

2. 對於magic_quotes_gpc=off 的情況

必須使用addslashes()對輸入資料進行處理,但並不需要使用stripslashes()格式化輸出
因為addslashes()並未將反斜線一起寫入資料庫,只是協助mysql完成了sql語句的執行

http://www.bkjia.com/PHPjc/632823.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632823.htmlTechArticleget_magic_quotes_gpc函數是一個用來判斷是否為使用者提供的資料增加斜線了,這個在php.ini設定檔中哦,下面我來介紹一下get_magic_quotes_gpc()函數...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.