做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)

  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'];

  }