PHPの関数リファレンスを見ていると、見たことも聞いたこともない関数がよく出てきます。
今回の生贄はこちら、Filter。
filter_var()こそ入力値検証として使っている人がみつかりますが、他の関数については一体何のために存在するのかわかりませんし使っている人も見あたりません。
http://d.hatena.ne.jp/moriyoshi/20090319/1237486066
http://d.hatena.ne.jp/koyhoge/20110822/llplanets
誰かfilter_id()の有効な使い方を教えてください。
つうかマニュアルのコピペサイト邪魔すぎる。
ていうかfilter_input()の第4引数の詳しい使い方はfilter_var()のほうにしか載っていません。
ややこしいのが、フィルタに与える値によって処理内容が全く変わってくるところです。
上記filter_var()の例ではFILTER_SANITIZE_NUMBER_INTを与ますが、この引数は単純に数値以外の文字が削除されます。
「?hoge=0x99」としたらfalseでも0でもなく、「099」が返ります。
これをFILTER_VALIDATE_INTにすると、"0x99"が数値形式か否かをチェックしてfalseが返ってくるようになります。
FILTER_VALIDATE_INTのオプションにさらにFILTER_FLAG_ALLOW_HEXを与えると、今度は16進数形式の数値も許されるようになり、「153」が返ってきます。
上記filter_input()の例ではFILTER_VALIDATE_INT、FILTER_FLAG_ALLOW_HEXに加えてさらに、整数値の範囲1から100を追加しています。
"0x99"は153になり100を超えるので、falseが返ります。
使い慣れれば便利なのかもしれませんが、なんかどうにも使い方が疲れる関数です。
今回の生贄はこちら、Filter。
filter_var()こそ入力値検証として使っている人がみつかりますが、他の関数については一体何のために存在するのかわかりませんし使っている人も見あたりません。
http://d.hatena.ne.jp/moriyoshi/20090319/1237486066
http://d.hatena.ne.jp/koyhoge/20110822/llplanets
誰かfilter_id()の有効な使い方を教えてください。
つうかマニュアルのコピペサイト邪魔すぎる。
<?php //$_GET['hoge']が存在するかチェック $filterHasVar = filter_has_var(INPUT_GET, 'hoge'); //$_GET['hoge']から数値と+-以外を削除 $filterVar = filter_var($_GET['hoge'], FILTER_SANITIZE_NUMBER_INT); //$_GET['hoge']が1から100までの整数値かチェック $filterInput = filter_input( INPUT_GET, 'hoge', FILTER_VALIDATE_INT, array( 'options'=> array('min_range'=>1, 'max_range'=>100), 'flags'=> FILTER_FLAG_ALLOW_OCTAL | FILTER_FLAG_ALLOW_HEX ) );filter_input()はfilter_has_var()とfilter_var()を合わせたような関数で、第一引数と第二引数はfilter_has_var()のもの、第三引数と第四引数はfilter_var()のものと思えばいいです。
ていうかfilter_input()の第4引数の詳しい使い方はfilter_var()のほうにしか載っていません。
ややこしいのが、フィルタに与える値によって処理内容が全く変わってくるところです。
上記filter_var()の例ではFILTER_SANITIZE_NUMBER_INTを与ますが、この引数は単純に数値以外の文字が削除されます。
「?hoge=0x99」としたらfalseでも0でもなく、「099」が返ります。
これをFILTER_VALIDATE_INTにすると、"0x99"が数値形式か否かをチェックしてfalseが返ってくるようになります。
FILTER_VALIDATE_INTのオプションにさらにFILTER_FLAG_ALLOW_HEXを与えると、今度は16進数形式の数値も許されるようになり、「153」が返ってきます。
上記filter_input()の例ではFILTER_VALIDATE_INT、FILTER_FLAG_ALLOW_HEXに加えてさらに、整数値の範囲1から100を追加しています。
"0x99"は153になり100を超えるので、falseが返ります。
使い慣れれば便利なのかもしれませんが、なんかどうにも使い方が疲れる関数です。
PR
トラックバック
トラックバックURL: