php容易被異常使用的empty函數

來源:互聯網
上載者:User
php容易被錯誤使用的empty函數

?

在php的官方手冊中寫道,

?

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

?

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

?

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

?

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

?

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

?

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

?

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

?

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

?

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

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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.