PHP获取客户端IP地址方式
2023-06-13 09:13:03 时间
一、如果没有使用代理服务器
REMOTE_ADDR = 客户端IP HTTP_X_FORWARDED_FOR = 没数值或不显示
$ip = $_SERVER['REMOTE_ADDR'];
二、使用透明代理
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"] 、
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.cn/213497.html原文链接:https://javaforall.cn
相关文章
- PHP常见面试题_php算法面试题及答案
- 大型仓库进销存管理系统php源代码,多仓版进销存管理系统PHP源码ERP仓库管理系统php网络版进销存源码…
- php获取客户端ip以及ip伪造
- PhpStorm 2022 for Mac(PHP集成开发)
- [PHP] 自定义错误处理详解编程语言
- php怎么获取客户端的真实IP详解编程语言
- 数据PHP简单操作实现MySQL数据输出(php输出mysql)
- PHP扩展插件imagick使用笔记详解编程语言
- 编程开发之路:PHP 与 MySQL 结缘(php与mysql程序设计)
- 深入理解MySQL转义在PHP中的应用技巧(mysql转义php)
- 教你如何用PHP获取MySQL数据库中的数据(php获取mysql数据)
- PHP如何准确获取MySQL数据库中的错误信息?(php获取mysql错误)
- PHP在Linux上攀登新高度(php要linux)
- 如何在PHP中启用MSSQL数据库连接(php开启mssql)
- 数据从MySQL中用PHP取得数据(php 获取 mysql)
- PHP链接MSSQL:解开空白之谜(php链接mssql空白)
- PHP与MSSQL的良好配合,助力数据应用升级(php_mssql)
- 以原生PHP类库操作Redis数据库(原生php操作redis)
- 判断是否为指定长度内字符串的php函数
- php下获取客户端ip地址的函数
- php注释规范
- PHP获取和操作配置文件php.ini的几个函数介绍
- 如何利用PHP执行.SQL文件
- php/js获取客户端mac地址的实现代码
- php获取服务器端mac和客户端mac的地址支持WIN/LINUX