因?yàn)閔tml中難免會(huì)出現(xiàn)單引號(hào) 或 雙引號(hào)這種情況。如果不去進(jìn)行轉(zhuǎn)義的話(huà)。插入的時(shí)候就會(huì)在引號(hào)位置截?cái)啵瑢?dǎo)致sql語(yǔ)句無(wú)法執(zhí)行。
成都創(chuàng)新互聯(lián)專(zhuān)注于臨安企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),電子商務(wù)商城網(wǎng)站建設(shè)。臨安網(wǎng)站建設(shè)公司,為臨安等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站開(kāi)發(fā),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
第二個(gè)原因是,有些字符在A(yíng)SCII字符集中沒(méi)有定義,因此需要使用轉(zhuǎn)義字符串來(lái)表示。
假如你的文件是以“.php”為結(jié)尾的話(huà),正常情況下是不需要轉(zhuǎn)義符的。但如果你是在一段已經(jīng)有雙引號(hào)()包圍的代碼中間插入如:?php echo 連接 ?類(lèi)似的代碼,確實(shí)有可能需要轉(zhuǎn)義符。
1,在存儲(chǔ)時(shí),對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)義,使這些需要轉(zhuǎn)義的符號(hào),轉(zhuǎn)義后存入數(shù)據(jù)庫(kù)。讀取時(shí)無(wú)需處理。
把a(bǔ)ddslashes去掉就可以了。不過(guò)建議你不要去掉,如果有的話(huà)插入就會(huì)錯(cuò)誤了。數(shù)據(jù)庫(kù)裏是那樣顯示,但是顯示到頁(yè)面就會(huì)和你編輯的文章一樣了。\是轉(zhuǎn)義的意思。
在PHP中,實(shí)現(xiàn)轉(zhuǎn)義正則表達(dá)式字符的函數(shù)是:preg_quote函數(shù)。語(yǔ)法如下:Stringpreg_quote(stringstr[,stringdelimiter])Str是用來(lái)進(jìn)行字符轉(zhuǎn)義的正則表達(dá)式,delimiter是其他需要轉(zhuǎn)義的字符。
stripslashes()函數(shù)刪除由 addslashes()函數(shù)添加的反斜杠。
現(xiàn)在php5的最新版本為php3,較php3增強(qiáng)了安全特性,去掉了一些威脅安全的函數(shù)如global_register等,去掉了安全模式。PHP的特點(diǎn) PHP 獨(dú)特的語(yǔ)法混合了 C、Java、Perl 以及 PHP 自創(chuàng)新的語(yǔ)法。
數(shù)學(xué)運(yùn)算函數(shù):數(shù)學(xué)運(yùn)算是程序中最常執(zhí)行的功能之一,PHP提供了很多系統(tǒng)函數(shù)實(shí)現(xiàn)運(yùn)算功能,無(wú)須安裝、編譯和配置便可以直接使用。
PHP自帶了大量的系統(tǒng)函數(shù),使用這些函數(shù)可以完成大部分的任務(wù)。常用的有數(shù)學(xué)運(yùn)算函數(shù)和日期時(shí)間函數(shù)。
有時(shí)候從客戶(hù)端傳來(lái)的數(shù)據(jù),可能惡意包含些特殊的字符,比如單引號(hào)、斜杠等,所以需要轉(zhuǎn)義,轉(zhuǎn)義成普通的字符,此時(shí)就要用到string addslashes (string str ),這個(gè)函數(shù)可以對(duì)某個(gè)變量進(jìn)行轉(zhuǎn)義。
要防止sql注入就要在插入數(shù)據(jù)庫(kù)之前對(duì)傳入的每個(gè)變量進(jìn)行轉(zhuǎn)義。有三個(gè)方法:一,用addslashes()函數(shù)轉(zhuǎn)義。二,用pdo對(duì)象的quote()方法:$pdo-quote($var);進(jìn)行轉(zhuǎn)義 三,在執(zhí)行sql語(yǔ)句用prepare() 。
你可以在輸入框中加入;,/這種符號(hào),讓語(yǔ)句解析的時(shí)候出現(xiàn)問(wèn)題,讓php把sql語(yǔ)句拼合成兩個(gè)或兩個(gè)以上。這樣你就可以在第二條語(yǔ)句之后加入你想要執(zhí)行的命令了。