首頁  >  文章  >  後端開發  >  php stripslashes()函數和addslashes()函數的區別實例詳解

php stripslashes()函數和addslashes()函數的區別實例詳解

怪我咯
怪我咯原創
2017-05-22 11:22:341661瀏覽

前面介紹了php中addslashes()函數和stripslashes()函數的作用以及一些用法,這篇文章介紹一下PHP stripslashes()函數和addslashes()函數的區別。

從函數名稱來說它們的差異:strip(剝離)slashes(斜線)add(新增)slashes(斜線),所以它們一個是剝離斜線一個是添加添加斜線作用是相反的。

使用場景:其實這兩個函數主要使用在一些需要轉換特殊字元的資料處理中,例如資料庫操作,在寫入資料庫的時候,我們需要把單引號這樣的特殊字元轉義之後保存,而在讀取的時候,

我們又需要把資料庫中的這些被轉義的特殊字元反轉義回來。

我們在寫入資料到mysql時,例如:

mysql_query("update table set `title`='kuhanzhu's blog'");

那就會出錯。同asp時一樣,資料庫都會對單引號過敏。而addslashes在這個時候就最長面子了,跟asp的replace(”'”,””,”kuhanzhu's blog”)功能一樣。

PHP為了安全性,所以引入了個magic_quotes_gpc = On的功能,可以不需要做任何處理就能直接把單引號插入資料庫中,那麼對於Off時,則需要考慮單引號的問題了,而不是一味地信任運行環境。 On時,使用了addslashes()處理後的資料在資料庫中將以\'形式保存,如果此時直接輸出的話,就會發現比自己期待的內容多了個\,因此stripslashes()出場了,它能把\去掉(區別於str_replace(”\”, “”,$Str))。 ,沒有上面說的有\的問題,addslashes()起到插入資料不出錯的作用,如果此時直接輸出的話,資料正常。 stripslashes()剛好是相反的,直接記憶:addslashes()加個\,stripslashes()去個\

那麼什麼時候用呢?

#當magic_quotes_gpc = On時,系統會自動處理單引號等問題,用不用addslashes()和stripslashes()都沒關係,但是如果添加資料時用了addslashes(),那麼顯示資料時必須要stripslashes( )

當magic_quotes_gpc = Off時,系統不會處理單引號等問題,所以插入資料時必須使用addslashes(),顯示資料時則不需要使用stripslashes()。

既然有了分析,做程式時該怎麼辦呢? addslashes(),當On時,必須使用stripslashes(),Off時則不能用stripslashes()。

如何判斷On還是Off呢? )函數請看這篇文章

實例

#程式碼如下:

代码 
//提交数据,或者变量准备:
$Content=addslashes(”这里面是数据,不管有没单引号或者还是变量”);
//插入数据到数据库,代码省略
//开始显示数据
$Content=”从数据库读取的数据”;
if(get_magic_quotes_gpc()){
  $Content=stripslashes($Content); 
}
echo $Content;

【相關文章推薦】:

php addslashes()函數和stripslashes()函數實例詳解

以上是php stripslashes()函數和addslashes()函數的區別實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn