get_magic_quotes_gpc函數是一個用來判斷是否為使用者提供的資料增加斜線了,這個在php.ini設定檔中哦,本文將介紹一下get_magic_quotes_gpc()函數說明。下面跟著小編一起來看下吧
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 空字元會自動轉為含有反斜線的溢出字元。
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()預防資料庫攻擊的正確做法
#程式碼如下
<?php 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語句的執行 #以上就是本文的全部內容,希望對大家的學習有所幫助。php get_magic_quotes_gpc()函數使用說明
關於php自動轉義問題,配置裡magic_quotes_gpc的歷史遺留問題
php get_magic_quotes_gpc ()函數的用法簡介
#
以上是php中get_magic_quotes_gpc()函數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!