CI 묻고 답하기

제목 VIEW 에서 컨트롤러에서 전달해 주는 모든 데이터를 접근 할 수 있을까요?
카테고리 CI 2, 3
글쓴이 에로글애머 작성시각 2021/11/05 13:23:18
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 9199   RSS

안녕하세요? 

개발 및 유지보수를 하다보면 컨트롤러에서 내려주는 데이터를 확인하기 위해 데이터를 찍어보는 과정을 자주 갖는데

이게 귀찮아진거에요. 

그래서 버튼을 하나 만들고 버튼을 누르면 모달창 하나 띄워서 컨트롤러에서 뷰로 전달해 주는 모든 변수를 찍어보고 싶었어요. 

혹시 컨트롤러에서 뷰로 전달해준 모든 데이터에 접근하는 방법을 알 수 있을까요?

 

 

 

사족 -----

이 기능은 접속자의 아이피를 미리 지정한 아이피와 비교하여 지정된 PC 에서만 접속하도록 꾸며두었습니다. 

혹시 이런 기능이 다른 분들께 도움이 될까 하여 남겨둡니다. ( 쓸모없을지도... ^^ ) 

더 좋은 디버깅 툴이 존재하는 건 알고 있습니다. 

 

1. 디버깅용 데이터 찍기 debug_helper

function isDev()
{
	$CI = &get_instance();
	$GLOBALS['isDev'] = in_array($CI->input->server('REMOTE_ADDR'), devEnv::$DEV_IP)
		|| in_array($CI->input->server('HTTP_X_FORWARDED_FOR'), devEnv::$DEV_IP);

	return $GLOBALS['isDev'];
}

function debug() {
	if( isDev() ) {
		$sapi_name = php_sapi_name();

		$args = func_get_args();
		$style2 = "word-break:break-all;word-wrap:break-word;";
		$style = "margin:5px 0px 5px 0px;color:white;background-color:black;line-height:1.5em;font-size:11px;font-family:Verdana;padding:5px;text-align:left;float:none;clear:both;display:block;position: static;";
		if (preg_match('/msie ([\d\.]+)/i', $_SERVER['HTTP_USER_AGENT'])) {
			$style2 = "word-break:break-all;word-wrap:break-word;";
		}
		$_DEBUG_ID = 'erogramerDebug';
		/*스타일 적용*/
		if (is_string($args[0])) {
			if (preg_match('/^(style=)(.+)/i', $args[0])) {
				$style .= str_replace(array('\'', "\"", "style="), '', array_shift($args));
			}
			else if (preg_match('/^(id=)(.+)/i', $args[0])) {
				$_DEBUG_ID = str_replace(array('\'', "\"", "style="), '', array_shift($args));
			}
		}
		if ($sapi_name != 'cli') {
			echo "\n<!--{{" . $_DEBUG_ID . "}}-->\n<div style=\"$style\">\n<xmp style='$style2;white-space:pre-wrap;'>";
		}
		print_r(count($args) > 1 ? $args : $args[0]);
		if ($sapi_name != 'cli') {
			echo "</xmp></div>\n";
		}
	}

}

위에 보시면 

devEnv::$DEV_IP 라는 게 있죠?

config/constants.php 에 아래의 코드를 추가합니다. 

include "devEnv.php";

 

아래는 config/devEnv.php 의 내용입니다. 

if (!class_exists("devEnv")) {
	class devEnv
	{
		static $DEV_IP = array(
			"aaa.bbb.ccc.ddd",             // 허용할 아이피 
            "127.0.0.1"
		);

	}
}

 

위의 구성을 통해 

debug_helper 가 로드되어 있는 상황이라면 

isDev() 함수를 통해 원하는 아이피만 코드를 실행할 수 있습니다. 

 

모달을 document 에 포함하거나 js 혹은 그밖에 필요한 작업을 할 때 아이피를 확인하여 분기할 수 있습니다. 

 

 다음글 [ci4] 디버그 툴바 사용방법을 질문드립니다 (4)
 이전글 ajax 에러 문제 (3)

댓글

변종원(웅파) / 2021/11/05 13:43:16 / 추천 0
에로글애머 / 2021/11/05 14:04:34 / 추천 0

저는 굉장히 고전적인 방식을 택한 거였군요. ^^

친절한 안내에 대해 정말 감사드립니다.