PHP获取客户端IP地址方式[通俗易懂]

PHP获取客户端IP地址方式[通俗易懂]一、如果没有使用代理服务器REMOTE_ADDR=客户端IPHTTP_X_FORWARDED_FOR=没数值或不显示$ip=$_SERVER[‘REMOTE_ADDR’];二、使用透明代理REMOTE_ADDR=最后一个代理服务器IPHTTP_X_FORWARDED_FOR=客户端真实IP(经过多个代理服务器时,这个值类似:221.5.252….

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、如果没有使用代理服务器

REMOTE_ADDR = 客户端IP    HTTP_X_FORWARDED_FOR = 没数值或不显示
$ip = $_SERVER['REMOTE_ADDR'];

Jetbrains全家桶1年46,售后保障稳定

二、使用透明代理

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252.160, 203.98.182.163, 203.129.72.215)

  这类代理还会将客户真实ip发送到请求对象,无法隐藏真实ip。

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

三、使用普通匿名代理服务器

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.129.72.215)

  这样就隐藏了客户端的真实ip,但服务器会知道客户端是通过代理服务器去访问的。

四、使用欺骗性代理服务器

REMOTE_ADDR = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP(经过多个代理服务器时,这个值类似:220.4.251.159, 203.98.182.163, 203.129.72.215)

  服务器可以识别到时通过代理服务器访问的,但发送给目标服务器的是虚假ip。

五、使用高匿名代理

REMOTE_ADDR = 代理服务器 IP       HTTP_X_FORWARDED_FOR = 没数值或不显示

  使用这种代理时,不同浏览器不同设备会返回不同的ip头信息,因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 获取的值可能是空值也可能是“unknown”值。

PHP获取ip代码如下:

public function ip() {
    //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
    if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } else if (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } else if (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $ip = getenv('REMOTE_ADDR');
    } else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    $res =  preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
    echo $res;
    //dump(phpinfo());//所有PHP配置信息
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/213497.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 12.推荐几款好用的搜索引擎「建议收藏」

    12.推荐几款好用的搜索引擎「建议收藏」1.多吉搜索https://www.dogedoge.com/多吉搜索是我接触的第一款无广告,无跟踪的搜索引擎,网上有它和谷歌搜索的对比,个人认为非常好用,但是最近好像用不了,总显示502badgateway,估计是被人攻击了。。。2.goobehttps://goobe.io/专为程序员设计的搜索引擎(搜索非技术相关的东西也很6),界面是这样事儿的而且可以通过快照访问stackoverflow和github,非常好用无广告,不跟踪3.萌搜http..

  • python mkv转mp4,如何将mkv格式转换成mp4视频呢

    python mkv转mp4,如何将mkv格式转换成mp4视频呢在日常生活中都会使用到MKV视频文件的。MKV视频文件主要是视频文件、音频文件和字幕压制的。MKV视频一般在网上都是可以直接下载的。各种种子和磁链下载的也基本都是MKV视频。但有时可能会碰到视频播放错误。无法播放或者不支持文件播放的。一般都是可以通过转换视频格式修改的。那今天就教大家怎么将mkv格式转换成mp4格式吧。1、首先点击下方的立即下载按钮然后弹出下载迅捷视频转换器的下载框。下载打开之后,…

    2022年10月16日
  • 单片机_MFRC522射频模块使用方法(含代码)

    单片机_MFRC522射频模块使用方法(含代码)MFRC522射频模块使用方法本文只讲解MFRC522射频模块使用方法(下文简称522模块),不包含原理说明,原理下篇~一、管脚解释522模块总共有8个引脚,除去复位、GND接地、3.3V电源、NC端悬空、SCK时钟端,剩余3个引脚,起数据作用。二、连接方法这里主要使用IIC的方法,相信写过IIC的同学都很熟悉这段代码。不熟悉也没关系,后文会附上52单片机的LCD1602显示UID的实现代码,包含UART测试代码。显而易见,通过总线办法读取数据只需要依照手册写代码就可以读出来,这里官方提供了

  • httpclient3与httpclient4不同版本使用方法[通俗易懂]

    httpclient3与httpclient4不同版本使用方法[通俗易懂]httpComponentsHttpClient4.x获取httpClientCloseableHttpClienthttpClient=HttpClients.custom()   .setMaxConnTotal(config.maxConnTotal)   .setMaxConnPerRoute(config.maxConnPerRoute)   .setDef…

  • ***R解压密码[通俗易懂]

    3.8ACG3201660CG34.0DpopkingsV2EXsquidgfw转载于:https://www.cnblogs.com/zhuxiaoxi/p/7452350.html

  • ajax 长轮询_js 轮询

    ajax 长轮询_js 轮询1.三者介绍【1】http协议介绍1)介绍:http协议是请求/响应范式的,每个http响应都对应一个http请求,http协议是无状态的,多个http请求之间是没有关系的;2)http协议的被动性:在标准的HTTP请求响应语义中,浏览器发起请求,服务器发送一个响应,这意味着在浏览器发起新请求前,服务器不能发送新信息给客户端浏览器;【2】htt

    2022年10月14日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号