·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

有没有X3.5版本下 获取真实IP的方法?

486 2
发表于 2023-1-31 21:38:17 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

如题  请问有没有大神 可以说下 如何在接入了cdn下 获取真实IP



  用的华为云cdn

我要说一句 收起回复

评论2

婷姐Lv.8 发表于 2023-1-31 21:39:03 | 查看全部
Discuz! X3.5 针对常见CDN/WAF/负载均衡,如何获取真实IP?
https://www.dismall.com/thread-15034-1-1.html
(出处: Discuz!交流社区)
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-19 04:00:47 | 查看全部
在Discuz! X3.5版本中,获取用户的真实IP地址是一个常见的需求,尤其是在使用了CDN(内容分发网络)的情况下。由于CDN会代理用户的请求,服务器默认获取到的IP地址可能是CDN节点的IP地址,而不是用户的真实IP。因此,我们需要通过一些方法来获取用户的真实IP。

### 1. 使用HTTP头信息获取真实IP
大多数CDN服务(包括华为云CDN)会在请求头中添加用户的真实IP地址。常见的HTTP头字段包括:

- `X-Forwarded-For`
- `X-Real-IP`
- `CF-Connecting-IP`(如果是Cloudflare CDN)

在Discuz!中,可以通过以下代码来获取用户的真实IP:

  1. function get_real_ip() {
  2.     $ip = '';
  3.     if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  4.         $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  5.     } elseif (isset($_SERVER['HTTP_X_REAL_IP'])) {
  6.         $ip = $_SERVER['HTTP_X_REAL_IP'];
  7.     } else {
  8.         $ip = $_SERVER['REMOTE_ADDR'];
  9.     }
  10.     return $ip;
  11. }

  12. $real_ip = get_real_ip();
  13. echo "用户的真实IP是: " . $real_ip;
复制代码


### 2. 修改Discuz!核心代码
如果你希望在Discuz!中全局使用这个方法来获取真实IP,可以修改Discuz!的核心代码。通常,Discuz!的IP获取逻辑位于`source/class/discuz/discuz_application.php`文件中。

找到以下代码:

  1. $clientip = $_SERVER['REMOTE_ADDR'];
复制代码


将其修改为:

  1. $clientip = '';
  2. if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  3.     $clientip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  4. } elseif (isset($_SERVER['HTTP_X_REAL_IP'])) {
  5.     $clientip = $_SERVER['HTTP_X_REAL_IP'];
  6. } else {
  7.     $clientip = $_SERVER['REMOTE_ADDR'];
  8. }
复制代码


### 3. 使用插件或扩展
如果你不想修改核心代码,也可以通过安装插件或扩展来实现获取真实IP的功能。你可以在DZ插件网(https://www.dz-x.net/)上搜索相关的插件,或者自己开发一个简单的插件来实现这个功能。

### 4. 华为云CDN的特定配置
华为云CDN默认会在请求头中添加`X-Forwarded-For`字段,因此你可以直接使用上述方法来获取用户的真实IP。如果你使用的是其他CDN服务,可能需要查看其文档以确认具体的HTTP头字段。

### 5. 安全性考虑
在获取用户真实IP时,需要注意安全性问题。`X-Forwarded-For`头信息可以被伪造,因此在处理敏感操作时,建议对IP地址进行验证,或者结合其他安全措施来确保数据的真实性。

### 总结
在Discuz! X3.5版本中,获取真实IP的方法主要是通过解析HTTP头信息中的`X-Forwarded-For`或`X-Real-IP`字段。你可以通过修改核心代码或使用插件来实现这一功能。如果你使用的是华为云CDN,默认情况下可以通过`X-Forwarded-For`字段获取到用户的真实IP。

如果你有更多关于Discuz!开发的问题,欢迎随时在DZ插件网(https://www.dz-x.net/)上提问或查找相关资源。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.147.59.186,GMT+8, 2025-4-1 15:27 , Processed in 0.651502 second(s), 103 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表