제목 | 쿼리스트링 사용시 변수가 1개 일때는 어떻하나요? | ||
---|---|---|---|
글쓴이 | kimga | 작성시각 | 2010/05/30 00:51:16 |
|
|||
http://codeigniter-kr.org/tip/view/426/page/1/q/MY_Input 위의 라이브러리를 현재 사용중입니다. 사용하다보니 'http://foobar.com/abc?temp=1' 은 에러가 나고
|
|||
다음글 | mysql 함수 now() 입력 질문 (2) | ||
이전글 | $_POST['x'] , $_POST['y'] ... (2) | ||
변종원(웅파)
/
2010/05/30 01:03:04 /
추천
0
|
kimga
/
2010/05/30 01:34:29 /
추천
0
저로선 굉장히 난해한 답변이네요;
혹시 알아듣기 쉽게 설명해주시거나 저 라이브러리를 어떻게 고쳐야 되는지 알려주실수 있을까요 |
배강민
/
2010/05/30 09:38:50 /
추천
0
흠.. 테스트해봤는데.. 정상동작하는데요....? |
mycastor
/
2010/05/30 11:14:06 /
추천
0
에러가 발생하나요? 딱히 에러가 발생할 부분이 없는데요..
explode 함수의 경우 특정 delimiter 가 없는 경우 해당 문자열을 반환받는 변수의 0번으로 들어가게됩니다. 혹시나 아직 해결전이시라면 어떠한 에러가 발생하는지 말씀해주세요. |
앤드그리고
/
2010/05/31 10:48:29 /
추천
0
저도 같은 문제가 있었는데, URI 클래스를 확장해서 해결했습니다.
해당 문제에 대한 해결책은 http://codeigniter.com/forums/viewthread/47192/#226591 여기를 참고했습니다. 아래 코드는 제가 확장해서 사용하고 있는 URI 클래스입니다. 51번째 줄 // url에 인자가 하나만 있을경우 컨트롤러를 제대로 찾지 못하는 문제 때문에, 위치를 이동합니다. 부분이 수정 내용입니다. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * URI Class * * Parses URIs and determines routing * * @package CodeIgniter * @subpackage Libraries * @category URI * @author ExpressionEngine Dev Team * @link http://codeigniter.com/user_guide/libraries/uri.html */ class MY_URI extends CI_URI { /** * Get the URI String * * @access private * @return string */ function _fetch_uri_string() { if (strtoupper($this->config->item('uri_protocol')) == 'AUTO') { // Is there a PATH_INFO variable? // Note: some servers seem to have trouble with getenv() so we'll test it two ways $path = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO'); if (trim($path, '/') != '' && $path != "/".SELF) { $this->uri_string = $path; return; } // No PATH_INFO?... What about QUERY_STRING? $path = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING'); if (trim($path, '/') != '') { $this->uri_string = $path; return; } // No QUERY_STRING?... Maybe the ORIG_PATH_INFO variable exists? $path = (isset($_SERVER['ORIG_PATH_INFO'])) ? $_SERVER['ORIG_PATH_INFO'] : @getenv('ORIG_PATH_INFO'); if (trim($path, '/') != '' && $path != "/".SELF) { // remove path and script information so we have good URI data $this->uri_string = str_replace($_SERVER['SCRIPT_NAME'], '', $path); return; } // url에 인자가 하나만 있을경우 컨트롤러를 제대로 찾지 못하는 문제 때문에, 위치를 이동합니다. // If the URL has a question mark then it's simplest to just // build the URI string from the zero index of the $_GET array. // This avoids having to deal with $_SERVER variables, which // can be unreliable in some environments if (is_array($_GET) && count($_GET) == 1 && trim(key($_GET), '/') != '') { $this->uri_string = key($_GET); return; } // We've exhausted all our options... $this->uri_string = ''; } else { $uri = strtoupper($this->config->item('uri_protocol')); if ($uri == 'REQUEST_URI') { $this->uri_string = $this->_parse_request_uri(); return; } $this->uri_string = (isset($_SERVER[$uri])) ? $_SERVER[$uri] : @getenv($uri); } // If the URI contains only a slash we'll kill it if ($this->uri_string == '/') { $this->uri_string = ''; } } } |
변종원(웅파)
/
2010/05/31 14:29:52 /
추천
0
kimga/ 1개일 경우 제대로 안나온다고 하시니 위 구문이 실제 쿼리스트링을 배열로 만드는 부분이라
if문으로 1개일때 처리와 그 이상일때 처리를 하면 된다고 답변 드린 겁니다. 설마 완전한 소스를 원하시는건 아니겠죠? ^^ |
kimga
/
2010/06/07 23:54:36 /
추천
0
답변 정말 감사드립니다. 혼자서 헤매면서 아직도 해결 못하고 있었네요 |
$params
=
explode
(
"&"
,
$_SERVER
[
"REDIRECT_QUERY_STRING"
]);