TIP게시판

제목 뭐..팁이라고 하긴 좀 그렇구요..
글쓴이 FigoKim 작성시각 2014/07/30 15:13:59
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 11993   RSS
뭐..요즘 CI를 사용해서 개임홈페이지를 만들고 있습니다.

만드는 과정에서,

url을 파라미터로 보내야 하는걸 구현하다보니깐..

일반적인 path 방식으로는 전달이 안되더군요..

예를 들어

/controller/method/http://cafe.naver.com/xxx 이렇게 보내게 되면

method 다음의 http:까지만 파라미터로 인식하고 나머지 /를 또 다른 파라미터 구분으로 보는거 같더군요...

전달되는 url을 uricomponentencoding도 해봤지만,

이를 전달받은 아파치 서버에서 디코딩을 하는 관계로 의미가 없더군요..

그래서 나름 생각해낸 방안이..

segment를 사용해서 url 주소가 시작되는 segment에서 나머지 문자열 전부를 받아오는 방법을 쓰기로 했습니다.

뭐..해당 기능을 구현해주는게 없어서,,아래처럼 함수를 URI 클래스에 추가해줬습니다.
 
function segment_r($n,$no_result = FALSE){
		return ( ! isset($this->segments[$n])) ? $no_result : substr($_SERVER['REQUEST_URI'],strpos($this->uri_string,$this->segments[$n])+1);
}
단 제약사항이라면 url로 전달되는 파라미터가 맨 마지막이어야 한다는 점이죠...

이 방법말고 다른 방법은 없을까요???
 다음글 LiveReload 좋아요 (4)
 이전글 view를 이용한 테마기능 구현 (1)

댓글

변종원(웅파) / 2014/07/30 15:17:21 / 추천 0
http://php.net/manual/en/function.urlencode.php

댓글 보시면 답이 있습니다. ^^
FigoKim / 2014/07/30 15:29:36 / 추천 0
urlencoding을 안본건 아니구요.ㅎㅎ
예를 들어 이런 형태일 경우,,
http://www.abc.com/feed/step1/http://cafe.rss.naver.com/welovetoskate

step1함수에 url http://cafe.rss.naver.com/welovetoskate을 전달하려고 하면,,

step1함수에서는 CI에서 http:만 값으로 인지하고 step1함수로 전달해버리는거 같던데요..

물론 uri protocol을 query string으로 사용하면 가능하지만,,

그렇지 않고 path방식으로 사용하고 싶은 마음에 ..
 ㅎㅎㅎ
 
하늘치 / 2014/07/30 16:17:43 / 추천 0
저는 아래 소스를 사용합니다.

음.. 어디서 본 건지 기억이 잘 안나네요;;
마냐님이셨던가;;;
혹시 아시는 분은 출처 좀 적어주세요;;
 
// URL 인코드
function url_encode($str) {
 return str_replace('%', '.', urlencode($str));
}

// URL 디코드
function url_decode($str) {
    return urldecode(str_replace('.', '%', $str));
}
변종원(웅파) / 2014/08/01 11:18:25 / 추천 0
FigoKim/ 똑똑해진 브라우저 생각을 못했네요. ㅎㅎ
예전에 만들어 쓰던게 있습니다. 포럼소스에도 적용되어 있구요.
 
$rpath = str_replace("index.php/", "", $this->input->server('PHP_SELF'));
$rpath_encode = strtr(base64_encode(addslashes(gzcompress(serialize($rpath), 9))), '+/=', '-_.');
<a href='/auth/login/<?php echo $rpath_encode?>'>로그인</a>

unserialize(@gzuncompress(stripslashes(base64_decode(strtr(@$returnUrl, '-_.', '+/=')))))
한대승(불의회상) / 2014/08/06 18:02:40 / 추천 0
저는 그냥 get방식으로 넘겨 사용하고 있습니다.

http://cafe.rss.naver.com/welovetoskate" border-box; color: rgb(85, 85, 85); text-decoration: none; line-height: 1.6; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; outline: 0px !important;">http://www.abc.com/feed/step1/?url=http://cafe.rss.naver.com/welovetoskate