如何在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地址?的主要内容,如果未能解决你的问题,请参考以下文章

java如何查询本机ip地址和mac地址

如何获取安卓模拟器的IP地址?

如何使用 Winsock 从数据报的 IP 标头中获取源 IP 地址?

如何使用 Ruby SDK 从 AWS 获取公共 IP 地址

如何使用 php 获取 NAT 后面的 ip?

如何在 apollo 订阅服务器上获取客户端 IP 地址?