[转] PHP 转义与反转义函数
轉(zhuǎn)載自:?http://blog.csdn.net/domingoluis/article/details/6620888
php向mysql數(shù)據(jù)庫(kù)插入數(shù)據(jù)進(jìn)行轉(zhuǎn)義包括兩方面的操作,第一方面需要在添加數(shù)據(jù)時(shí)通過(guò)數(shù)據(jù)轉(zhuǎn)義將數(shù)據(jù)寫入庫(kù)中,第二方面在將數(shù)據(jù)顯示在頁(yè)面時(shí)需要再次將數(shù)據(jù)恢復(fù)為原始狀態(tài),即反轉(zhuǎn)義。
一、數(shù)據(jù)轉(zhuǎn)義
二、反轉(zhuǎn)義
stripslashes($content)以上兩行代碼即可實(shí)現(xiàn)php向mysql數(shù)據(jù)庫(kù)插入數(shù)據(jù)轉(zhuǎn)義操作。
get_magic_quotes_gpc()
在PHP中g(shù)et_magic_quotes_gpc()函數(shù)是內(nèi)置的函數(shù),這個(gè)函數(shù)的作用就是得到php.ini設(shè)置中magic_quotes_gpc選項(xiàng)的值。
那么就先說(shuō)一下magic_quotes_gpc選項(xiàng):
如果magic_quotes_gpc=On,PHP解析器就會(huì)自動(dòng)為post、get、cookie過(guò)來(lái)的數(shù)據(jù)增加轉(zhuǎn)義字符“\”,以確保這些數(shù)據(jù)不會(huì)引起程序,特別是數(shù)據(jù)庫(kù)語(yǔ)句因?yàn)樘厥庾址鸬奈廴径霈F(xiàn)致命的錯(cuò)誤。
在magic_quotes_gpc=On的情況下,如果輸入的數(shù)據(jù)有
單引號(hào)(’)、雙引號(hào)(”)、反斜線(\)與 NUL(NULL 字符)等字符都會(huì)被加上反斜線。這些轉(zhuǎn)義是必須的,如果這個(gè)選項(xiàng)為off,那么我們就必須調(diào)用addslashes這個(gè)函數(shù)來(lái)為字符串增加轉(zhuǎn)義。
正是因?yàn)檫@個(gè)選項(xiàng)必須為On,但是又讓用戶進(jìn)行配置的矛盾,在PHP6中刪除了這個(gè)選項(xiàng),一切的編程都需要在 magic_quotes_gpc=Off下進(jìn)行了。在這樣的環(huán)境下如果不對(duì)用戶的數(shù)據(jù)進(jìn)行轉(zhuǎn)義,后果不僅僅是程序錯(cuò)誤而已了。同樣的會(huì)引起數(shù)據(jù)庫(kù)被注入攻擊的危險(xiǎn)。所以從現(xiàn)在開(kāi)始大家都不要再依賴這個(gè)設(shè)置為On了,以免有一天你的服務(wù)器需要更新到PHP6而導(dǎo)致你的程序不能正常工作。
當(dāng)magic_quotes_gpc=On的時(shí)候,函數(shù)get_magic_quotes_gpc()就會(huì)返回1
當(dāng)magic_quotes_gpc=Off的時(shí)候,函數(shù)get_magic_quotes_gpc()就會(huì)返回0
因此可以看出這個(gè)get_magic_quotes_gpc()函數(shù)的作用就是得到環(huán)境變量magic_quotes_gpc的值。既然在PHP6中刪除了magic_quotes_gpc這個(gè)選項(xiàng),那么在PHP6中這個(gè)函數(shù)我想也已經(jīng)不復(fù)存在了。
addslashes()
addslashes() 函數(shù)在指定的預(yù)定義字符前添加反斜杠。
這些預(yù)定義字符是:
* 單引號(hào) (')
* 雙引號(hào) (")
* 反斜杠 (\)
* NULL
語(yǔ)法
addslashes(string)
StripSlashes()
去掉反斜線字符。
語(yǔ)法: string stripslashes(string str);
返回值: 字符串
函數(shù)種類: 資料處理
本函數(shù)可去掉字符串中的反斜線字符。若是連續(xù)二個(gè)反斜線,則去掉一個(gè),留下一個(gè)。若只有一個(gè)反斜線,就直接去掉。
如果不知道有沒(méi)有設(shè)置可以這樣做:
<span style="font-weight: normal;">function stringFilter($str){
if (!empty($str)) {
if (ini_set('magic_quotes_gpc')) {
return $str;
}else{
return addslashes($str);
}
}else{
return false;
}
} </span>
總結(jié)
以上是生活随笔為你收集整理的[转] PHP 转义与反转义函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SYBASE的管理(三)
- 下一篇: http://bbs.winos.cn/