| 제목 | 쿼리스트링 사용시 변수가 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"]);