Понимание Blacklists и белых списков с PHP

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

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

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

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

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

Solutions Collecting From Web of "Понимание Blacklists и белых списков с PHP"

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

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

preg_replace

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

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

Вы говорите об утверждении, так что вы смотрите на: 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'))) ); 

Оберните вышеприведенное в инструкции if, и все готово.