PHP проверяет, если пустые поля - PullRequest
4 голосов
/ 30 января 2012

У меня есть форма регистрации с примерно 10 полями, и все они должны быть заполнены перед обработкой, поэтому стараюсь избегать всех этих проверок, если я придумаю это, это хороший метод?

foreach($list as $items) {
   if(empty($items)) {
      $error[] = "All fields are required.";
      break;
   }
}

или я должен сделать if (empty ($ field_1) || empty ($ field_2) и т. Д., Затем вывести ошибку?

Ответы [ 4 ]

3 голосов
/ 30 января 2012

Предполагая, что ваши данные поступают из $_GET или $_POST, все поля данных будут строками.Это означает, что вы должны иметь возможность выполнить проверку в одиночном вызове функции :

if (in_array('', $list, TRUE)) {
  $error[] = "All fields are required.";
}

Это ищет строки, которые точно равны пустой строке,Если вы хотите сделать сравнения бесполезными (более или менее идентичными проверке, которую выполняет empty()), просто удалите окончательную TRUE.

РЕДАКТИРОВАТЬ Подумав, вы неСтрогое сравнение.Я сделал это, чтобы разрешить допустимое значение поля '0' (которое empty() не разрешит), но это также будет разрешено при произвольных сравнениях, поскольку '0' != ''.

ДРУГОЕ РЕДАКТИРОВАНИЕ Если вы хотите проверить, что длина укуса больше двух, вам придется выполнить цикл:

foreach ($list as $item) {
  if (strlen($item) < 2) {
    $error[] = "All fields are required.";
    break;
  }
}

Это также "очистит 0", предполагая, что под этим вы подразумеваете "не допускается, чтобы значение было 0 ".Если вы также хотите запретить '00' (или любую другую строку, которая приводит к 0), вы можете изменить выражение if на следующее:

if (strlen($item) < 2 || (!(int) $item)) {
3 голосов
/ 30 января 2012

Хорошей идеей будет поместить его в цикл, как вы это делали, но учтите, что это не удастся, даже если пользователь введет 0, и будет проходить для строки, содержащей только пробелы, поэтому вы можете захотеть сделать более качественные проверки, чем empty()

3 голосов
/ 30 января 2012

все в порядке. Если вы просто хотите показать сообщение «Все поля обязательны для заполнения». без указания какого поля пустым.

В противном случае будет удобнее, если вы проверите и покажете, какое поле оставлено пустым.

2 голосов
/ 30 января 2012

Я бы подошел к этому с проверкой in_array.

<?php
$fields=array('name','age','yadayada','something_else');

foreach ($_POST as $key=>$value){
    if(in_array($key,$fields) && $value!=''){
        $$key=$value;
    }else{
        $error[$key]='This field is required.';
    }
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...