0

ホワイトリストを使用すると、そのリスト内のすべてが使用され、ブラックリストを使用すると、リストにあるもの以外のすべてが使用されることを理解しています。

しかし、その後はどうなりますか?ホワイトリストを使用しているとしましょう-入力の値にホワイトリストにないものが含まれている場合、入力の送信を防ぐことができますか?

このようなものを使用すると、空白を含む文字や数字以外のすべてが削減されることを私は知っています。

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

しかし、空白を使用してデータベースに値を格納したくない場合はどうなりますか。代わりにエラーメッセージが表示されるようにこれを行う方法はありますか?たとえば、ifステートメントを使用します。

4

1 に答える 1

3

ホワイトリストを使用すると、そのリスト内のすべてが使用され、ブラックリストを使用すると、リストにあるもの以外のすべてが使用されることを理解しています。

  • ホワイトリスト:承認されたアイテム
  • ブラックリスト:承認されていないアイテム

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ステートメントでラップすると、完了です。

于 2012-04-10T23:11:21.993 に答える