2012-04-09 2 views
0

Я понимаю, что с помощью белого списка он использует только все, что есть в этом списке, и с черным списком он использует все, кроме того, что входит в список.Понимание черных списков и белых списков с PHP

Но что происходит после этого? Скажите, что вы используете белый список - можете ли вы предотвратить подачу ввода, если значение ввода содержит то, чего не было в белом списке?

Я знаю, что-то вроде этого уменьшило бы все, что не символ или цифра с пробелами:

preg_replace("/[^a-zA-Z0-9_]/", "", $stringToFilter); 

Но что, если я не хочу, значение, хранящееся в базе данных с пробелами. Есть ли способ сделать это, чтобы вместо этого появилось сообщение об ошибке? используя, если заявления, например ...

+2

У меня нет вашего вопроса. – Alp

+0

Можете ли вы объяснить немного больше своего вопроса? –

+2

Удивительный переход от белого к белым ... –

ответ

3

Я понимаю, что с помощью белого списка он использует только все в этот список и черный список он использует все, кроме того, что в списке.

  • белый список: элементы, которые одобрены
  • черный список: предметы, которые НЕ утверждены

preg_replace

Вы должны использовать preg_match или filter_var с флаг FILTER_VALIDATE_REGEXP вместо этого ... подробнее об этом ниже.

Но что, если я не хотел, чтобы значение хранилось в базе данных с пробелом. Есть ли способ сделать это, чтобы вместо этого появилось сообщение об ошибке? используя, если заявления, например ...

Вы говорите о проверке, так что вы хотите смотреть на: php.net/filter.filters.validate:

// false  
var_dump(!filter_var('string with spaces', FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/[\s]+/i')))); 

// true 
var_dump(!filter_var('string_with_no_spaces', FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/[\s]+/i')))); 

Оберните выше, если заявление, и вы сделали.

Смежные вопросы