2012-02-27 17 views
3

filter_input_array()を使用していくつかの投稿データを検証しようとしています。私の最善の努力にもかかわらず、関数は、$ filter配列の内部でnull値を返すように見えます(条件を渡します)。ここでPHP filter_input_array()が期待通りに失敗していません

は、コードの実装の例を示します(「!{} /〜」電話=「」、Eメール=たとえば)

$filters = array(
    'phone' => FILTER_VALIDATE_INT, 
    'email' => FILTER_VALIDATE_EMAIL 
); 

if(filter_input_array(INPUT_POST, $filters)){ 
    //filters are validated insert to database 
} else{ 
    //filters are invalid return to form 
} 

どんなに種類の不良データIは、アレイが依然としてある入力しますfalseを返し、条件に失敗した関数の代わりに返されます。どんな助けでも大歓迎です。

答えて

1

コードをこの方法で試してみてください

 $filters = array(
    'phone' => FILTER_VALIDATE_INT, 
     'email' => FILTER_VALIDATE_EMAIL 
     ); 
     if(!in_array(null || false, filter_input_array(INPUT_POST, $filters))) 
     //enter into the db 
     else 
     //Validation failled 
+0

大変感謝しています。私は何が起こっていたのだろうと思っていた。私はマニュアルを間違って解釈したと思います。 – Bl00dyRu1n

3

filter_input_arrayフィルタが失敗した場合はfalseを返します。代わりに、適切な項目がフィルタに失敗した場合はfalseに設定された配列を返します(設定されていない場合はnull)。

2

filter_input_array関数は結果を編集入力の配列として返します。 。。あなたが変数に結果を取得する必要がありますので、入力のそれぞれが設定されていない場合 もう一つは、最初に偽りチェックすることです あなたはこの

$filters = array(
    'phone' => FILTER_VALIDATE_INT, 
    'email' => FILTER_VALIDATE_EMAIL 
); 

if(false === ($res = filter_input_array(INPUT_POST, $filters))){ 
    /* Not valid */ 
} elseif(null == $res) { 
    /* Something is not set */ 
} else { 
    /* Everything is alright 
    * You can use $res variable here. 
    */ 
} 

ようなものが必要PHPのマニュアルを見てみましょう:。php.net manual

関連する問題