Я использую javascript API из (http://www.iplocationtools.com), чтобы предоставить мне данные о местоположении с IP-адреса посетителей. По какой-то причине их API не даст мне фактический IP-адрес посетителя, просто другую информацию, поэтомуЯ должен использовать PHP и CodeIgniter, чтобы вместо этого дать мне IP.
Поэтому я использую CodeIgniter / PHP, чтобы получить IP-адрес посетителя и добавить его в базу данных вместе с данными о местоположении сверху, используя PHP ip2long ([воспламенитель ip-кода дает мне])
Я в замешательстве, когда моя таблица базы данных выглядит следующим образом: http://pulse.media.mit.edu/images/1.png
Что не так? Я испытываю желание поверить, что CodeIgniter не прав, посколькуон дает мне один и тот же IP-адрес очень много раз. Возраст и пол сообщаются самостоятельно, и я сомневаюсь, что один человек собирает всю эту информацию.
В конце концов, все, что нам действительно нужно, это IP-адрес пользователя иместоположение, желательно из того же источника, поэтому мы не составляем ошибок.
У кого-нибудь есть идеи, как это сделать?
РЕДАКТИРОВАТЬ: Вот код, который я используюполучить IP-адрес от CodeIgniter
$data['ip_address'] = ip2long($this->input->ip_address());
$this->pulse_model->voter_info($data);
Затем функция voter_info просто вставляет ее в базу данных, где она хранится как INT (11).
А вот функция ip_address:
functionip_address () {if ($ this-> ip_address! == FALSE) {return $ this-> ip_address;}
if (config_item('proxy_ips') != '' && $this->server('HTTP_X_FORWARDED_FOR') && $this->server('REMOTE_ADDR'))
{
$proxies = preg_split('/[\s,]/', config_item('proxy_ips'), -1, PREG_SPLIT_NO_EMPTY);
$proxies = is_array($proxies) ? $proxies : array($proxies);
$this->ip_address = in_array($_SERVER['REMOTE_ADDR'], $proxies) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
}
elseif ($this->server('REMOTE_ADDR') AND $this->server('HTTP_CLIENT_IP'))
{
$this->ip_address = $_SERVER['HTTP_CLIENT_IP'];
}
elseif ($this->server('REMOTE_ADDR'))
{
$this->ip_address = $_SERVER['REMOTE_ADDR'];
}
elseif ($this->server('HTTP_CLIENT_IP'))
{
$this->ip_address = $_SERVER['HTTP_CLIENT_IP'];
}
elseif ($this->server('HTTP_X_FORWARDED_FOR'))
{
$this->ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
if ($this->ip_address === FALSE)
{
$this->ip_address = '0.0.0.0';
return $this->ip_address;
}
if (strpos($this->ip_address, ',') !== FALSE)
{
$x = explode(',', $this->ip_address);
$this->ip_address = trim(end($x));
}
if ( ! $this->valid_ip($this->ip_address))
{
$this->ip_address = '0.0.0.0';
}
return $this->ip_address;
}