`

获取用户真实IP

    博客分类:
  • PHP
阅读更多

利用getenv("REMOTE_ADDR")可以得到浏览者的IP;利用getenv("HTTP_USER_AGENT")可以得到浏览者的操作系统类型,浏览器类型;还有什么其他参数吗?
A:getenv能得到所有$_ENV这个全局变量的所有东西
你print_r($_ENV);可以看到很多东西
比如你echo getenv(ALLUSERSPROFILE);
就可以看到ALLUSERSPROFILE的值
echo getenv(PATHEXT);就可以看到PATHEXT的值
三个IP地址的获取有什么区别?
      $_SERVER['REMOTE_ADDR'];
      $_SERVER['HTTP_CLIENT_IP'];
      $_SERVER['HTTP_X_FORWARDED_FOR'];
A:$_SERVER['REMOTE_ADDR'];   //访问端(有可能是用户,有可能是代理的)IP
      $_SERVER['HTTP_CLIENT_IP'];  //代理端的(有可能存在,可伪造)
      $_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

php中$_SERVER参数HTTP_X_FORWARDED_FOR & REMOTE_ADDR与获取IP
2008-03-03 17:35

 

在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

不过要注意的事,并不是每个代理服务器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。

还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:

<?php
if ($_SERVER["HTTP_X_FORWARDED_FOR"]=="")
{
$user_ip=$_SERVER["REMOTE_ADDR"];
}
else
$user_ip=$_SERVER["HTTP_X_FORWARDED_FOR"];
?>


即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值

 

<?php
/**
 * 获取用户真实 IP
 *
 * @Author: 小熊
 * @Return: string
 
*/
function getIP()
{
    
static $realip;
    
if (isset($_SERVER)){
        
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
            
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } 
else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
            
$realip = $_SERVER["HTTP_CLIENT_IP"];
        } 
else {
            
$realip = $_SERVER["REMOTE_ADDR"];
        }
    } 
else {
        
if (getenv("HTTP_X_FORWARDED_FOR")){
            
$realip = getenv("HTTP_X_FORWARDED_FOR");
        } 
else if (getenv("HTTP_CLIENT_IP")) {
            
$realip = getenv("HTTP_CLIENT_IP");
        } 
else {
            
$realip = getenv("REMOTE_ADDR");
        }
    }

    
return $realip;
}
?>

 

 

分享到:
评论

相关推荐

    PHP获取用户真实IP

    总之,获取用户真实IP的过程需要综合考虑多种因素,包括直接获取、检查代理头信息以及IP地址的有效性验证。在编写代码时,应确保处理各种可能的情况,以获取最准确的信息。通过上述方法,我们可以更可靠地在PHP环境...

    java获取用户真实ip

    ### 获取用户真实IP的基本原理 1. **HTTP请求头部**:当客户端向服务器发送HTTP请求时,请求头可能包含了客户端IP地址的信息。这些信息通常是通过`X-Forwarded-For`、`Proxy-Client-IP`或`WL-Proxy-Client-IP`这样...

    获取用户真实IP地址,不使用request.getRemoteAddr()的原因是有可能用户使用了代理软件方式避免真实IP地址

    获取请求接口的真实ip 地址工具类。适合所有Java开发人员。针对接口的ip 地址的获取。

    PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置

    PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置

    获取用户真实IP地址

    本篇文章将详细介绍如何在不同情况下获取用户的真实IP地址,并探讨可能遇到的问题。 首先,最常见的方法是在HTTP请求头中查找“X-Real-IP”或“X-Forwarded-For”字段。这些字段通常由代理服务器设置,用于传递原始...

    java非常强的获取客户端真实IP的两种方法

    ### Java获取客户端真实IP的两种方法详解 #### 一、问题背景 在Web开发中,经常需要获取客户端的真实IP地址来进行一系列的操作,比如统计访问来源、进行地理定位、安全防护等。然而,在实际应用场景中,客户端请求...

    java socket 用户真实IP测试

    在`Socket-master`这个文件夹中,可能包含了一个Java Socket编程的示例项目,用于演示如何在Nginx TCP转发场景下获取用户真实IP。该项目可能包括了服务器端和客户端的代码,通过分析和运行这些代码,我们可以更深入...

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

    主要介绍了Java中使用HttpRequest获取用户真实IP地址,使用本文方法可以避免Apache、Squid、nginx等反向代理软件导致的非真实IP地址,需要的朋友可以参考下

    Discuz论坛使用CDN后无法获取用户真实IP的解决方法

    Discuz论坛使用CDN后,用户访问网站的是通过CDN各节点间接访问网站服务器的,我们发现Discuz论坛设计上的问题可能会在获取用户IP时,直接获取CDN节点IP,而不能直接获取到用户的真实IP,在此提出一些解决方案

    获取用户登陆的真实ip.txt

    破解用户虚拟ip获取真实的ip,破解被代理的ip直接获取用户真实ip 提高安全性

    golang 获取客户端IP

    集成各种获取方式,获取正确的IP

    Java获取客户端真实IP地址

    ### Java获取客户端真实IP地址详解 在Web开发中,获取客户端的真实IP地址是一个常见的需求,尤其是在需要进行地理位置定位、安全审计、流量统计等场景下。然而,在存在反向代理服务器的环境中,传统的`request....

    获取客户端真实IP(支持代理服务器)

    然而,在实际应用中,很多情况下用户的请求会经过反向代理服务器(如Nginx、Squid等),这使得直接使用`request.getRemoteAddr()`方法获取到的IP地址往往并不是客户端的真实IP地址。 #### 二、问题分析 当客户端...

    PHP获取真实IP函数和中文截取函数

    在PHP编程中,获取用户真实IP地址和对中文字符串进行截取是常见的需求。下面将详细解释这两个功能的实现。 首先,我们来看如何在PHP中获取用户的真实IP地址。由于HTTP请求中的IP地址可能受到代理服务器的影响,因此...

    做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)

    然而,CDN的使用可能会导致获取用户真实IP地址变得复杂,因为用户的请求可能经过多个代理服务器。在PHP和ASP这两种常见的编程语言中,都有相应的解决方案来获取用户的真实IP。 在ASP(Active Server Pages)中,...

    springboot 获取访问者的ip地址、访问设备信息、城市地址信息的源码.zip

    文章springboot 获取访问者的ip地址、访问设备信息、城市地址信息的源码 文章springboot 获取访问者的ip地址、访问设备信息、城市地址信息的源码 文章springboot 获取访问者的ip地址、访问设备信息、城市地址信息的...

    php获取用户真实IP和防刷机制的实例代码

    在探讨PHP获取用户真实IP及实现防刷机制的过程中,涉及到的概念和技术点主要有以下几个方面: 1. 获取用户IP的方法:在PHP中,获取用户IP地址并不是简单的使用$_SERVER['REMOTE_ADDR']即可。由于用户可能通过代理或...

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

    ### LNAMP架构中后端Apache获取用户真实IP地址的2种方法 在现代Web服务器部署环境中,LNAMP(Linux, Nginx, Apache, MySQL, PHP)架构是一种常见的选择,尤其是在需要高性能和高稳定性的场景下。然而,在这种架构中...

    Yii扩展 IP地址获取识别

    // 获取用户IP $ipService = new IpAddressService(); $location = $ipService-&gt;locate($ip); // $location 是一个包含国家、地区等信息的对象或数组 echo "IP地址:{$ip} 来自 {$location['country']} {$...

    Asp.net获取访问用户IP地址和IP归属地

    `X-Forwarded-For`头通常包含经过的所有代理服务器的IP,取第一个IP作为用户的真实IP。 接下来,我们需要使用纯真IP数据库来查询IP的归属地信息。纯真IP数据库是一个文本文件,包含了大量的IP段和对应的地理位置...

Global site tag (gtag.js) - Google Analytics