最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php magic_quotes_gpc的一點(diǎn)認(rèn)識與分析

 更新時(shí)間:2008年08月18日 20:30:48   作者:  
最近一直在做一個(gè)文章發(fā)布系統(tǒng),做了改,改了做,一直到現(xiàn)在還沒竣工.... 為了達(dá)到更好的兼容性,其中的程序涉及到了magic_quotes_gpc,看了下手冊,又找了些資料,分析了下,分享給大家。
blankyao 說“學(xué)習(xí)的過程就是不斷的發(fā)現(xiàn)錯(cuò)誤,不斷的改正錯(cuò)誤”;

先看下手冊上怎么說的吧!

對一般人來說看下前兩段就可以了

Magic Quotes

代碼:
Magic Quotes is a process that automagically escapes incoming data to the PHP script. It's preferred to code with magic quotes off and to instead escape the data at runtime, as needed.
What are Magic Quotes


代碼:
When on, all ' (single-quote), " (double quote), \ (backslash) and NULL characters are escaped with a backslash automatically. This is identical to what addslashes() does.

There are three magic quote directives:
magic_quotes_gpc

代碼:
Affects HTTP Request data (GET, POST, and COOKIE). Cannot be set at runtime, and defaults to on in PHP.
magic_quotes_runtime

代碼:
If enabled, most functions that return data from an external source, including databases and text files, will have quotes escaped with a backslash. Can be set at runtime, and defaults to off in PHP.
magic_quotes_sybase

代碼:
If enabled, a single-quote is escaped with a single-quote instead of a backslash. If on, it completely overrides magic_quotes_gpc. Having both directives enabled means only single quotes are escaped as ''. Double quotes, backslashes and NULL's will remain untouched and unescaped.
Why use Magic Quotes




1 Useful for beginners

Magic quotes are implemented in PHP to help code written by beginners from being dangerous. Although SQL Injection is still possible with magic quotes on, the risk is reduced.

2Convenience

For inserting data into a database, magic quotes essentially runs addslashes() on all Get, Post, and Cookie data, and does so automagically.


Why not to use Magic Quotes




1 Portability

代碼:
Assuming it to be on, or off, affects portability. Use get_magic_quotes_gpc() to check for this, and code accordingly.
2 Performance

代碼:
Because not every piece of escaped data is inserted into a database, there is a performance loss for escaping all this data. Simply calling on the escaping functions (like addslashes()) at runtime is more efficient.

Although php.ini-dist enables these directives by default, php.ini-recommended disables it. This recommendation is mainly due to performance reasons.
3 Inconvenience

代碼:
Because not all data needs escaping, it's often annoying to see escaped data where it shouldn't be. For example, emailing from a form, and seeing a bunch of \' within the email. To fix, this may require excessive use of stripslashes().
這些英文實(shí)在是需要像我這類人有足夠的耐心?。ú皇钦f我有耐心,而是我英語爛),剛才也說了,對于一般人只看下前兩段就可以了,特別是我用紅色標(biāo)出來的字?。?!

另外,特別注意的是,魔術(shù)引用發(fā)生作用是在傳遞$_GET,$_POST,$_COOKIE時(shí)

下面是案例

代碼:
1.
條件: magic_quotes_gpc=off
寫入數(shù)據(jù)庫的字符串未經(jīng)過任何過濾處理。從數(shù)據(jù)庫讀出的字符串也未作任何處理。

數(shù)據(jù):  $data="snow''''sun" ; (snow和sun之間是四個(gè)連續(xù)的單引號).

操作: 將字符串:"snow''''sun" 寫入數(shù)據(jù)庫,

結(jié)果: 出現(xiàn)sql語句錯(cuò)誤,mysql不能順利完成sql語句,寫入數(shù)據(jù)庫失敗。

數(shù)據(jù)庫保存格式:無數(shù)據(jù)。

輸出數(shù)據(jù)格式:無數(shù)據(jù)。

說明: 對于未經(jīng)處理的單引號在寫入數(shù)據(jù)庫時(shí)會(huì)使sql語句發(fā)生錯(cuò)誤。

代碼:
2.
條件: magic_quotes_gpc=off
寫入數(shù)據(jù)庫的字符串經(jīng)過函數(shù)addslashes()處理。從數(shù)據(jù)庫讀出的字符串未作任何處理。

數(shù)據(jù):  $data="snow''''sun" ; (snow和sun之間是四個(gè)連續(xù)的單引號).

