php中get_magic_quotes_gpc()函數(shù)說明
get_magic_quotes_gpc函數(shù)是一個用來判斷是否為用戶提供的數(shù)據(jù)增加斜線了,這個在php.ini配置文件中哦,下面我來介紹一下get_magic_quotes_gpc()函數(shù)說明.
get_magic_quotes_gpc函數(shù)介紹
取得 PHP 環(huán)境變數(shù) magic_quotes_gpc 的值,屬于 PHP 系統(tǒng)功能。
語法: long get_magic_quotes_gpc(void);
返回值: 長整數(shù)
本函數(shù)取得 PHP 環(huán)境配置的變量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示關閉本功能;返回 1 表示本功能打開。
當 magic_quotes_gpc 打開時,所有的 ‘ (單引號), ” (雙引號), (反斜線) and 空字符會自動轉為含有反斜線的溢出字符。
magic_quotes_gpc設置是否自動為GPC(get,post,cookie)傳來的數(shù)據(jù)中的'”加上反斜線??梢杂胓et_magic_quotes_gpc()檢測系統(tǒng)設置。
如果沒有打開這項設置,可以使用addslashes()函數(shù)添加,它的功能就是給數(shù)據(jù)庫查詢語句等的需要在某些字符前加上了反斜線。
這些字符是單引號(')、雙引號(”)、反斜線()與 NUL(NULL 字符)。
默認情況下,PHP 指令 magic_quotes_gpc 為 on,它主要是對所有的 GET、POST 和 COOKIE 數(shù)據(jù)自動運行 addslashes()。
不要對已經(jīng)被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數(shù) get_magic_quotes_gpc() 進行檢測。
例
利用 get_magic_quotes_gpc()預防數(shù)據(jù)庫攻擊的正確做法
代碼如下
<?php
function check_input($value)
{
// 去除斜杠
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// 如果不是數(shù)字則加引號
if (!is_numeric($value))
{
$value = “‘” . mysql_real_escape_string($value) . “‘”;
}
return $value;
}
$con = mysql_connect(“l(fā)ocalhost”, “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的情況,
我們可以不對輸入和輸出數(shù)據(jù)庫的字符串數(shù)據(jù)作
addslashes()和stripslashes()的操作,數(shù)據(jù)也會正常顯示。
如果此時你對輸入的數(shù)據(jù)作了addslashes()處理,
那么在輸出的時候就必須使用stripslashes()去掉多余的反斜杠。
2. 對于magic_quotes_gpc=off 的情況
必須使用addslashes()對輸入數(shù)據(jù)進行處理,但并不需要使用stripslashes()格式化輸出
因為addslashes()并未將反斜杠一起寫入數(shù)據(jù)庫,只是幫助mysql完成了sql語句的執(zhí)行
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- 使用mysqldump如何實現(xiàn)數(shù)據(jù)庫表備份
- PHP函數(shù)篇詳解十進制、二進制、八進制和十六進制轉換函數(shù)說明
- PHP訪問MYSQL數(shù)據(jù)庫封裝類(附函數(shù)說明)
- php 數(shù)組操作(增加,刪除,查詢,排序)等函數(shù)說明
- php中magic_quotes_gpc對unserialize的影響分析
- 基于PHP magic_quotes_gpc的使用方法詳解
- PHP5下$_SERVER變量不再受magic_quotes_gpc保護的彌補方法
- php magic_quotes_gpc的一點認識與分析
- PHP 字符串正則替換函數(shù)preg_replace使用說明
- php array_map()數(shù)組函數(shù)使用說明
- PHP中simplexml_load_string函數(shù)使用說明
相關文章
php中$_POST與php://input的區(qū)別實例分析
這篇文章主要介紹了php中$_POST與php://input的區(qū)別,實例分析了$_POST與php://input的功能、使用技巧與用法區(qū)別,需要的朋友可以參考下2015-01-01
PHP 二維數(shù)組根據(jù)某個字段排序的具體實現(xiàn)
從兩個不同的表中獲取各自的4條數(shù)據(jù),然后整合(array_merge)成一個數(shù)組,再根據(jù)數(shù)據(jù)的創(chuàng)建時間降序排序取前4條2014-06-06
解析PHP中數(shù)組元素升序、降序以及重新排序的函數(shù)
本篇文章是對PHP中數(shù)組元素升序、降序以及重新排序的函數(shù)進行了詳細的分析介紹,需要的朋友參考下2013-06-06

