안녕하세요 ci2.1.0 사용중인 초보입니다
오늘도 생활코딩 강의 들으며 공부를 하던중에 있었는데
세션으로 ip받아오는거에서 막히는 부분이 생겨서요..ㅠ
아래와 같이 오토로드 세션 설정도 해두었고
config 파일도 아래와 같이 use_database 부분 true 로 설정해서
db에 세션정보를 저장하게끔 했는데
db에 세션정보가 찍히긴 하는데 ip가 왜 0 0 0 0ㅇ로 찍힐까요??ㅠㅠ
127.0.0.1로 받아져야 하는거 아닌가요??
로컬(pc) 아니신가요?
=> 네 로컬입니다 !
그리고 질문이 잘못되었습니다. 가져오기가 안되는게 아니라 가져온 값이 생각한 것과 다른거죠.
=> 아아 그렇네요 ㅎㅎ 말씀주셔서 감사합니다!
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; }
로컬(pc) 아니신가요?
그리고 질문이 잘못되었습니다. 가져오기가 안되는게 아니라 가져온 값이 생각한 것과 다른거죠.