php容易被錯誤使用的empty函數

在php的官方手冊中寫道,

 

檢查一個變量是否爲空。
如果 var 是非空或非零的值,則 empty() 返回 FALSE。換句話說,""、0、"0"、NULL、FALSE、array()、var $var; 以及沒有任何屬性的對象都將被認爲是空的,如果 var 爲空,則返回 TRUE。 

 

隨後在其手冊中鄭重說明了,

 

empty() 只檢測變量,檢測任何非變量的東西都將導致解析錯誤。換句話說,後邊的語句將不會起作用: empty(addslashes($name))。
 

empty用來檢測變量是否爲空,這在網站編程中經常會使用到,比如,我們在前臺頁面提交了用戶的用戶名,這時,我們需要判斷是否爲空,如果爲空的話,讓他重新提交,這時我們需要用到函數trim,即過濾掉兩邊的空格,然後用empty檢測。


if  (emptyempty(trim($_GET['username'])) { …}


但是,當我們運行這段代碼的時候,卻報錯了。原因就在於“empty() 只檢測變量”,而trim返回的確實值,不是變量。所以empty執行到這兒的時候報錯了。修改方法也很簡單,第一種方法:


if  (trim($_GET['username'] == ’‘) { …}


第二種方法,增加中間變量:


$username = trim($_GET['username']);
if  (emptyempty($username)) { …}


推薦的方法是,在項目中使用驗證框架來解決這個問題。

發佈了54 篇原創文章 · 獲贊 670 · 訪問量 59萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章