0

我知道使用白名单它只使用该列表中的所有内容,而使用黑名单它使用除列表中的所有内容之外的所有内容。

但在那之后会发生什么?假设您使用白名单 - 如果输入的值包含不在白名单中的内容,您能否阻止提交输入?

我知道这样的事情会减少所有不是带有空格的字符或数字的东西:

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

但是,如果我不希望将值存储在带有空格的数据库中怎么办。有没有办法做到这一点,以便出现错误消息?例如使用 if 语句...

4

1 回答 1

3

我知道使用白名单它只使用该列表中的所有内容,而使用黑名单它使用除列表中的所有内容之外的所有内容。

  • 白名单:批准的项目
  • 黑名单:未获批准的项目

preg_replace

您应该使用preg_matchfilter_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 语句中,就完成了。

于 2012-04-10T23:11:21.993 回答