제목 | [수정] POST 값 전체를 간단히 검증을 하고 view에 곧장 넘겨서 사용하고 싶을때! | ||
---|---|---|---|
글쓴이 | kaido | 작성시각 | 2016/05/18 11:02:16 |
|
|||
제목이 길군요. 뭔가 거창해 보입니다. 하지만 아주 간단한 코드입니다. [이미 사용하는 분들도 많을 거라 믿습니다.]
요약하면...
POST submit 을 때렸는데 받아야 하는 post 값이 너무 많아서
$this->input->post.... $this->input->post.... $this->input->post....
이거 반복 하기 싫다는 겁니다. 그렇다고 $_POST 으로만 받으면 검증이 빠져서 불안 하구요.
깜작 놀랄만큼 간단한 코드로 반복 작업을 없앨 수 있습니다. [이미 만들어서 쓰시는 분들도 많을 겁니다. ㅎ]
$data = array(); if($_POST){ foreach($_POST as $key => $val){ if($this->input->post("{$key}" ,true) || $this->input->post("{$key}" ,true) === "") $data["{$key}"] = $val; } } echo $data['....'];
끗. 요약 설명. post로 넘어온 값이 1개라도 있다면 모든 값을 루프 돌면서 input name 으로 넘어온 값으로 $data['name'] 으로 넣음. 단. post 검증을 통과하고 값이 공란까지는 인정.
나중에 폼밸리데이션 라이브러리를 넣어서 약간 더 체계적으로 구축 해봐야겠군요.
기승전 가변변수는 사랑입니다.
ps. 더욱 간단한 로직이 있었네요! 추가 수정 합니다.
$data = array(); foreach($this->input->post(NULL, TRUE) as $key => $val) $data["{$key}"] = $val;
끗. 코드 압축은 정의 입니다. |
|||
다음글 | PHP MongoDB 드라이버 이용시 Object ID... (1) | ||
이전글 | sql select 쪼~~~금 더 빠르게 만드는 팁 (4) | ||
한대승(불의회상)
/
2016/05/18 13:48:41 /
추천
0
|
kaido
/
2016/05/18 14:16:00 /
추천
0
가변변수로 사용한것에는 이유가 있습니다. $key로 찍으면 post( name , true); 이런형태의 문자형이기 때문에 "" 틱을 감아 post("name",true); 이런식의 문자형으로 전달 하기 위해 가변변수가 차용되었습니다 ^^ "" 더블쿼터나 '' 싱글쿼터로 틱을 감아 주지 않으면 아파치 설정에 따라서는 워닝 로그를 쌓아버립니다.
아 물론 함수나 메소드를 호출 한다면 틱을 감은 가변이 아닌 $key 로 호출 하는게 맞습니다.
꽤 오래전에 봤던 PHP 이슈라서 지금은 어떨지는 모르겠습니다만 조심해서 나쁠건 없지요. |
fnmeat
/
2016/05/20 16:44:49 /
추천
0
php 의 filter extension 을 이용할 수도 있습니다. $data = filter_input_array(INPUT_POST); codeigniter 의 xss_clean 기능이나 추가적인 콜백이 필요하면 $data = array_map(function($value){ return $value; }, $this->input->post()); 이런 형식도 가능하겠네요. |
윤동훈
/
2016/09/13 11:05:59 /
추천
0
$this->input->post(NULL, true); 위와 같이 쓰면 자동적으로 모든 post 값이 필터가 적용되는데 $Data = $this->input->post(NULL, true); 혹시 위와 같이 처리하는것으로는 가능하지 않을까요? |
^^ 좋은 정보 감사 합니다.
사족으로 함수나 메소드 호출 하실 때는 가변변수 보다 변수를 직접 넘겨 주면 어떨까 싶습니다.