CI 묻고 답하기

제목 GET 한글에서 CI가 값을 못 받는데 설정 같은 게 있나요?
글쓴이 Chi 작성시각 2014/04/29 12:48:18
댓글 : 23 추천 : 0 스크랩 : 0 조회수 : 18258   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 12:51:28 / 추천 0
TRUE를 지워 보세요.
Chi / 2014/04/29 12:52:36 / 추천 0
불의회상 // 답변 감사드립니다. 물론 TRUE 를 지워보고도 테스트를 했습니다만, 동일한 증상이어서요. 적는 걸 깜박했습니다 ㅠ
한대승(불의회상) / 2014/04/29 12:58:19 / 추천 0
Chi// 보안 관련 옵션 때문일 수도 있습니다.

http://cikorea.net/lecture/view/197

위 주소를 참고하여 config를 확인하세요.
Chi / 2014/04/29 13:04:29 / 추천 0
불의화상// 또 다시 답변 감사드립니다 ^^;
알려주신 페이지를 확인하고 비교해본 결과 차이가 없습니다.
9번 항목도 변경하여 테스트 했었지만, 특별히 나아지는 것이 없었습니다.
원인을 모르니 미치겠네요 ^^;;
한대승(불의회상) / 2014/04/29 13:59:39 / 추천 0
값을 영문으로 집어 넣으면 어떻게 나오나요?
ando / 2014/04/29 14:06:29 / 추천 0
%EB%B0 <== 정상적인 문자가 아니라서 받아오지 못하는거같은데요?

해당 문자열을 urldecode 함수로 디코딩하면 깨지는 문자가 나타나네요.
Chi / 2014/04/29 14:11:15 / 추천 0
불의회상// 영어, 특문 모두 정상처리 됩니다.
ando // 호출시 return 되는 값이고요.. 글자를 잘못 올렸네요..%B9%E8 였습니다 ;; 핫..
echo urldecode('글자'); 로 확인해보면 원하는 값인 배가 출력되네요. ㅠ

댓글에도 입력이 안되는 지 뒷말이 저장안되었네요.
_detect_uri() 부분 수정하면 될 것 같긴한데 위험하고..
다른 서버의 ci 에서는 정상동작되니.. 미치겠습니다 ㅠ
Chi / 2014/04/29 14:53:19 / 추천 0
변종원(웅파) / 2014/04/29 15:02:41 / 추천 0
config.php에서 아래 내용의 값을 주석에 있는 값들로 하나씩 변경하면서 테스트해보세요.

$config['uri_protocol'] = 'AUTO';
Chi / 2014/04/29 15:19:30 / 추천 0
웅파// 답변 감사드립니다. ^^ 마찬가지로 되지를 않네요. 어디가 문젠지 도통 감이 오질 않아서 이거 참 큰일이네요 ㅠ
한대승(불의회상) / 2014/04/29 15:24:10 / 추천 0
인코딩 문제로 생각 되는군요.

올려주신 값을 urldecode() 해보면...

"№и"

로 나오네요.


utf8 기준입니다.
한대승(불의회상) / 2014/04/29 15:26:33 / 추천 0
아래 처럼 한글로 올려보세요.

?name=그냥 
Chi / 2014/04/29 15:33:50 / 추천 0
불의회상 //  
첫 번째 답변 주신 것에서 확인해보면 저의 경우에는 'echo urldecode('%B9%E8') 하면 '배'가 출력이 제 화면에서는 됩니다.?
두 번째 말씀해주신 것처럼하면 깨져나오나 GET 으로 들어오는 것은 확인은 됩니다.

현재 연동된 페이지에서 응답을 받는 것인데, 연동된 페이지에서 여쭤본 것처럼 응답을 줘서 문제입니다.
리턴되는 형식이 예를 든다면, NAME=%C7%F6%B4%EB 이런식으로 오는데, GET 으로 받으면 값이 없어져서요.
희안하게 다른 분이 구축해두신 CI 사이트에서는 처리가 됩니다. GET 로 들어와 LOG 를 남기면 
 NAME=%C7%F6%B4%EB
이라고 Decode 하기전 값이 적힙니다.. 그 사이트와 설정을 비교해도 차이가 없고...

괜히 많은 분들이 답변 주시고 생각해주셔서 감사드리고 죄송하네요.
현재 CI 버전(2.1.4) 가 문제인 것인지.. 다른 설정에서 잘못된 건지 확인을 싹다 해봐야겠네요 ㅠㅠ
한대승(불의회상) / 2014/04/29 15:43:41 / 추천 0
문자 인코딩은 utf8 인가요?

지금 테스트 해보니 euckr 이군요.

config.php 손보시면 해결 가능 합니다.
Chi / 2014/04/29 15:54:28 / 추천 0
불의회상//
네, 기본적으로 제 사이트는 UTF-8 을 사용중이고, 넘어오는 값들은 euc-kr 로 알고 있습니다.
해당쪽으로 넘길 때 euc-kr 로 바꿔서 넘기고요. (중요한 부분을 설명 안해서 죄송합니다.)
config.php 확인해보겠습니다. euckr 이어도 값이 그 형태는 찍혀야 하는거 아닌가요 ^^;;?