欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP 获取客户端 IP 地址的方法实例代码

程序员文章站 2023-11-14 11:39:10
先来了解一个变量的含义: $_server['remote_addr']:浏览当前页面的用户计算机的ip地址 $_server['http_client_ip']:客户...

先来了解一个变量的含义:

$_server['remote_addr']:浏览当前页面的用户计算机的ip地址

$_server['http_client_ip']:客户端的ip

$_server['http_x_forwarded_for']:浏览当前页面的用户计算机的网关

$_server['http_x_real_ip']:nginx 代理模式下,获取客户端真实ip

/**
 * 获取客户端ip地址
 */
function real_ip()
{
  $ip = $_server['remote_addr'];
  if (isset($_server['http_x_forwarded_for']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_server['http_x_forwarded_for'], $matches)) {
    foreach ($matches[0] as $xip) {
      if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
        $ip = $xip;
        break;
      }
    }
  } elseif (isset($_server['http_client_ip']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_server['http_client_ip'])) {
    $ip = $_server['http_client_ip'];
  } elseif (isset($_server['http_cf_connecting_ip']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_server['http_cf_connecting_ip'])) {
    $ip = $_server['http_cf_connecting_ip'];
  } elseif (isset($_server['http_x_real_ip']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_server['http_x_real_ip'])) {
    $ip = $_server['http_x_real_ip'];
  }
  return $ip;
}

总结

以上所述是小编给大家介绍的php 获取客户端 ip 地址的方法实例代码,希望对大家有所帮助