老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
7

Discuz! + Cloudflare Tunnel 获取用户IP的方法

分类 网站技术/村民张先生 发布于 2025-11-08 19:04
0

修改 source/class/discuz/discuz_application.php 中的 _get_client_ip() 函数为以下内容:

	private function _get_client_ip() {
		$headers = [
			'HTTP_X_REAL_IP',
			'HTTP_X_FORWARDED_FOR',
			'HTTP_CLIENT_IP',
			'HTTP_CF_CONNECTING_IP',
			'HTTP_CF_PSEUDO_IPV4',
			'REMOTE_ADDR'
		];

		foreach ($headers as $key) {
			if (!empty($_SERVER[$key]) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER[$key]) && $_SERVER[$key] !== '127.0.0.1') {
				return $_SERVER[$key];
			}
		}

		// 万一没有任何合法 IP
		return '0.0.0.0';
	}

如果服务器没有IPv6,记得在Cloudflare中打开 PSEUDO IPV4 功能(自动将IPv6地址转换为一个伪IPv4地址供你记录)。

欢迎转载分享,转载请注明 来源:大张小站 https://www.zhang.cq.cn/20252470.html
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截