CI 묻고 답하기

제목 GET 한글에서 CI가 값을 못 받는데 설정 같은 게 있나요?
글쓴이 Chi 작성시각 2014/04/29 12:48:18
댓글 : 23 추천 : 0 스크랩 : 0 조회수 : 16653   RSS
안녕하세요, 비도 그치고 좋은 날입니다.
궁금하고 답답한 게 있어, 검색을 해도 나오질 않아 고수님들의 도움을 받고자
이렇게 글 남깁니다.

현재 테스트 중인데요.
안되는 부분이 있어 이렇게 글을 남겨요.

간단한 테스트 페이지를 만들고, 응답값을 get 을 통해 받습니다.

funcion index()
{
        $test= $this->input->get('NAME', TRUE);
        log_message('debug',$test);
}

실제 아파치 access_log 에는 정상적으로 
?NAME=%B9%E8  같이 나오는데요.
실제 CI 상에서는 아무런 값이 들어오지 않습니다.
어떤 문제 때문인가요? 혹시 아파치 설정 때문에 그런건지.. CI 때문에 그런건지 감이 안 잡히네요.
도와주시면 감사하겠습니다.
 다음글 form 액션 url 부분 도와주세요. ㅠㅠ (8)
 이전글 갑자기 이런 에러가 떴습니다... (2)

댓글

한대승(불의회상) / 2014/04/29 15:58:33 / 추천 0
"가-힣"  이 부분이 UTF8 이나 EUCKR 이냐에 따라 달라집니다.
 
$config['permitted_uri_chars'] = '가-힣a-z 0-9~%.:_\-';
이부분을 EUCKR로 바꿔 보세요.
Chi / 2014/04/29 16:04:58 / 추천 0

​불의회상// 답변감사드립니다.
//$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['permitted_uri_chars'] = '가-힣a-z 0-9~%.:_\-';
다음과 같이 진행해도 변함이 없네요. 핫.. ㅠㅠ

테스트 페이지를 만들었습니다. 
호출 test?NAME=%C7%F6%B4%EB 
소스

	public function  index()
	{
		$test= $this->input->get("NAME");
		log_message('debug',$test);

	}

Log
DEBUG - 2014-04-29 15:31:11 --> Model Class Initialized
DEBUG - 2014-04-29 15:31:11 --> 
DEBUG - 2014-04-29 15:31:11 --> Final output sent to browser
DEBUG - 2014-04-29 15:31:11 --> Total execution time: 0.0407

여전히 안들어오네요.. 
죄송하네요. ^^ ㅠㅠ
한대승(불의회상) / 2014/04/29 16:16:15 / 추천 0
utf8로 값을 바꿔서 올리세요. 
변종원(웅파) / 2014/04/29 16:22:32 / 추천 0
파일 캐릭터셋과 전송되는 한글의 캐릭터셋이 뭔지 그것부터 올려주시는게 좋을 것 같네요.
부족한 정보로 스무고개가 시작됐습니다. 
Chi / 2014/04/29 22:38:04 / 추천 0
웅파//
답변 감사드립니다.
테스트 페이지 조차 동작하지 않아 간소화 한다는 게 많은 혼란을 가져온 것 같습니다.
답변 주신 모든 분들께 죄송하다는 말과 감사하드린다는 말을 우선하겠습니다.

실제 개발 하는 부분은 다음과 같습니다. 
  - 파일 캐릭터셋 : utf-8
  - 전송하는 캐릭터셋 : euc-kr 
  - 리턴받는 캐릭터셋 : euc-kr
utf-8에서 전송할 때 charter set 을 euc-kr 로 바꿔서 submit을 하고, 해당 처리 페이지 후 euc-kr 로 인코딩 된 get 방식으로 값을 전달 받는 상황이었습니다.  다른 값들은 정상적으로 GET 으로 받아지는데, 유독 한글로 된 리턴 받는 값들이 아무값이 없이 들어오는 것이었습니다. 이상하여 Access_log를 확인한 결과 리턴해주는 곳에서는 정상적으로 값이 리턴해주는 것을 확인하였습니다.
그 후 테스트를 위해 윗 글 처럼 정상적으로 GET 방식이 정상적으로 들어오나, 정상적이지 않은 인코딩인가를 확인하기 위해서 테스트를 진행하였습니다. (ex. urldecode 에 직접 값을 넣어봐서 테스트해보기, GET 방식으로 받는 부분 만들기..) 
테스트를 진행해도 인코딩 되어 보내진 값들을 하드코딩해논 urldecode 부분에서는 정상적으로 찍히나, get 으로 넘겨 준 부분에서는 여전히 널 값으로 찍혔습니다. 다른 CI 서버 사이트 개발자 분의 도움을 받아 해당 값을 넘겼을 경우 정상적으로 값이 들어가는 것을 보고 더욱 문제가 되었습니다 ㅠㅠ;;

여러분들의 도움을 받아 셋팅도 바꿔보고 core 부분도 확인해도 처리가 되지 않아 질문을 계속 드린다는게 너무 죄송할 뿐이네요.
계속 확인해보겠습니다. 관심 감사드립니다.
ando / 2014/04/30 00:36:42 / 추천 0
ci의 기본 캐릭터 셋이 config.php에 설정되어 있습니다.

만약에 config.php의 기본 캐릭터셋이 utf-8이면, 요청시 전송하는 캐릭터 셋을 urf-8로 보내시기 바랍니다.

서버와 요청 클라이언트 간의 캐릭터셋이 다를경우 get의 경우 값을 못받습니다. post의 경우에는 깨져서 들어오구요.

요청시 한글 부분을 encode해서 보내시거나 또는 해당 요청 페이지만 urf-8 로 처리해서 보내시는게 맞는듯 하네요.

크롬이나 파이어폭스에서는 주소창으로 입력시에는 자동으로 한글이 인코딩되어서 요청되어집니다.

익스의 경우에는 한글이 인코딩 되지 않고 그대로 요청이 들어가기 때문에 서버가 utf-8 일경우 값을 받지 못하구요.

크롬, 익스 개발자 도구 > 네트워크 에서 요청할때 한글이 어떻게 들어가는지 확인해보세요.
한대승(불의회상) / 2014/04/30 09:24:16 / 추천 0
application/config/config.php 에서 아래처럼 바꿔 보세요.
//$config['charset'] = 'UTF-8';
$config['charset'] = 'EUC-KR';
변종원(웅파) / 2014/04/30 10:53:21 / 추천 0
var_dump($_GET) 해보세요. 데이터 나오면 ci 문제이고 안나오면 웹서버 설정을 봐야할 것 같네요.