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配置信息
}

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dpkg命令的用法

    dpkg命令的用法dpkg命令的用法dpkg是Debianpackage的简写,为”Debian“操作系统专门开发的套件管理系统,用于软件的安装,更新和移除。所有源自"Debian"的Linux的发行版都使用dpkg,  例如"Ubuntu" 阅读目录 安装软件列出与该包先关联的文件显示包的版本移除软件(保留配置)移除软件(不保留配置)查找包的详细信息列出deb包的内容 安装软件命令:dpkg-i&…

    2022年5月11日
    72
  • 香农编码的matlab实现总结_matlab简单代码实例

    香农编码的matlab实现总结_matlab简单代码实例用MATLAB编程实现香农编码实验四、用MATLAB编程实现香农编码⒈实验目的和要求(1)了解信源变长码的编码方法(2)掌握香农编码方法(3)掌握MATLAB的编程⒉实验主要内容使用MATLAB语言和excel对以下信源进行香农编码,并求出平均码长和编码效率。3.实验原理Ⅰ.香农编码方法将信源发出的N个消息符号按其概率的递减次序排列按下式计算第个消息的二进制代码组的码长,并取整计算第个消息的累加概…

    2025年10月21日
    6
  • 2×3卡方检验prism_SPSS之卡方检验

    2×3卡方检验prism_SPSS之卡方检验点击蓝字关注我们在介绍卡方检验之前,我们先了解一下非参数检验:非参数检验是指在母体不服从正态分布或分布情况不明确时,即不依赖母体分布的类型,用以检验数据是否来自同一个母体假设的一类检验方法,又称分布自由检验。那么什么是卡方检验呢?01卡方检验的定义卡方检验是一种极为典型的对总体分布进行检验的非参数检验方法。用于检验数据是否与某种概率分布的理论数字相吻合,进而推断样本数据是否来自该分布的…

    2022年5月17日
    65
  • 小程序 轮播图样式设置

    小程序 轮播图样式设置swiper标签存在默认的宽度和高度100%*150pximage标签也存在默认的高度和宽度320px*240px设计图片和轮播图先看一下原图的尺寸数据假设750*340让图片的高度自适应宽度为100%让swiper标签的高度与图片的告诉一样高swiper高度/swiper宽度=图片高度/图片宽度swiper高度=图片高度*swiper宽度/图片宽度swiper高度=340*100vw/750100vw为视口宽度图片的.

    2022年5月21日
    78
  • 隐藏任务栏显示

    隐藏任务栏显示ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_APPWINDOW,0)    我用ModifyStyleEx(WS_EX_APPWINDOW,0);隐藏了程序在任务栏的显示.ModifyStyleEx(WS_EX_TOOLWINDOW,WS_EX_APPWINDOW,SWP_NOZORDER);注意最后要改回来void C

    2022年7月19日
    15
  • 全概率公式和贝叶斯公式分别用于什么场合_贝叶斯公式的例题

    全概率公式和贝叶斯公式分别用于什么场合_贝叶斯公式的例题1.全概率公式:首先建立一个完备事件组的思想,其实全概就是已知第一阶段求第二阶段,比如第一阶段分A、B、C三种,然后A、B、C中均有D发生的概率,最后让你求D的概率P(D)=P(A)*P(D|A)+P(B)*P(D|B)+P(C)*P(D|C)2.贝叶斯公式:其实原本应该叫逆概公式,为了纪念贝叶斯这样取名而已.在全概公式理解的基础上,贝叶斯其实就是已知第二阶段反推第一阶段,这时候关键是

    2025年7月11日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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