在使用者提交表單的時候,有的使用者會提交一些特殊字元,
比如單引號雙引號,此時,
如果直接按正常字串插入資料庫的話,
可能會出現無法正確插入資料庫
pdo::quote 轉義mysql語句中的單引號和雙引號
php為了安全性,所以引入了個magic_quotes_gpc = on的功能,可以不需要做任何處理就能直接把單引號插入資料庫中,那麼對於off時,則需要考慮單引號的問題了,而不是一味地信任執行環境。
當magic_quotes_gpc = on時,使用了addslashes()處理後的資料在資料庫中將以\『形式儲存,如果此時直接輸出的話,就會發現比自己期待的內容多了個\,因此stripslashes()出場了,它能把\去掉(區別於str_replace(」\」, 「」,$str))。
當magic_quotes_gpc = off時,使用了addslashes()處理後的資料在資料庫中將以『形式儲存,沒有上面說的有\的問題,addslashes()起到插入資料不出錯的作用,如果此時直接輸出的話,資料正常。不需要再用stripslashes()。
addslashes()和stripslashes()正好是相反的,直接記憶:addslashes()加個\,stripslashes()去個\
那麼什麼時候用呢?
簡單說:
當magic_quotes_gpc = on時,系統會自動處理單引號等問題,用不用addslashes()和stripslashes()都沒關係,但是如果新增資料時用了addslashes(),那麼顯示資料時必須要stripslashes()
當magic_quotes_gpc = off時,系統不會處理單引號等問題,所以插入資料時必須要使用addslashes(),顯示資料時則不需要使用stripslashes()。
既然有了分析,做程式時要怎麼辦呢?根據以上兩種情況,可得:
不管magic_quotes_gpc是on還是off,咱新增資料時都用addslashes(),當on時,必須使用stripslashes(),off時則不能用stripslashes()。
如何判斷on還是off呢?用get_magic_quotes_gpc()。
最後舉例:
複製**
**//提交資料,或者變數準備:
$content=addslashes(」這裡面是資料,不管有沒單引號或者還是變數」);
//插入資料到資料庫,**省略
//開始顯示資料
$content=」從資料庫讀取的資料」;
if(get_magic_quotes_gpc()){
$content=stripslashes($content);
echo $content;
mysql 轉義字元
標籤:區別 安全 安全性 off replace 記憶 rip 使用 sla
mysql sql 轉義符 MySQL的轉義字元
mysql可以識別下列轉義字元 0乙個ascii 0 nul 字元。n乙個新行符。t乙個定位符。r乙個回車符。b乙個退格符。乙個單引號 符。乙個雙引號 符。乙個反斜線 符。乙個 符。它用於在正文中搜尋 的文字例項,否則這裡 將解釋為乙個萬用字元。乙個 符。它用於在正文中搜尋 的文字例項,否則這裡 將...
mysql 運算子轉義 mysql常用運算子
一 算數運算子 加法 減法 乘法 除法 返回餘數 二 比較運算子 等於 或 不等於 等於 這裡是安全的等於 例如 select null null 結果是1,如果是select null null 結果是null,有時候會報錯程式 between 存在於指定範圍 舉例 select 10 betwe...
mysql 轉義 MySql字元轉義
在字串中,某些序列具有特殊含義。這些序列均用反斜線 開始,即所謂的轉義字元。mysql識別下面的轉義序列 0ascii 0 nul 字元。單引號 雙引號 b退格符。n換行符。r回車符。ttab字元。zascii 26 控制 ctrl z 該字元可以編碼為 z 以允許你解決在windows中ascii...