php中get_magic_quotes_gpc()函式說明

NO IMAGE

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留言本模組主要功能的函式說明(程式碼可實現)PHP函式篇詳解十進位制、二進位制、八進位制和十六進位制轉換函式說明PHP訪問MYSQL資料庫封裝類(附函式說明)php 陣列操作(增加,刪除,查詢,排序)等函式說明php中magic_quotes_gpc對unserialize的影響分析基於PHP magic_quotes_gpc的使用方法詳解PHP5下$_SERVER變數不再受magic_quotes_gpc保護的彌補方法php magic_quotes_gpc的一點認識與分析PHP 字串正則替換函式preg_replace使用說明php array_map()陣列函式使用說明PHP中simplexml_load_string函式使用說明