如何在codeigniter中获取IP地址?
Posted
技术标签:
【中文标题】如何在codeigniter中获取IP地址?【英文标题】:how to get ip address in codeigniter? 【发布时间】:2014-08-07 14:34:49 【问题描述】:我正在执行以下代码以尝试登录,并且我想获取本地机器的 IP 地址..
if ( !$this->session->userdata('login_attempts') )
$this->session->set_userdata('login_attempts', 0);
$attempts = ($this->session->userdata('login_attempts') + 1);
$this->session->set_userdata('login_attempts', $attempts);
// Check if the session.
if ( $this->session->userdata('login_attempts') > 4 )
echo 'hi....login attempt is over';
// Failed. So, update the session
echo $ip = $_SERVER['REMOTE_ADDR'];
// $ip_address = $this->input->ip_address1();
// return $ip_address;
echo $this->input->ip_address();
if ( ! $this->input->valid_ip($ip))
echo 'Not Valid';
else
echo 'Valid';
$this->db->update('loginattempts',array( 'login_attempts' =>$this->session->userdata('login_attempts') , 'lastLogin' =>date('Y-m-d H:i:s'),'ip'=>$ip = $_SERVER['REMOTE_ADDR'] ),array('login_id' =>1) );
echo ('hi....login attempt is'.$this->session->userdata('login_attempts'));
但它显示了我本地机器的错误 IP 地址。
【问题讨论】:
您是在寻找本地机器的 IP 地址,还是试图连接的用户的 IP 地址? 【参考方案1】:使用$this->input->ip_address()
$ip = $this->input->ip_address();
Codeigniter 2 - Input Class: ip_address()
CodeIgniter 3 - Input Class: ip_address()
或在 CI4 中:$this->request->getIPAddress()
$ip = $this->request->getIPAddress();
CodeIgniter 4 - Request Class: getIPAddress()
【讨论】:
【参考方案2】:要获取远程 IP 地址,在 php 中,您可以使用 $_SERVER['REMOTE_ADDR']
,CodeIgniter 在幕后做同样的事情。
【讨论】:
Codeigniter 没有这样做,但 more.【参考方案3】:使用下面的任何人.. 和 $_SERVER['REMOTE_ADDR'] 一样
$_SERVER['HTTP_X_FORWARDED_FOR']
$_SERVER['HTTP_CF_CONNECTING_IP']
为了安全,我们应该使用codeigniter函数,
我们应该使用 $this->input->ip_address();
,这将给客户端 ip
如果你想访问服务器变量,像这样使用
$this->input->server(array('HTTP_CF_CONNECTING_IP', 'HTTP_X_FORWARDED_FOR')));
参考请看 https://www.codeigniter.com/user_guide/libraries/input.html
【讨论】:
【参考方案4】:如果您相信外部服务有 100% 的正常运行时间,您可以使用它。
$ip = file_get_contents('https://api.ipify.org');
【讨论】:
以上是关于如何在codeigniter中获取IP地址?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Winsock 从数据报的 IP 标头中获取源 IP 地址?