2012-06-08 2 views
0

Codeigniter에서 가입 양식을 사용하여 멤버를 만들고 모델 멤버의 삽입 메서드에 데이터를 보내는 경우 데이터를 어떻게 필터링합니까?CodeIgniter에서 삽입 메소드 이전에 데이터를 필터링하는 방법은 무엇입니까?

"나는 동의합니다 ..."의 값을 저장하고 싶지 않기 때문에 최선의 MVC 방법을 찾고 있습니다. 보안 질문이나이 종류의 값도 아닙니다. 소지품.

내 컨트롤러에서

, 그것은 (방법을 모델로 보내기 전에) 할 수있다 :

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

그러나 그것은 할 수도 있습니다 나의 모델 (삽입 방법을 사용하기 전에) :

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

그렇다면 데이터를 필터링하는 방법은 무엇입니까?

답변

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 
} 
관련 문제