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

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

Magic Quotes

代碼: Magic Quotes is a process that automagically escapes incoming " /> 精品亚洲一区二区三区,成人亚洲欧美,青草精品

中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

php magic_quotes_gpc的一點認識與分析

blankyao 說“學習的過程就是不斷的發(fā)現(xiàn)錯誤,不斷的改正錯誤”;

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

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

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().
這些英文實在是需要像我這類人有足夠的耐心啊(不是說我有耐心,而是我英語爛),剛才也說了,對于一般人只看下前兩段就可以了,特別是我用紅色標出來的字!!!

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

下面是案例

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

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

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

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

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

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

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

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

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

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

結果: 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之間是四個連續(xù)的單引號).

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

結果: 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之間是四個連續(xù)的單引號).

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

結果: 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
總結如下:

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í)行。

補充:

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

php技術php magic_quotes_gpc的一點認識與分析,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日韩视频在线免费观看 | 国产成人精品午夜视频免费 | 成人综合视频在线 | 成人在线免费 | 人妖videosex高潮另类 | 99久久久久久久久 | 97久久超碰 | 成人不卡视频 | 国产精品免费视频一区 | 日韩中文字幕一区二区 | 国产精品免费一区二区三区四区 | 亚洲精品国产精品国自产在线 | 午夜精品一区 | 欧美日韩久久精品 | 三级视频网站 | 在线观看中文字幕一区二区 | 久久日韩精品 | 国产精品观看 | 99亚洲精品| 伊人久久综合 | 国产一级大片 | 日韩性生活网 | 亚洲成人免费视频在线 | 亚洲一区视频在线 | 亚洲国产精品日本 | 欧美精品一区久久 | 黄色一级视频 | 在线中文字幕日韩 | 中文字幕在线观看第一页 | 欧美久久免费观看 | 亚洲精品国产一区 | аⅴ资源新版在线天堂 | 四虎影院在线观看av | 国产色爽 | 久久久网 | 91精品国产欧美一区二区 | 国产精品.xx视频.xxtv | 国产日韩欧美一区 | 日韩三级电影在线看 | 国产女人与拘做受免费视频 | 97久久精品午夜一区二区 |