發(fā)表日期:2012.08.17 訪(fǎng)問(wèn)人數:2129
Supesite使用CDN后獲取真實(shí)IP 辦法
成都制作網(wǎng)頁(yè)公司—include/main.inc.php文件,這部分
	if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
	$_SGLOBAL['onlineip'] = getenv('HTTP_CLIENT_IP');
	} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
	$_SGLOBAL['onlineip'] = getenv('HTTP_X_FORWARDED_FOR');
	} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
	$_SGLOBAL['onlineip'] = getenv('REMOTE_ADDR');
	} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
	$_SGLOBAL['onlineip'] = $_SERVER['REMOTE_ADDR'];
	}
替換成
	
	function get_real_ip()
	{
	$ip=false;
	if(!empty($_SERVER["HTTP_CLIENT_IP"]))
	{
	$ip = $_SERVER["HTTP_CLIENT_IP"];
	}
	if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
	{
	$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
	if ($ip)
	{
	array_unshift($ips, $ip); $ip = FALSE;
	}
	for ($i = 0; $i < count($ips); $i++)
	{
	if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i]))
	{
	$ip = $ips[$i];
	break;
	}
	}
	}
	return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
	}
	$_SGLOBAL['onlineip'] = get_real_ip();
	Discuz!使用CDN后獲取真實(shí)IP辦法
	
	nclude/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')) {
	$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'];
	}
替換為:
	function get_real_ip()
	{
	$ip=false;
	if(!empty($_SERVER["HTTP_CLIENT_IP"]))
	{
	$ip = $_SERVER["HTTP_CLIENT_IP"];
	}
	if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
	{
	$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
	if ($ip)
	{
	array_unshift($ips, $ip); $ip = FALSE;
	}
	for ($i = 0; $i < count($ips); $i++)
	{
	if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i]))
	{
	$ip = $ips[$i];
	break;
	}
	}
	}
	return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
	}
	$onlineip = get_real_ip();
DZ注冊用戶(hù)IP和邀請碼擁有者IP相同的解決辦法
方法A:
	
	register.php 200行
	showmessage('register_invite_iperror');
	改為
	//showmessage('register_invite_iperror');
	方法B:
	在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')) {
	$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'];
	}
	
	替換成:
	代碼:
	$onlineip=getenv('HTTP_X_FORWARD_FOR');
--------------------
做了CDN的ASP網(wǎng)站如何取到用戶(hù)真實(shí)IP程序
	
	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()'取真實(shí)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
	
	ASP.NET獲取IP的6種方法
	服務(wù)端:
	//方法一
	HttpContext.Current.Request.UserHostAddress;
	//方法二
	HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
	//方法三
	string strHostName = System.Net.Dns.GetHostName();
	string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
	//方法四(無(wú)視代理)
	HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
	
	客戶(hù)端:
	//方法五
	var ip = '{C}';
	alert("Your IP address is "+ip);
	//方法六(無(wú)視代理)
	function GetLocalIPAddress()
	{
	    var obj = null;
	    var rslt = "";
	    try
	    {
	        obj = new ActiveXObject("rcbdyctl.Setting");
	        rslt = obj.GetIPAddress;
	        obj = null;
	    }
	    catch(e)
	    {
	        //
	    }
	    
	    return rslt;
	   }
來(lái)自印度的MCT Maulik Patel提供了一種服務(wù)端的解決方案,很好:
	if(Context.Request.ServerVariables["HTTP_VIA"]!=null) // using proxy
	{
	     ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();  // Return real client IP.
	}
	else// not using proxy or can't get the Client IP
	{
	     ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP.
	}
	備注:
	1. 有些代理是不會(huì )發(fā)給我們真實(shí)IP地址的
	2. 有些客戶(hù)端會(huì )因為“header_access deny”的安全設置而不發(fā)給我們IP
	 
net的也可以參考http://www.cdnunion.com/articleinfo.php?pid=158設置
成都網(wǎng)站建設資料請點(diǎn)擊【成都網(wǎng)站建設公司介紹】
成都網(wǎng)站設計案例請點(diǎn)擊【成都網(wǎng)站設計案例】
免費咨詢(xún)