CI 묻고 답하기

제목 Mysql에 html형태의 데이터 입력시 문제.
글쓴이 예나아범 작성시각 2015/06/18 22:17:15
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 14243   RSS
안녕하세요.

CKEditor의 데이터를 Mysql에 입력하는데요. 수정할때,
간혹가다가 태그의 가장 앞<p>만 입력되면서 기존글이 사라지고 있습니다.

특히 이미지 첨부된 경우 더 그렇구요.

컨트롤러에서 POST값을 찍어 봤을때나, profiler로 실행 쿼리를 확인했을때는 문제가 없습니다.
해당 쿼리를 workbench로 직접 실행했을때는 정상적으로 잘 입력도 되구요...

프로그램 상에는 문제는 없는거 같은데...
뭐 때문에 이런문제가 발생하는지를 모르겠네요.

구축내용은 아래와 같습니다.

codeigniter 2.2.2
Mysql 5.6.24

[controller]
$filed = 'introduce_'.$lang_array[$i];
$table = 'teachers_introduce_'.$lang_array[$i];
						
$data = array(
	'introduce'		=>	$this->input->post($filed, TRUE)
);

$this->teacher_m->add_info($user->id, $table, $data);


[model]
function add_info($id, $table, $data)
{
	$query = $this->db->get_where($table, array('id' => $id));
	$check = $query->num_rows();
	
	if($check > 0) {
		$this->db->where('id', $id);
		$this->db->update($table, $data);
	} else {
		$this->db->insert($table, array('id' => $id));
				
		$this->db->where('id', $id);
		$this->db->update($table, $data);
	}
}

[db setting]
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

현재 데이터베이스서버와 호스팅이 분리되어 있습니다.
데이터베이스 쪽의 timeout문제 같기도 한데... 뭘 수정해야할지를 모르겠네요...

작은 실마리라도 찾을 수 있는 도움 부탁드립니다.

감사합니다.
 다음글 중복 로그인일 경우 세션 처리 질문있습니다~ (5)
 이전글 사진을 여러장 올리려면 어떻게 해야할까요? (1)

댓글

한대승(불의회상) / 2015/06/19 09:05:26 / 추천 0
$this->input->post($filed, TRUE) 처럼 두번째 인자를 TRUE로 하게 되면 xss 필터링을 하게 되는데
필터링 과정에서 데이터가 유실 될수도 있습니다.

$this->input->post($filed);
or
$this->input->post($filed, FALSE);

두번째 인자를 없애거나 FALSE로 하신후 테스트 진행해 보세요.