操作: 將字符串:"snow''''sun" 寫入數(shù)據(jù)庫,

結(jié)果: sql語句順利執(zhí)行,數(shù)據(jù)成功寫入數(shù)據(jù)庫

數(shù)據(jù)庫保存格式:snow''''sun (和輸入一樣)

輸出數(shù)據(jù)格式:snow''''sun (和輸入一樣)

說明: addslashes()函數(shù)將單引號轉(zhuǎn)換為\'的轉(zhuǎn)義字符使sql語句成功執(zhí)行,
但\'并未作為數(shù)據(jù)存入數(shù)據(jù)庫,數(shù)據(jù)庫保存的是snow''''sun 而并不是我們想象的snow\'\'\'\'sun

代碼:
3.
條件: magic_quotes_gpc=on
寫入數(shù)據(jù)庫的字符串未經(jīng)過任何處理。從數(shù)據(jù)庫讀出的字符串未作任何處理。

數(shù)據(jù):  $data="snow''''sun" ; (snow和sun之間是四個(gè)連續(xù)的單引號).

操作: 將字符串:"snow''''sun" 寫入數(shù)據(jù)庫,

結(jié)果: sql語句順利執(zhí)行,數(shù)據(jù)成功寫入數(shù)據(jù)庫

數(shù)據(jù)庫保存格式:snow''''sun (和輸入一樣)

輸出數(shù)據(jù)格式:snow''''sun (和輸入一樣)

說明: magic_quotes_gpc=on 將單引號轉(zhuǎn)換為\'的轉(zhuǎn)義字符使sql語句成功執(zhí)行,
但\'并未作為數(shù)據(jù)入數(shù)據(jù)庫,數(shù)據(jù)庫保存的是snow''''sun而并不是我們想象的snow\'\'\'\'sun。

代碼:
4.
條件: magic_quotes_gpc=on
寫入數(shù)據(jù)庫的字符串經(jīng)過函數(shù)addlashes()處理。從數(shù)據(jù)庫讀出的字符串未作任何處理。

數(shù)據(jù):  $data="snow''''sun" ; (snow和sun之間是四個(gè)連續(xù)的單引號).

操作: 將字符串:"snow''''sun" 寫入數(shù)據(jù)庫,

結(jié)果: sql語句順利執(zhí)行,數(shù)據(jù)成功寫入數(shù)據(jù)庫

數(shù)據(jù)庫保存格式:snow\'\'\'\'sun (添加了轉(zhuǎn)義字符)

輸出數(shù)據(jù)格式:snow\'\'\'\'sun (添加了轉(zhuǎn)義字符)

說明: magic_quotes_gpc=on 將單引號轉(zhuǎn)換為\'的轉(zhuǎn)義字符使sql語句成功執(zhí)行,
addslashes又將即將寫入數(shù)據(jù)庫的單引號轉(zhuǎn)換為\',后者的轉(zhuǎn)換被作為數(shù)據(jù)寫入
數(shù)據(jù)庫,數(shù)據(jù)庫保存的是snow\'\'\'\'sun
總結(jié)如下:

1. 對于magic_quotes_gpc=on的情況,

我們可以不對輸入和輸出數(shù)據(jù)庫的字符串?dāng)?shù)據(jù)作
addslashes()和stripslashes()的操作,數(shù)據(jù)也會(huì)正常顯示。

如果此時(shí)你對輸入的數(shù)據(jù)作了addslashes()處理,
那么在輸出的時(shí)候就必須使用stripslashes()去掉多余的反斜杠。

2. 對于magic_quotes_gpc=off 的情況

必須使用addslashes()對輸入數(shù)據(jù)進(jìn)行處理,但并不需要使用stripslashes()格式化輸出
因?yàn)閍ddslashes()并未將反斜杠一起寫入數(shù)據(jù)庫,只是幫助mysql完成了sql語句的執(zhí)行。

補(bǔ)充:

magic_quotes_gpc 作用范圍是:WEB客戶服務(wù)端;作用時(shí)間:請求開始時(shí),例如當(dāng)腳本運(yùn)行時(shí).
magic_quotes_runtime 作用范圍:從文件中讀取的數(shù)據(jù)或執(zhí)行exec()的結(jié)果或是從SQL查詢中得到的;作用時(shí)間:每次當(dāng)腳本訪問運(yùn)行狀態(tài)中產(chǎn)生的數(shù)據(jù)

