php中g(shù)et_magic_quotes_gpc()函數(shù)說明
get_magic_quotes_gpc函數(shù)是一個(gè)用來判斷是否為用戶提供的數(shù)據(jù)增加斜線了,這個(gè)在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 表示關(guān)閉本功能;返回 1 表示本功能打開。
當(dāng) magic_quotes_gpc 打開時(shí),所有的 ‘ (單引號(hào)), ” (雙引號(hào)), (反斜線) and 空字符會(huì)自動(dòng)轉(zhuǎn)為含有反斜線的溢出字符。
magic_quotes_gpc設(shè)置是否自動(dòng)為GPC(get,post,cookie)傳來的數(shù)據(jù)中的'”加上反斜線??梢杂胓et_magic_quotes_gpc()檢測(cè)系統(tǒng)設(shè)置。
如果沒有打開這項(xiàng)設(shè)置,可以使用addslashes()函數(shù)添加,它的功能就是給數(shù)據(jù)庫查詢語句等的需要在某些字符前加上了反斜線。
這些字符是單引號(hào)(')、雙引號(hào)(”)、反斜線()與 NUL(NULL 字符)。
默認(rèn)情況下,PHP 指令 magic_quotes_gpc 為 on,它主要是對(duì)所有的 GET、POST 和 COOKIE 數(shù)據(jù)自動(dòng)運(yùn)行 addslashes()。
不要對(duì)已經(jīng)被 magic_quotes_gpc 轉(zhuǎn)義過的字符串使用 addslashes(),因?yàn)檫@樣會(huì)導(dǎo)致雙層轉(zhuǎn)義。遇到這種情況時(shí)可以使用函數(shù) get_magic_quotes_gpc() 進(jìn)行檢測(cè)。
例
利用 get_magic_quotes_gpc()預(yù)防數(shù)據(jù)庫攻擊的正確做法
代碼如下
<?php function check_input($value) { // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是數(shù)字則加引號(hào) 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()); } // 進(jìn)行安全的 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); ?>
總結(jié)如下:
1. 對(duì)于magic_quotes_gpc=on的情況,
我們可以不對(duì)輸入和輸出數(shù)據(jù)庫的字符串?dāng)?shù)據(jù)作
addslashes()和stripslashes()的操作,數(shù)據(jù)也會(huì)正常顯示。
如果此時(shí)你對(duì)輸入的數(shù)據(jù)作了addslashes()處理,
那么在輸出的時(shí)候就必須使用stripslashes()去掉多余的反斜杠。
2. 對(duì)于magic_quotes_gpc=off 的情況
必須使用addslashes()對(duì)輸入數(shù)據(jù)進(jìn)行處理,但并不需要使用stripslashes()格式化輸出
因?yàn)閍ddslashes()并未將反斜杠一起寫入數(shù)據(jù)庫,只是幫助mysql完成了sql語句的執(zhí)行
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
- 使用mysqldump如何實(shí)現(xiàn)數(shù)據(jù)庫表備份
- PHP函數(shù)篇詳解十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換函數(shù)說明
- PHP訪問MYSQL數(shù)據(jù)庫封裝類(附函數(shù)說明)
- php 數(shù)組操作(增加,刪除,查詢,排序)等函數(shù)說明
- php中magic_quotes_gpc對(duì)unserialize的影響分析
- 基于PHP magic_quotes_gpc的使用方法詳解
- PHP5下$_SERVER變量不再受magic_quotes_gpc保護(hù)的彌補(bǔ)方法
- php magic_quotes_gpc的一點(diǎn)認(rèn)識(shí)與分析
- PHP 字符串正則替換函數(shù)preg_replace使用說明
- php array_map()數(shù)組函數(shù)使用說明
- PHP中simplexml_load_string函數(shù)使用說明
相關(guān)文章
WordPress開發(fā)中用于標(biāo)題顯示的相關(guān)函數(shù)使用解析
這篇文章主要介紹了WordPress開發(fā)中用于標(biāo)題顯示的相關(guān)函數(shù)使用解析,講解了single_cat_title函數(shù)和get_the_title函數(shù)和the_title函數(shù)的用法,需要的朋友可以參考下2016-01-01php啟動(dòng)時(shí)候提示PHP startup的解決方法
配置好php環(huán)境后,每次開機(jī)都有警告提示說 PHP startup,解決這個(gè)問題很簡單只需要在php.ini 文件中修改 extension_dir配置就行2013-05-05php通過數(shù)組實(shí)現(xiàn)多條件查詢實(shí)現(xiàn)方法(字符串分割)
這篇文章主要介紹了php通過數(shù)組實(shí)現(xiàn)多條件查詢實(shí)現(xiàn)方法(字符串分割),需要的朋友可以參考下2014-05-05php函數(shù)之strtr和str_replace的用法詳解以及效率分析
PHP中主要用strtr()和str_repalce()這兩個(gè)函數(shù)替換字符串和數(shù)組,但你們都知道他們這兩個(gè)函數(shù)的區(qū)別和用法嗎?有不少文章在說使用strtr函數(shù)比str_replace快4倍,那為什么很多時(shí)候都在用str_replace,到底應(yīng)該使用哪個(gè)函數(shù)呢2022-11-11docker?中搭建php環(huán)境經(jīng)驗(yàn)分享
這篇文章主要介紹了docker?中搭建php環(huán)境經(jīng)驗(yàn)分享的相關(guān)資料,需要的朋友可以參考下2023-09-09php中mail函數(shù)發(fā)送郵件失敗的解決方法
這篇文章主要介紹了php中mail函數(shù)發(fā)送郵件失敗的解決方法,涉及針對(duì)Linux運(yùn)行平臺(tái)相關(guān)組件的配置技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12單臺(tái)服務(wù)器的PHP進(jìn)程之間實(shí)現(xiàn)共享內(nèi)存的方法
這篇文章主要介紹了單臺(tái)服務(wù)器的PHP進(jìn)程之間實(shí)現(xiàn)共享內(nèi)存的方法,需要的朋友可以參考下2014-06-06