PHP filter_input_array () не работает так, как ожидалось - PullRequest
4 голосов
/ 27 февраля 2012

Я пытаюсь использовать filter_input_array () для проверки некоторых данных поста. Несмотря на все мои усилия, функция, похоже, возвращает нулевые значения внутри массива $ filter (передавая условие), а не проваливает проверку и возвращает false, как я и ожидал.

Вот пример реализации кода:

$filters = array(
  'phone' => FILTER_VALIDATE_INT,
  'email' => FILTER_VALIDATE_EMAIL
);

if(filter_input_array(INPUT_POST, $filters)){
  //filters are validated insert to database
} else{
  //filters are invalid return to form
}

Независимо от того, какие плохие данные (например, phone = 'a', email = '{} /! ~'), Я ввожу массив, который все равно возвращается, вместо функции, возвращающей false и не выполняющей условие. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

filter_input_array не вернет false, если какой-либо фильтр завершится неудачно.Скорее он вернет массив с соответствующими элементами, установленными в false, если они не прошли фильтр (или null, если они не были установлены.

2 голосов
/ 27 февраля 2012

Чтобы сохранить код так, как вы хотите, попробуйте этот метод

      $filters = array(
     'phone' => FILTER_VALIDATE_INT,
        'email' => FILTER_VALIDATE_EMAIL
        );
       if(!in_array(null || false, filter_input_array(INPUT_POST, $filters))) 
       //enter into the db
      else 
      //Validation failled
2 голосов
/ 27 февраля 2012

filter_input_array функция возвращает результат в виде массива отредактированных входов, FALSE, если он не работает, NULL, если каждый из входов не установлен. Таким образом, вы должны получить результат в переменной. Другое дело сначала проверить ложь. Вам нужно что-то вроде этого

$filters = array(
  'phone' => FILTER_VALIDATE_INT,
  'email' => FILTER_VALIDATE_EMAIL
);

if(false === ($res = filter_input_array(INPUT_POST, $filters))){
  /* Not valid */
} elseif(null == $res) {
  /* Something is not set */
} else {
  /* Everything is alright  
   * You can use $res variable here.
   */
}

Взгляните на руководство по php: Руководство по php.net

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...