私は訪問者IPからの位置データを私に与えるために(http://www.iplocationtools.com)のjavascript APIを使用します。何らかの理由で、彼らのAPIは私に訪問者の実際のIPを与えることはありません。ちょうど他の情報なので、代わりにPHPとCodeIgniterを使用しなければなりません。IPアドレスは信頼できないPHPを使用
だから私は私は
([IPコードの点火が私を与える])、訪問者のIPを取得し、PHPのip2longを使って、上からの位置データとともにデータベースに追加するには、CodeIgniterの/ PHPを使用します私のデータベーステーブルが次のようになると混乱します: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)として保存されているデータベースに挿入しCodeIgniterの
からIPアドレスを取得するために使用しているコードがあります。そしてここでは、関数IP_ADDRESSです:
関数IP_ADDRESS(){ 場合(!の$ this - > IP_ADDRESS == FALSE){ リターンの$ 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;
}
CodeIgniter/PHPでIPアドレスを取得するために使用しているコードを表示できますか? – janiv
あなたのすべてのIPの番号は、32ビット符号付き整数の最大値です(http://en.wikipedia.org/wiki/2147483647#2147483647_in_computing)。私の考えは、どちらかのcodeigniterが255.255.255.255のようなものを皆のために与えることですIPを使用しているか、codeigniterから取得してDBに格納する間のどこかで誤って処理しています。 codeigniterから取得したIPアドレスをエコーして、有効かどうか確認しましたか? – wolv2012
上記のコードセグメントを追加しました。 –