function getip() { $unknown = 'unknown'; if ( isset($_server['http_x_forwarded_for']) && $_server['http_x_forwarded_for'] && strcasecmp($_server['http_x_forwarded_for'], $unknown) ) { $ip = $_server['http_x_forwarded_for']; } elseif ( isset($_server['remote_addr']) && $_server['remote_addr'] && strcasecmp($_server['remote_addr'], $unknown) ) { $ip = $_server['remote_addr'];} /* 处理多层代理的情况 或者使用正则方式:$ip = preg_match(/[/d/.]{7,15}/, $ip, $matches) ? $matches[0] : $unknown; */ if (false !== strpos($ip, ',')) $ip = reset(explode(',', $ip)); return $ip; }
复制代码
注意:使用函数getenv(’http_x_forwarded_for’)或getenv(’remote_addr’) 也可以如上代码一样取得同样的效果。不过,特别要留意的是,getenv()不支持在iis的isapi方式下运行的php。