我使用來自(http://www.iplocationtools.com)的JavaScript API向我提供來自訪問者IP的位置數據。出於某種原因,他們的API不會給我訪問者的實際IP,只是其他信息,這就是爲什麼我必須使用PHP和CodeIgniter來爲我提供IP。使用PHP的IP地址不可靠
於是我就用笨/ PHP獲取訪問者的IP,並從上面通過使用PHP的ip2long其與位置數據一起添加到數據庫中([知識產權法典點火器給了我])
我當我的數據庫表看起來像這樣:http://pulse.media.mit.edu/images/1.png
哪個錯誤?我很想相信CodeIgniter是錯誤的,因爲它給了我很多次相同的IP。年齡和性別是自我報告的,我懷疑有一個人正在彌補所有這些信息。
在一天結束時,我們真正需要的是用戶IP和位置,最好來自同一個源,因此我們不會混合錯誤。
任何人對如何做到這一點有更好的主意?
編輯:這是我使用從笨
$data['ip_address'] = ip2long($this->input->ip_address());
$this->pulse_model->voter_info($data);
然後voter_info功能只是將其插入到那裏它存儲爲INT(11)數據庫中獲取IP地址的代碼。
這裏是功能IP地址:(!$這個 - > IP_ADDRESS = = FALSE)
功能IP_ADDRESS(){ 如果 { 回報 $這個 - > 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;
}
您能告訴我們您使用的CodeIgniter/PHP獲取IP地址的代碼嗎? – janiv
你所有IP的數量都是32位有符號整數的最大值(http://en.wikipedia.org/wiki/2147483647#2147483647_in_computing),所以我的想法是codeigniter給你的東西像255.255.255.255爲每個人的IP,或者你在將它從codeigniter中存儲到數據庫之間的某處處理不當。你是否嘗試迴應你從codeigniter獲得的IP地址以查看它是否有效? – wolv2012
我添加了上面的代碼段。 –