当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-01 15:11:30 浏览: 评论:0 

这篇文章主要介绍了PHP 获取客户端 IP 地址的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下。

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

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

$_SERVER['HTTP_CLIENT_IP']:客户端的ip

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

$_SERVER['HTTP_X_REAL_IP']:nginx 代理模式下,获取客户端真实IP

  1. /** 
  2.  * 获取客户端IP地址 
  3.  */ 
  4. function real_ip() 
  5. { 
  6.   $ip = $_SERVER['REMOTE_ADDR']; 
  7.   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)) { 
  8.     foreach ($matches[0] AS $xip) { 
  9.       if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) { 
  10.         $ip = $xip; 
  11.         break; 
  12.       } 
  13.     } 
  14.   } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) { 
  15.     $ip = $_SERVER['HTTP_CLIENT_IP']; 
  16.   } elseif (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CF_CONNECTING_IP'])) { 
  17.     $ip = $_SERVER['HTTP_CF_CONNECTING_IP']; 
  18.   } elseif (isset($_SERVER['HTTP_X_REAL_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_IP'])) { 
  19.     $ip = $_SERVER['HTTP_X_REAL_IP']; 
  20.   } 
  21.   return $ip; 
  22. }

Tags: PHP获取客户端IP

分享到: