CI 묻고 답하기

제목 세그먼트 url 방식 오류
글쓴이 용용 작성시각 2011/09/26 19:40:16
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 19282   RSS
안녕하세요

하도 안되서 질문 글을 올리게 되었습니다.
현재 세그먼트 방식으로 GET으로 간단한 값을 넘기고 있는데요
--------------------------------------------------------------------------------------------------
첫번째 검색에서는

/c_strategy/itemsearch/search_key/제목

위와 같이 url 이 잘 넘어가나
--------------------------------------------------------------------------------------------------
같은 페이지에서 한번 검색을 한 후 다시 검색을 할 경우

/c_strategy/itemsearch/search_key/제목?search_key=내용

위와 같이 넘어가게 됩니다.
--------------------------------------------------------------------------------------------------
즉 기존 Url 세그먼트가 변경이 안되고 뒤에 파라미터 형식으로 ? 가 붙게 되는데요

당췌 이유를 몰라 문의 드립니다.


config 설정은 아래와 같이 되어있습니다.
------------------------------------------------------------------------------------
$config['uri_protocol'] = 'PATH_INFO' ;
$config['permitted_uri_chars'] = '';
$config['enable_query_strings'] = FALSE;
$config['cache_path'] = '';
------------------------------------------------------------------------------------

그리고 같은 페이지에서의 url 값이 초기화가 안되는데 무슨 문제일까요..
ex)

/c_strategy/itemsearch/itemsearch/search_key/제목

위와 같이 url이 될 경우 같은 페이지에서

document.location.href = /c_strategy/itemsearch/key_code/상점

이라고 검색 할 경우 위의 serarch_key 세그먼트 변수의 값이 controller 에서 남아 있습니다.

당췌 이유가 뭘까요 ㅠㅠ;

 다음글 CI에서의 이미지맵 기능에 대하여 (4)
 이전글 레이아웃(템플릿) 라이브러리에 대한 질문인데요.. (2)

댓글

변종원(웅파) / 2011/09/26 22:22:30 / 추천 0
검색후 재검색을 할 경우에는 기존에 있던 변수를 수동으로 지워줘야 합니다.
자동으로 덮어쓰지 않습니다. 
포럼 소스 board.php 컨트롤러 보시면 주소 찾아서 지우는 부분이 있습니다.
참고하세요.
용용 / 2011/09/28 11:07:57 / 추천 0
웅파님 답변 감사합니다. ^^;

하지만 GET방식의 ? 가 붙는 문제는 이상하게 해결이 안되네요

그냥 POST로 처리하기로 했습니다. ^^
변종원(웅파) / 2011/09/28 13:13:00 / 추천 0
 저도 동일한 경험이 있었는데 원인은 못찾았습니다.
그냥 index.php에서 ?가 있는 경우에 빼버리도록 프로그램해서 썼습니다.
특정 아이피에서 접속을 하면 그렇게 되더라구요.

codeigniter-kr.org로 접속을 했는데
index.php에서 값을 찍어보니 아래와 같이 나왔습니다.

[QUERY_STRING] => index
[REQUEST_URI] => /?index
[SCRIPT_NAME] => /index.php

?가 붙어서 에러..


$base_url = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$base_url .= "://" . $_SERVER['HTTP_HOST'];
$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);
if($_SERVER['QUERY_STRING'] == 'index' or $_SERVER['QUERY_STRING'] == '/'){
?>
<script>location="<?=$base_url?>index.php";</script>
<?