相關(guān)文章

  • php字符串操作常見問題小結(jié)

    php字符串操作常見問題小結(jié)

    這篇文章主要介紹了php字符串操作常見問題,結(jié)合實(shí)例形式分析了php針對json的操作及字符串轉(zhuǎn)換問題,需要的朋友可以參考下
    2016-10-10
  • PHP數(shù)組與字符串互相轉(zhuǎn)換實(shí)例

    PHP數(shù)組與字符串互相轉(zhuǎn)換實(shí)例

    在本篇文章里小編給大家分享的是關(guān)于PHP數(shù)組與字符串互相轉(zhuǎn)換實(shí)例內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-05-05
  • php鏈路追蹤框架skywalking介紹

    php鏈路追蹤框架skywalking介紹

    SkyWalking是一個(gè)開源的可觀測平臺,用于從服務(wù)和云原生基礎(chǔ)設(shè)施收集,分析,?聚合及可視化數(shù)據(jù)。SkyWalking?提供了一種簡便的方式來清晰地觀測分布式系統(tǒng),甚至橫跨多個(gè)云平臺
    2022-08-08
  • PHP通過正則表達(dá)式下載圖片到本地的實(shí)現(xiàn)代碼

    PHP通過正則表達(dá)式下載圖片到本地的實(shí)現(xiàn)代碼

    PHP通過正則表達(dá)式下載圖片到本地的實(shí)現(xiàn)代碼,主要是通過正則表達(dá)式匹配網(wǎng)頁內(nèi)容中的圖片地址并下載。
    2011-09-09
  • PHP實(shí)現(xiàn)取得HTTP請求的原文

    PHP實(shí)現(xiàn)取得HTTP請求的原文

    這篇文章主要介紹了PHP實(shí)現(xiàn)取得HTTP請求的原文,需要的朋友可以參考下
    2014-08-08
  • php-cli簡介(不會(huì)Shell語言一樣用Shell)

    php-cli簡介(不會(huì)Shell語言一樣用Shell)

    剛才說到,我們可以用php來開發(fā)Shell程序。有的同學(xué)可能會(huì)問啦:php不是用來做網(wǎng)頁的么?。是的,php可以用來做動(dòng)態(tài)網(wǎng)頁,并且當(dāng)初php就是為做動(dòng)態(tài)網(wǎng)頁而開發(fā)的語言,但是理論上php可以用來做任何的程序,甚至是桌面程序
    2013-06-06
  • PHP獲取當(dāng)前url的具體方法全面解析

    PHP獲取當(dāng)前url的具體方法全面解析

    這篇文章主要是對PHP獲取當(dāng)前url的具體方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • php實(shí)現(xiàn)常見圖片格式的水印和縮略圖制作(面向?qū)ο?

    php實(shí)現(xiàn)常見圖片格式的水印和縮略圖制作(面向?qū)ο?

    這篇文章主要介紹了php實(shí)現(xiàn)常見圖片格式j(luò)pg,png,gif的水印和縮略圖制作,使用面向?qū)ο蠓椒▽?shí)現(xiàn)PHP圖片水印和縮略圖功能,感興趣的小伙伴們可以參考一下
    2016-06-06
  • PHP實(shí)現(xiàn)的服務(wù)器一致性hash分布算法示例

    PHP實(shí)現(xiàn)的服務(wù)器一致性hash分布算法示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)的服務(wù)器一致性hash分布算法,結(jié)合實(shí)例形式分析了php一致性hash分布算法類的具體定義與相關(guān)使用技巧,需要的朋友可以參考下
    2018-08-08
  • php使用curl獲取https請求的方法

    php使用curl獲取https請求的方法

    這篇文章主要介紹了php使用curl獲取https請求的方法,涉及curl針對https請求的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02

最新評論

繁昌县| 蒙城县| 德清县| 南阳市| 连云港市| 深州市| 六盘水市| 沾化县| 娱乐| 乌鲁木齐县| 新兴县| 诸城市| 基隆市| 莱芜市| 股票| 清流县| 新晃| 苍南县| 南岸区| 柏乡县| 洞头县| 湖南省| 临漳县| 鄂托克旗| 分宜县| 茂名市| 安康市| 南涧| 平定县| 镇赉县| 丹东市| 句容市| 安达市| 绥芬河市| 政和县| 万源市| 霍城县| 固原市| 贵州省| 南岸区| 资兴市|