1. codeigniter 의 redirect 함수
/system/helpers/url_helper 를 찾을 수 있는데,
소스 를 살펴보면
function redirect
case 'refresh':
header('Refresh:0;url='.$uri);
break;
default:
header('Location: '.$uri, TRUE, $code);
break;
로 되어 있다. 결론적으로 볼 때에 php 의 header 함수 를 쓴다는 것을 알 수 있다.
사이트에서 설명은 https://codeigniter.com/userguide3/helpers/url_helper.html 을 참조
영알못 이므로, 한글화 된 곳 http://www.ciboard.co.kr/user_guide/kr/helpers/url_helper.html 을 참조.
그래도 무슨 소린지 감이 안 온다.
2. PHP 의 header 함수
그렇다면, 자세한 내용은 http://php.net/manual/kr/function.header.php 을 참조
설명을 보는데, 잘 이해가 안 가는 부분이 있었다. 내가 궁금한 것은 post submit 을 날린 후 와 같은 경우에 히스토리에 남기지 않고 redirect 를 시키는 것이 둘 중 어느것이냐 였는데...
3. 직접 실험
실험을 해보기로 했다.
실험방법
* 실험방법은 코드이그나이터 에서 페이지에 redirect('/','location') 과 redirect('/','refresh) 를 바꿔가면서 테스트를 해보았다.
크롬의 경우
* 뒤로가기 버튼 으로 했을 때에는, 둘 다 전 페이지로 넘어가지는 않는다.
* refresh : 히스토리 기록 에 직전주소 와 현재주소 가 둘다 남아 있다.
* location : 히스토리 기록 에 직전주소 가 남아있지 않다.
엣지의 경우
* 뒤로가기 버튼 으로 했을 때에는, 둘 다 전 페이지로 넘어가지는 않는다.
* refresh : 검색기록 (히스토리 기록) 부분에 직전주소 로 남아있다.
* location : 검색기록 (히스토리 기록) 에 직전주소 가 남아있지 않다.
익스플로러11 의 경우
* 뒤로가기 버튼 으로 했을 때에는, 둘 다 전 페이지로 넘어가지는 않는다.
* refresh : 히스토리 기록 에 직전주소 와 현재주소 가 둘다 남아 있다.
* location : 히스토리 기록에 직전주소 가 남아있지 않다.
라는 결과를 얻었다. 하면서 헛갈리거나 실수가 있었을 수도 있겠지만.
결과적으로는 내가 원하는 것은 location 이라는 것을 알게 되었다.
4. 결론
다시 한 번 codeigniter 의 메뉴얼 설명을 읽어보기로 했다. 읽어보면서, 동시에 url_helper 의 redirect 함수 를 천천히 읽어보았다.
method 인자값으로, auto, refresh, location 을 넘길 수가 있는데. 기본값은 auto 이다.
auto 를 살펴보면, auto 이면서 서버가 IIS 인 경우에 refresh 로 변경이 된다. 즉, auto 이면서 리눅스 인 경우에는 header location 이 된다는 말이 된다. (메뉴얼 설명으로는 location 이 윈도우 서버 IIS 에서 이상동작 이 있었던 듯 하다)
그렇구나...location 을 적어주거나, 그냥 인자값 없이 redirect('경로') 정도 로만 써주면 될 것 같다.
5. 결론의 요약
redirect('경로') 를 쓰면 된다. (location, refresh 를 넘길 것 없이)
특별히 기록을 남기려는 경우에만 redirect('경로','refresh') 를 쓰면 된다.
'개발 > PHP' 카테고리의 다른 글
php 의 allow_url_fopen, allow_url_include 옵션 (0) | 2019.08.06 |
---|---|
[php] javascript boolean 값 받을 때 문제. (0) | 2019.02.20 |
[PHP] 클라우드 플레어 유저 아이피 HTTP_CF_CONNECTING_IP (1) | 2017.02.18 |
[PHP][mysql] inet_aton('::1') 에러 (0) | 2017.02.11 |
[PHP] PDO BindValue 와 BindParam 의 차이 (0) | 2016.02.09 |
[PHP] strpos, stripos (0) | 2016.01.19 |
[codeigniter] xss_clean (0) | 2015.10.04 |
[이클립스]cannot create linked resource '/.org.eclipse.dltk.core.external.folders/.link1'. the parent resource is not accessible. (0) | 2015.07.17 |