강좌게시판

제목 [ci 수정] 일반 PHP 프로젝트에 CI 적용하기
글쓴이 테러보이 작성시각 2015/12/14 08:59:09
댓글 : 4 추천 : 0 스크랩 : 1 조회수 : 20586   RSS
테러보이
단순한 호기에서 시작한 아이디어를 로더로 뽑아주신 불의회상님 감사합니다.
일반 프로젝트에서 ci를 사용하기 위하여 다음과 같은 설정이 필요하여 안내 드립니다.

보통 프로젝트에서 $_GET, $_POST, $_SERVER, $_COOKIE등 변수를 @extract 하여 사용 하는 경우가 많습니다.
하지만 ci로더를 통하여 ci를 호출 하면 보안의 이유로 이를 제거 하게 되는데요.
이를 제거 하지 못하게 하는 방법입니다.

# `./ci/system/core/Input.php:575~596`를 주석 처리 합니다.
foreach (array($_GET, $_POST, $_COOKIE) as $global)
		{
			if ( ! is_array($global))
			{
				if ( ! in_array($global, $protected))
				{
					global $$global;
					$$global = NULL;
				}
			}
			else
			{
				foreach ($global as $key => $val)
				{
					if ( ! in_array($key, $protected))
					{
						global $$key;
						$$key = NULL;
					}
				}
			}
		}

 
 다음글 AWS PHP SDK를 CI 에서 사용 하기. (3)
 이전글 일반 PHP 프로젝트에 CI 적용하기 (10)

댓글

쌈닭 / 2015/12/28 17:13:23 / 추천 0

CI 3.0.3 버전에서는

 

111 라인을(./system/core/CodeIgniter.php)

 

// 		foreach (array('E' => '_ENV', 'G' => '_GET', 'P' => '_POST', 'C' => '_COOKIE', 'S' => '_SERVER') as $key => $superglobal)
		foreach (array('E' => '_ENV', 'C' => '_COOKIE', 'S' => '_SERVER') as $key => $superglobal)

이렇게 수정하면 $_GET, $_POST 값은 그대로 유지할 수 있네요...

테러보이 / 2015/12/28 20:53:22 / 추천 0
@쌈닭 ci3.0은 내부 적인 문제로 사용 할일이 없어 못올렸는데.. 좋은 정보 감사합니다.
쌈닭 / 2015/12/29 12:56:51 / 추천 0

@테러보이 3.0.3 버전에서는 Input.php 가 아닌 CodeIgniter.php 네요...

테러보이 / 2015/12/30 08:28:18 / 추천 0

@쌈닭 오홍! Input.php역활이 CodeIgniter.php로 옮겨졌나보군요!