簡體   English   中英

如何檢查$ _POST是否僅是空格?

[英]How to check if $_POST is only whitespace?

我想檢查$ _POST是否僅是空格,以防有人按下空格鍵並嘗試在數據庫中插入空記錄。 我想在服務器端做。 我已經在用if ( ! empty( $_POST ) )檢查它是否為空,但是,如果我按空格鍵並僅輸入空格,則會繞過它。 我在下面有一段代碼,但我想知道如何驗證所有代碼而不必對每個輸入字段名稱進行硬編碼?

if ( ! empty( $_POST ) ) {
   if (ctype_space($_POST['first_name'])) { 
      //return to form with error
   }else{
      //insert in db
   }
}

看一下修剪功能

trim —從字符串的開頭和結尾去除空格(或其他字符)

if (!isset($_POST['first_name']) || empty(trim($_POST['first_name']))) {
    //return to form with error
}

使用上面的代碼段, first_name

  • 必須在全局$_POST變量中

  • 不能是僅包含空格的字符串

自動trim所有輸入。

foreach ($_POST as $name => $value) {
    $value = trim($value);
    if (empty($value)) {
        // the value is empty do something with that
    }
}

永遠不要假設超全局元素將存在。

首先根據您的要求,使用issetempty檢查元素的存在。

然后檢查是否完全由空格組成。

if (empty($_POST['first_name']) || ctype_space($_POST['first_name'])) {
    echo "Missing/Invalid First Name value";
} else {
    echo "Good enough";
}

通過按此順序執行這些操作,可以避免生成通知。

這是精益和直接的,因為條件是“短路”(第一次失敗后不繼續評估)並且僅使用兩個函數調用。

對預期密鑰白名單中的每個單個密鑰執行此檢查是一個好主意。 然后,您可以根據條件結果交付特定的故障警報。

我的總體建議是集中精力完善驗證的質量/強度,並確保只有期望值才能通過篩選過程,並向用戶提供明確的失敗消息。

我的意思是,考慮一下,檢查非空/非空格填充的值並不能很好地進行驗證。 如果您還有其他期望整數值的字段,請檢查ctype_digit。 如果您要驗證電子郵件值,請使用電子郵件驗證器。

制作DRY代碼很重要,但比固定/安全代碼重要。

ps如果添加一些客戶端驗證,您將在很大程度上改善UX。 如果您使用的是html表單,建議您將字段包裝為requiredpattern等屬性。 您可以使用title屬性或工具提示功能為用戶提供明確的指導。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM