0

Codeigniterで、サインアップフォームを使用してメンバーを作成し、モデルメンバーの挿入メソッドにデータを送信する場合、データをどのようにフィルタリングしますか?

「同意する...」チェックボックスの値を保存したくないので、それを行うための最良のMVC方法を探しています。セキュリティの質問の値も、この種のものも保存しません。

私のコントローラーでは、(モデルメソッドに送信する前に)次のことを行うことができます。

$posts = $this->input->post();
unset($posts['abcdef']);
...

しかし、私のモデルでそれを行うことも可能です(挿入メソッドを使用する前に):

function insert($data){
unset($data['abcdef']);
...
}

では、データをフィルタリングするにはどうすればよいでしょうか。

4

1 に答える 1

1

あなたが作品を投稿した両方の方法-しかし、それらは「ブラックリスト」です。

代わりに、モデルで「ホワイトリスト」を使用する必要があります。これは、モデルが必要な情報のみを検索し、残りを破棄することを意味します。これにより、ユーザーが予期しない追加の$_POSTデータをフォームに挿入するのを防ぐことができます。

モデルでは、私は次のようなことをします

function insert($inputs)
{
    $white_list = array ('field1', 'field2', ... ,'field9');
    foreach ($inputs as $post_id => $input)
    {
        if ( ! in_array ($post_id, $white_list))
        {
            unset($inputs[$post_id]);
        }
     }
    // Now insert data here and sleep easy at night
 }
于 2012-06-08T16:47:36.420 に答える