站长家园(原代码之家)(www.adminjie.com)网站源码,微信源码,游戏源码,商业源码分享平台。
当前位置:网站首页 技术文章 网络编程 正文

PHP如何才能获取真实IP

时间:2022-06-15 [网络编程]作者:fabuyuan 浏览:3 次

PHP中,常见获取请求IP的方式一般是通过3个超全局变量,不过很显然三种获取IP的方式并不完全可靠。

$_SERVER['REMOTE_ADDR'];             // 客户端与服务器握手IP,如果使用代理则会获取到代理IP
$_SERVER['HTTP_CLIENT_IP'];          // 代理服务器发送的HTTP头(可伪造)
$_SERVER['HTTP_X_FORWARDED_FOR'];    // 用户是在哪个IP使用的代理(可伪造)

如果域名没有经过代理,一般稳妥的方式是 REMOTE_ADDR,如果是海外网络最稳妥的方式是云厂商提供可靠的源IP获取方式,如谷歌云提供的:

当没有出现伪造IP时,X-forwarded-For 一般是客户端真实IP,负载均衡 IP

当出现伪造IP时,谷歌云将伪造的内容进行前置,格式是 <伪造内容>,客户端真实IP,负载均衡 IP

所以无论是否伪造,我们都可以通过逗号切割字符串,找到倒数第二个X-forwarded-for的值,就可以获取到真实客户端IP。

当然,如果域名云厂商没有提供类似的域名信息,我们就无法简单通过超全局变量进行获取了。

当域名云厂商没有提供相应的请求源IP信息时,这时我们也可以通过服务端交互双方协商一种确认机制。

类似:在HTTP请求头加入源IP信息进行判断,由于是服务端之间的通信过程,伪造方无法知道伪造的具体信息内容,因此通常情况下这样的交互是可靠的。

判断逻辑过程

服务端A: HTTP请求头加入变量 MY_REALIP_c32fsjk234 => “1.2.3.4”,这时需要注意,变量名称尽量不要太简单,并且最好双方约定一个随机密钥作为变量名称,类似 MY_REALIP_c32fsjk234

接受请求端B: 通过 $_SERVER[‘MY_REALIP_c32fsjk234’] 判断请求头是否包含 MY_REALIP_c32fsjk234 变量,如果有,获取相应的IP作为真实IP。

原文链接:https://blog.csdn.net/panguangyuu/article/details/122211682

推荐阅读:

php教程

以上就是PHP如何才能获取真实IP的详细内容,更多请关注站长家园其它相关文章!

本文标签:  IPphp

转载请注明来源:PHP如何才能获取真实IP

本文永久链接地址:https://www.adminjie.com/post/13470.html

免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。

  • 站长家园(原代码之家)会员升级
  • 最新文章
    • linux怎么删除乱码文件名的文件

      linux怎么删除乱码文件名的文件

      删除方法:1、利用“ls-i”命令获取文件的节点号,ls命令用于显示指定工作目录下之内容;2、通过获取到的文件节点号利用find命令即可删除指定的文件,语法为...

    • linux怎么查看安装的软件在哪个目录

      linux怎么查看安装的软件在哪个目录

      在linux中,可以利用whereis命令查看安装的软件在哪个目录,该命令用于查找文件,也会待在特定的目录中查找符合条件的文件,但是只能用于查找二进制文件、源代...

    • linux怎么查看错误日志

      linux怎么查看错误日志

      在linux中,可以利用tail命令查看错误日志,该命令用于查看文件的内容,语法为“tail-f/var/log/messages”;参数“-f”表示把文件...

    • linux系统是免费的吗

      linux系统是免费的吗

      linux系统是免费的;linux全称是“GNU/Linux”,是一种自由和开放源码的类Unix操作系统,其不同于windows的不可更改性,可以对源码进行修改...

    • linux的结构是什么

      linux的结构是什么

      linux系统的结构是四个部分:1、内核,操作系统的核心负责管理系统的进程、内存、设备驱动程序等;2、shell,系统的用户界面,提供了用户与内核进行交互操作的...

    热门文章