Files
web-discuz/source/class/ip/ip_getter_dnslist.php
2025-06-27 21:04:18 +08:00

39 lines
1.0 KiB
PHP
Executable File

<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: ip_getter_dnslist.php 1034 2019-12-19 12:00:00Z community $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class ip_getter_dnslist {
public static function get($s) {
if (empty($s['header']) || empty($s['list'])) {
return $_SERVER['REMOTE_ADDR'];
}
$ip = $_SERVER['REMOTE_ADDR'];
$rdns = gethostbyaddr($ip);
foreach($s['list'] as $host) {
if (preg_match('/'.$host.'$/i', $rdns)) {
if ($s['header'] != 'HTTP_X_FORWARDED_FOR') {
$ip = ip::validate_ip($_SERVER[$s['header']]) ? $_SERVER[$s['header']] : $ip;
} else {
if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ",") > 0) {
$exp = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']);
$ip = ip::validate_ip(trim($exp[0])) ? $exp[0] : $ip;
} else {
$ip = ip::validate_ip($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $ip;
}
}
}
}
return $ip;
}
}