만들면서 배우는 CodeIgniter Q&A

제목 게시글 검색 관련 질문입니다.
글쓴이 만들면서 작성시각 2013/08/09 18:19:18
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 14559   RSS
안녕하세요.

책을 구입하고 출판사 자료실에서 소스를 받아 나름 공부하고 있는 중 입니다.

오류(?)가 발생하여 원인을 알고 싶어서 글을 올립니다.

게시글을 한글로 검색할 때 이상현상이 발생하네요. 영문검색은 잘 됩니다.

첨부파일 보시면 한글검색*.png 파일이 있는데요, 3가지 경우가 번갈아 가며 발생하고(주로 ~3.png), 정상적인 경우는 없네요.

저의 테스트 환경은 IIS6 + PHP + MySQL , Firefox, Chrome 입니다.
그리고, 소스는 직접 코딩하지 않고 다운로드 한 것을 수정 없이 사용하는 중입니다.

보시고 조언 바랍니다.

수고하세요.
태그 EUC-KR,한글
첨부파일 게시판검색.zip (203.6 KB)
 다음글 오탈자입니다~~ (2)
 이전글 게시판 글 중복 등록 문제. (3)

댓글

변종원(웅파) / 2013/08/10 10:04:17 / 추천 0
 소스는 euc-kr이 아닙니다. utf-8이구요.

요즘 브라우저에서 주소에 한글이 들어오면 표시는 한글로 하지만 url_encode를 한 상태로
프로그램으로 전달이 됩니다.

스크린샷은 전부 파이어폭스인데 크롬에서도 그런 현상이 나오는지 확인바랍니다.

한글3은 한글이 제대로 바뀌지 않아 config.php에 허용된 캐릭터셋이 아니라서 그렇게 나오는 거고
한글1은 이상하게 변환은 됐지만 허용된 캐릭터셋 안에 있어서 db까지 전달이 되는 겁니다.
한글1, 3번은 프로그램이 정상적으로 작동을 하는 것인데 브라우저단에서 한글변환이 제대로
안되서 생긴 현상 같습니다.

한글2번은 주소가 다릅니다. /bbs/bbs/ -> /bbs/board 이어야 하는데 소스상의 문제인지 확인이 
필요할 것 같습니다.

윈도7, xampp환경, 리눅스(centos6.3)에서 테스트된 소스입니다.

iis6는 테스트한 환경이 아니라서 한글에 대한 처리가 필요할 것 같네요.

변종원(웅파) / 2013/08/10 10:05:51 / 추천 0
한글2번은 소스상에 주소가 /bbs/board/ 로 되어 있는데 수정하신 부분은 없는지요?
만들면서 / 2013/08/12 13:58:33 / 추천 0
답변 감사합니다.

다운로드한 파일은 변경 작업 없이 사용하고 있습니다. 
고로,  소스는 모두 utf-8 입니다. (브라우저 상에서 소스 보기로 봐도 utf-8 로 되어 있습니다.)

한글~1, 3 은 브라우저 상관 없이 동일한 현상을 보이고 있습니다. (chrome, firefox, opera, ie)

한글~2 (/bbs/bbs/...)는 Firefox 에서만 나타나는 현상인데, [검색] 버튼을 클릭하지 않고 내용 입력 후 바로 엔터키를 누르면 발생합니다. (구글 같은 경우 엔터키로 해도 잘 동작하는 것을 보면 다른 방법이 있을 것 같습니다^^)

board.php 파일에서 var_dump()를 사용해서 내용을 보면, 한글이 euc-kr 로 되어 있습니다.  
list_v.php 파일의 아래 부분에서 
  var act = '/bbs/board/lists/ci_board/q/'+$("#q").val()+'/page/1';
  $("#bd_search").attr('action', act).submit();
 
 
두 줄사이에 alert(act); 를 해보면 한글은 잘 보입니다.

POST DATA부분은 utf-8로, URI STRING 부분은 euc-kr로 되는 것을 보면 IIS 환경과는 무관하지 않나 추측해 봅니다. 


그리고,

An Error Was Encountere

The URI you submitted has disallowed characters.

이 부분... 검색하는 내용에 따라 나왔나 안 나왔다 하네요... -.-
$config['permitted_uri_chars'] = '가-힣a-z 0-9~%.:_\-';
이 부분을 
$config['permitted_uri_chars'] = '';
이렇게 바꾸니 잘 되는 것 같긴 합니다만, 보안상에 문제가 있다는 글들을 봐서....

뭐가 답인지 혼란스럽네요.

웹 개발 환경을 처음 접하다 보니 조금 불편하네요^^.
 
만들면서 / 2013/08/14 11:02:56 / 추천 0
자답!

Firefox에서 엔터키 인식 못해서 /bbs/bbs/... 로 되는 부분은 

http://www.sitepoint.com/forums/showthread.php?330837-window-event-is-not-working-in-Firefox

참조하니 해결 됩니다.

역시 표준!
변종원(웅파) / 2013/08/18 23:22:57 / 추천 0
한글문제는 모델에서 해당 변수를 utf-8로 변환하는 함수를 추가해주시면 해결됩니다.
 
 
//만약에 UTF-8이 아니면 인코딩한다.
if(mb_detect_encoding($search_word 'UTF-8'true))
{
    
    $search_word = mb_convert_encoding($search_word"UTF-8""EUC-KR");
}
똥파리 / 2015/02/11 11:56:59 / 추천 0
iis에서 uri 인코딩 방식을 euc-kr로 자동 변환되어 나타나는 현상 같네요.
혹시 rewrite모듈을 사용하고 계신거 아닌가요?
모듈을 변경하여 테스트 해보세요.
Ionics Isapi Rewrite Filter 이 모듈은 문제가 없다고 하네요.
출처 : http://www.egocube.pe.kr/CubeBoard/Version1/Detail/asp-net-iis/1867?page=12