php 深入理解addslashes函數

原文鏈接:https://blog.csdn.net/mengjing_/article/details/89353942

php addslashes函數對於很多人來說並不陌生,但很大部分人只是瞭解皮毛,只知道addslashes函數是在特定字符前面加上反斜槓,本文章將帶大家深入理解php addslashes函數的使用方法。

php addslashes函數的作用是在預定義的字符前面加上反斜槓,這些預定義字符包括:

    單引號(')
    雙引號(")
    反斜槓(\)
    NULL

addslashes函數經常使用在向數據庫插入數據時,比如有一個字符串

$str="my name's wxp";

現在要將這個字符串插入到數據庫表中,由於該字符串有單引號',這樣很可能與mysql拼接字符串的單引號'衝突,導致SQL語句不正確,也就無法正常執行插入操作,此時我們需要使用addslashes函數處理這個字符串。如:

    $str="my name's wxp";
    echo addslashes($str);//輸出my name\'s wxp

然後在拼接mysql字符串:

    $sql="insert into student(student_name)values('".addslashes($str)."')";
    mysql_query($sql);

此時字符串被插入到數據庫,那麼大家是否知道插入的字符串是帶反斜槓還是不帶反斜槓呢?恐怕很多人都會認爲肯定是帶反斜槓的字符串。其實這個答案是錯誤的,插入的字符串是沒有帶反斜槓。至於爲什麼插入的字符串在數據庫中是沒有加反斜槓,請大家繼續看下面講解。

如果字符串$str="my name's wxp"是使用POST和GET提交的數據,這個時候插入數據庫中的數據是帶反斜槓的,由此可知addslashes只是在POST和GET數據插入數據庫時纔會把反斜槓同時插入到數據庫,其他情況下不會將反斜槓插入到數據庫。

 

註釋:默認地,PHP 對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。所以您不應對已轉義過的字符串使用 addslashes(),因爲這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測

————————

根據上一篇文章可知,其實 get_magic_quotes_gpc函數已經廢棄了!

————————
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章