获得用户的真实IP地址

/** * 获得用户的真实IP地址 * * @access  public * @return  string */if (!function_exists(‘get_real_ip‘)){   function get_real_ip()   {      static $realip = NULL;

if ($realip !== NULL)      {         return $realip;      }

if (isset($_SERVER))      {         if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘]))         {            $arr = explode(‘,‘, $_SERVER[‘HTTP_X_FORWARDED_FOR‘]);

/* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */            foreach ($arr AS $ip)            {               $ip = trim($ip);

if ($ip != ‘unknown‘)               {                  $realip = $ip;

break;               }            }         }         elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘]))         {            $realip = $_SERVER[‘HTTP_CLIENT_IP‘];         }         else         {            if (isset($_SERVER[‘REMOTE_ADDR‘]))            {               $realip = $_SERVER[‘REMOTE_ADDR‘];            }            else            {               $realip = ‘0.0.0.0‘;            }         }      }      else      {         if (getenv(‘HTTP_X_FORWARDED_FOR‘))         {            $realip = getenv(‘HTTP_X_FORWARDED_FOR‘);         }         elseif (getenv(‘HTTP_CLIENT_IP‘))         {            $realip = getenv(‘HTTP_CLIENT_IP‘);         }         else         {            $realip = getenv(‘REMOTE_ADDR‘);         }      }

preg_match("/[\d\.]{7,15}/", $realip, $onlineip);      $realip = !empty($onlineip[0]) ? $onlineip[0] : ‘0.0.0.0‘;

return $realip;   }}

原文地址:https://www.cnblogs.com/php-linux/p/9908484.html

时间: 2024-08-11 02:42:52

获得用户的真实IP地址的相关文章

PHP获取用户的真实IP地址

本文出至:新太潮流网络博客 PHP获取用户的真实IP地址,非代理IP function getClientIP(){ global $ip; if(getenv("HTTP_CLIENT_IP")){ $ip = getenv("HTTP_CLIENT_IP"); }else if(getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); }e

记录---php实现得到用户的真实ip地址

/**  * 得到用户的ip  * @return string  */ function get_real_ip() {     $ip = false;     if (!empty($_SERVER["HTTP_CLIENT_IP"])) {         $ip = $_SERVER["HTTP_CLIENT_IP"];     }     if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {         $i

CDN下nginx获取用户真实IP地址

随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址,如果后端是apache,请跳转到,如果是后端真实服务器是nginx,那么继续往下看. 实例环境: 用户IP 120.22.11.11 CDN前端 61.22.22.22 CDN中转 121.207.33.33 公司NGINX前端代理 192.168.50.121(外网121.207.

前端Nginx,后端Apache获取用户真实IP地址

Nginx作为前端,Apache作为后端的情况下,Apache只能获取到Nginx前端的内网ip地址(10.10.0.*),而无法获取到用户的真实ip地址,在这种情况下,后端是Apache如何获取用户真实IP地址? nginx 关键配置 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

PHP获取用户真实IP地址

PHP获取客户端真实IP地址方法 在PHP获取客户端IP中常使用 $_SERVER["REMOTE_ADDR"] . (1) 但如果客户端是使用代理服务器来访问,那取到的是代理服务器的 IP 地址,而不是真正的客户端 IP 地址.要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取. (2) 但只有客户端使用“透明代理”的情况下,$_SERVER["HTTP_X_FORWARDE

Java中使用HttpRequest获取用户真实IP地址

1 import javax.servlet.http.HttpServletRequest; 2 3 /** 4 * 自定义访问对象工具类 5 * 6 * 获取对象的IP地址等信息 7 * @author X-rapido 8 * 9 */ 10 public class CusAccessObjectUtil { 11 12 /** 13 * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址, 14 * 16 *

Java 通过HttpRequest获取请求用户真实IP地址

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.

C#获得当前页面客户端的IP 用于监测获取某个页面上用户的客户端真实IP地址

C#获得当前页面客户端的IP 用于监测获取某个页面上用户的客户端真实IP地址  1 /// <summary> 2 /// 获得当前页面客户端的IP 3 /// </summary> 4 /// <returns>当前页面客户端的IP</returns> 5 public static string GetIP() 6 { 7 8 9 string result = String.Empty; 10 11 result = HttpContext.Curre

LNAMP架构中后端Apache获取用户真实IP地址的2种方法(转)

一.Nginx反向代理配置: 1.虚拟主机配置 复制代码代码如下: location / {    try_files $uri @apache;} location @apache {internal;    proxy_pass http://127.0.0.1:8080;    include proxy.conf;} location ~ .*\.(php|php5)?$  {    proxy_pass http://127.0.0.1:8080;    include proxy.c