php中magic quotes gpc函式詳解

2021-09-06 15:36:46 字數 1550 閱讀 2186

magic_quotes_gpc函式在php中的作用是判斷解析使用者提示的資料,如包括有:post、get、cookie過來的資料增加轉義字元「\」,以確保這些資料不會引起程式,特別是資料庫語句因為特殊字元引起的汙染而出現致命的錯誤

在magic_quotes_gpc=on的情況下,如果輸入的資料有

單引號(』)、雙引號(」)、反斜線()與 nul(null 字元)等字元都會被加上反斜線。這些轉義是必須的,如果這個選項為off,那麼我們就必須呼叫addslashes這個函式來為字串增加轉義。

正是因為這個選項必須為on,但是又讓使用者進行配置的矛盾,在php6中刪除了這個選項,一切的程式設計都需要在magic_quotes_gpc=off下進行了。在這樣的環境下如果不對使用者的資料進行轉義,後果不僅僅是程式錯誤而已了。同樣的會引起資料庫被注入攻擊的危險。所以從現在開始大家都不要再依賴這個設定為on了,以免有一天你的伺服器需要更新到php6而導致你的程式不能正常工作。

**如下

複製**

當magic_quotes_gpc=on的時候,函式get_magic_quotes_gpc()就會返回1

當magic_quotes_gpc=off的時候,函式get_magic_quotes_gpc()就會返回0

因此可以看出這個get_magic_quotes_gpc()函式的作用就是得到環境變數magic_quotes_gpc的值。既然在php6中刪除了magic_quotes_gpc這個選項,那麼在php6中這個函式我想也已經不復存在了。

php 判斷是否開啟get_magic_quotes_gpc功能了,以方便我們是否決定使用addslashes這個函式了。

**如下

複製**

function sqlstring($c, $t)

return $c;

}預防資料庫攻擊的正確做法

**如下

複製**

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);

php中mysql函式 php中mysql有關函式

1.mysql query 一般是用來查詢資料裡面的資料。如 username post name sql select from members where login name username result mysql query sql 以上程式是檢測資料庫中是否存在表單傳送過來的使用者名稱...

php 中set是什麼 PHP中

php中把以兩個下劃線 開頭的方法稱為魔術方法 magic methods 這些方法在php中充當了舉足輕重的作用。其中 set 設定乙個類的成員變數時呼叫 set 的作用 set property,value 方法用來設定私有屬性,給乙個未定義的屬性賦值時,此方法會被觸發,傳遞的引數是被設定的屬性...

php 中set是什麼 PHP中

php中把以兩個下劃線 開頭的方法稱為魔術方法 magic methods 這些方法在php中充當了舉足輕重的作用。其中 set 設定乙個類的成員變數時呼叫 set 的作用 set property,value 方法用來設定私有屬性,給乙個未定義的屬性賦值時,此方法會被觸發,傳遞的引數是被設定的屬性...