asp 函数代码:
代码如下:
function checkip(checkstring)'用正则判断 IP 是否合法
- dim re1
- set re1=new RegExp
- re1.pattern=^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$
- re1.global=false
- re1.Ignorecase=false
- checkip=re1.test(checkstring)
- set re1=nothing
- end function
function get_cli_ip()'取真实 IP 函数, 先 HTTP_CLIENT_IP 再 HTTP_X_FORWARDED_FOR 再 REMOTE_ADDR
- dim client_ip
- if checkip(Request.ServerVariables(HTTP_CLIENT_IP))=true then
- get_cli_ip = checkip(Request.ServerVariables(HTTP_CLIENT_IP))
- else
- MyArray = split(Request.ServerVariables(HTTP_X_FORWARDED_FOR),,)
- if ubound(MyArray)>=0 then
- client_ip = trim(MyArray(0))
- if checkip(client_ip)=true then
- get_cli_ip = client_ip
- exit function
- end if
- end if
- get_cli_ip = Request.ServerVariables(REMOTE_ADDR)
- end if
- end function
discuz 论坛取真实 IP 的 php 代码, 其它类似, 请参考稍做修改
(discuz 修改 include/common.inc.php)
用以下这段代码:
代码如下:
- if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')) {
- $onlineip = getenv('HTTP_CLIENT_IP');
- } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),
- 'unknown')) {
- $testip = explode('.', getenv('HTTP_X_FORWARDED_FOR'));
- if ($testip[0]=='192 && $testip[1]=='168) {
- $onlineip = getenv('REMOTE_ADDR');
- }
- elseif($testip[0]=='10) {
- $onlineip = getenv('REMOTE_ADDR');
- }
- else {
- $onlineip = getenv('HTTP_X_FORWARDED_FOR');
- }
- //gamesir hack end} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'),
- 'unknown')) {
- $onlineip = getenv('REMOTE_ADDR');
- } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER
- ['REMOTE_ADDR'],'unknown')) {
- //by Johnny
- $tmp_ip = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
- $tmp_ip1 = explode(',',$tmp_ip[0]);
- if ($tmp_ip1[0] =='192 && $tmp_ip1[1] =='168) {
- $onlineip = getenv('REMOTE_ADDR');
- }else if($tmp_ip1[0]=='10) {
- $onlineip = getenv('REMOTE_ADDR');
- }
- else{
- $onlineip = $tmp_ip[0];
- }
- unset($tmp_ip);unset($tmp_ip1);
- }
替换这段代码:
代码如下:
- if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
- $onlineip = getenv('HTTP_CLIENT_IP');
- }
- elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
- $onlineip = getenv('HTTP_X_FORWARDED_FOR');
- }
- elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
- $onlineip = getenv('REMOTE_ADDR');
- }
- elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
- $onlineip = $_SERVER['REMOTE_ADDR'];
- }
来源: https://www.php1.cn/detail/php-763b3ca954.html