| 제목 | 설정없이 GET으로 전달한 Query String 가져오기 | ||
|---|---|---|---|
| 글쓴이 | mycastor | 작성시각 | 2010/03/19 09:28:45 | 
|  | |||
| 
class MY_Input extends CI_Input {
	private $qs = array();
	public function __construct() {
		parent::CI_Input();
		if(isset($_SERVER['REDIRECT_QUERY_STRING'])) {
			$params = explode("&", $_SERVER["REDIRECT_QUERY_STRING"]);
			
			for($i = 0; $i < sizeof($params); $i++) {
				list($key, $value) = explode("=", $params[$i]);
				if(!is_null($value) && $value != "") {
					$this->qs[$key] = $value;
				}
			}
		}
	}
	public function query_string($key) {
		if(array_key_exists($key, $this->qs)) {
			return $this->qs[$key];
		} else {
			return false;
		}
	}
}config.php 파일의 설정없이 GET으로 전달한 Query String 값을 가져오도록 입력 클래스를 확장하였습니다. http://www.abs.com/controller/method?a=1&b=2&c=3 위와 같은 URL에서 a, b, c의 값을 가져올수 있으며 $this->input->query_string('a'); 와 같은 방법으로 사용하시면 됩니다. 다른 방법이 있는지는 찾아보지는 않았지만 Query String 값을 가져올수 있는 간단한 방법이라고 생각합니다. 어짜피 GET 으로 넘어온 데이터를 가져오는 것이니 보안상 문제 될것은 없겠죠? | |||
| 다음글 | PHPExcel를 CI속으로~ (6) | ||
| 이전글 | 주소등 인코딩해서 보내기 (4) | ||
| 
                                변종원(웅파)
                                /
                                2010/03/19 11:15:10 /
                                추천
                                0
                             | 
| 
                                꿈자
                                /
                                2010/03/24 14:19:15 /
                                추천
                                0
                             
                                상단 소스를 그대로 libraries폴더내 MY_Input.php를 생성하여 호출해보았는데요..404 not found라고 나오네요. 위 소스말고 또다른 셋팅을 해야 하는지요? | 
| 
                                변종원(웅파)
                                /
                                2010/03/24 15:46:32 /
                                추천
                                0
                             
                                위 소스는 php5용입니다. php버전 체크를 해보시기 바랍니다. | 
| 
                                mycastor
                                /
                                2010/03/25 09:10:57 /
                                추천
                                0
                             
                                꿈자님// PHP4버젼은 위 소스처럼 클래스 생성자 사용 및 메소드의 접근한정자를 지정할 수 없습니다. PHP4 버젼을 사용하신 다면 소스를 아래의 소스를 이용하시면 됩니다. 
class MY_Input extends CI_Input {
	var $qs = array();
	function MY_Input() {
		parent::CI_Input();
		if(isset($_SERVER['REDIRECT_QUERY_STRING'])) {
			$params = explode("&", $_SERVER["REDIRECT_QUERY_STRING"]);
			
			for($i = 0; $i < sizeof($params); $i++) {
				list($key, $value) = explode("=", $params[$i]);
				if(!is_null($value) && $value != "") {
					$this->qs[$key] = $value;
				}
			}
		}
	}
	function query_string($key) {
		if(array_key_exists($key, $this->qs)) {
			return $this->qs[$key];
		} else {
			return false;
		}
	}
}도움이 되셨기를 바랍니다. | 
| 
                                사탄
                                /
                                2010/05/24 17:49:43 /
                                추천
                                0
                             전 이렇게 하니까.. 소스참 이뻐여 list 문 array_key_exists 한번도 사용해본적 없어서리..  function __construct() {   function query_string($key) {   | 
| 
                                스케치over
                                /
                                2012/02/06 16:31:44 /
                                추천
                                0
                             
                                참고 사항입니다. 내장 Input 클래스를 확장하고자 한다면, application/core/MY_Input.php으로 파일을 만들어야 합니다. | 
기존 input 클래스 보면 xss에 대한 처리부분이 있는데 query_string()에 그걸 적용해줘야 함. ^^
그것만 보완되면 편하게 주소체계를 쓸수있어서 좋네. ^^