CI 묻고 답하기

제목 CI2.1.0 세션 ip가져오기 질문이요
카테고리 CI 2, 3
글쓴이 CI3newbi 작성시각 2022/07/03 22:25:07
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 4916   RSS

안녕하세요 ci2.1.0 사용중인 초보입니다

오늘도 생활코딩 강의 들으며 공부를 하던중에 있었는데

세션으로 ip받아오는거에서 막히는 부분이 생겨서요..ㅠ

 

아래와 같이 오토로드 세션 설정도 해두었고

config 파일도 아래와 같이 use_database 부분 true 로 설정해서

db에 세션정보를 저장하게끔 했는데

db에 세션정보가 찍히긴 하는데 ip가 왜 0 0 0 0ㅇ로 찍힐까요??ㅠㅠ

 

127.0.0.1로 받아져야 하는거 아닌가요??

 다음글 ci4에서 인쇄버튼기능 (2)
 이전글 crontab 재질문 드려요. (1)

댓글

변종원(웅파) / 2022/07/04 10:43:40 / 추천 0

로컬(pc) 아니신가요? 

그리고 질문이 잘못되었습니다. 가져오기가 안되는게 아니라 가져온 값이 생각한 것과 다른거죠.

 

CI3newbi / 2022/07/04 12:08:21 / 추천 0

로컬(pc) 아니신가요? 

=> 네 로컬입니다 !

그리고 질문이 잘못되었습니다. 가져오기가 안되는게 아니라 가져온 값이 생각한 것과 다른거죠.

=> 아아 그렇네요 ㅎㅎ 말씀주셔서 감사합니다!

변종원(웅파) / 2022/07/04 13:53:38 / 추천 0

2점대 ci 코어에서 Input.php을 보면 ip_address 라는 함수가 있습니다. 이걸로 세션만들 때 아이피를 가져옵니다.

아래 소스에 의하면 가져온 아이피가 valip_ip함수를 통과하지 못하면 0.0.0.0 으로 강제 할당하고 있습니다.

아래 함수안에서 $this->ip_address 를 화면출력해보세요.

public function ip_address()
{
   if ($this->ip_address !== FALSE)
   {
      return $this->ip_address;
   }

   $proxy_ips = config_item('proxy_ips');
   if ( ! empty($proxy_ips))
   {
      $proxy_ips = explode(',', str_replace(' ', '', $proxy_ips));
      foreach (array('HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'HTTP_X_CLIENT_IP', 'HTTP_X_CLUSTER_CLIENT_IP') as $header)
      {
         if (($spoof = $this->server($header)) !== FALSE)
         {
            // Some proxies typically list the whole chain of IP
            // addresses through which the client has reached us.
            // e.g. client_ip, proxy_ip1, proxy_ip2, etc.
            if (strpos($spoof, ',') !== FALSE)
            {
               $spoof = explode(',', $spoof, 2);
               $spoof = $spoof[0];
            }

            if ( ! $this->valid_ip($spoof))
            {
               $spoof = FALSE;
            }
            else
            {
               break;
            }
         }
      }

      $this->ip_address = ($spoof !== FALSE && in_array($_SERVER['REMOTE_ADDR'], $proxy_ips, TRUE))
         ? $spoof : $_SERVER['REMOTE_ADDR'];
   }
   else
   {
      $this->ip_address = $_SERVER['REMOTE_ADDR'];
   }

   if ( ! $this->valid_ip($this->ip_address))
   {
      $this->ip_address = '0.0.0.0';
   }

   return $this->ip_address;
}
CI3newbi / 2022/07/04 16:40:31 / 추천 0
@변종원(웅파) 넵 답변 감사합니다 ^^퇴근하고 해볼게요~~