使用CDN,獲取真實IP辦法

Supesite使用CDN后獲取真實IP 辦法

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后獲取真實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(); 

帝國cms后臺記錄的ip日志和用戶注冊記錄的ip

\e\class\connect.php搜索function egetip()函數(shù)中的獲取ip代碼修改成以上部分

DZ注冊用戶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)站如何取到用戶真實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()'取真實IP函數(shù),先 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ù)端:

使用CDN,獲取真實IP辦法-圖片1//方法一
使用CDN,獲取真實IP辦法-圖片1HttpContext.Current.Request.UserHostAddress;
使用CDN,獲取真實IP辦法-圖片1
使用CDN,獲取真實IP辦法-圖片1//方法二
使用CDN,獲取真實IP辦法-圖片1HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
使用CDN,獲取真實IP辦法-圖片1
使用CDN,獲取真實IP辦法-圖片1//方法三
使用CDN,獲取真實IP辦法-圖片1string?strHostName?=?System.Net.Dns.GetHostName();
使用CDN,獲取真實IP辦法-圖片1string?clientIPAddress?=?System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
使用CDN,獲取真實IP辦法-圖片1
使用CDN,獲取真實IP辦法-圖片1//方法四(無視代理)
使用CDN,獲取真實IP辦法-圖片1HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
使用CDN,獲取真實IP辦法-圖片1

客戶端:

使用CDN,獲取真實IP辦法-圖片2//方法五
使用CDN,獲取真實IP辦法-圖片2var?ip?=?'<!--#echo?var="REMOTE_ADDR"-->';
使用CDN,獲取真實IP辦法-圖片2alert("Your?IP?address?is?"+ip);
使用CDN,獲取真實IP辦法-圖片2
使用CDN,獲取真實IP辦法-圖片2//方法六(無視代理)
使用CDN,獲取真實IP辦法-圖片2function?GetLocalIPAddress()
{
var?obj?=?null;
var?rslt?=?"";
try
{
obj?=?new?ActiveXObject("rcbdyctl.Setting");
rslt?=?obj.GetIPAddress;
obj?=?null;
}
catch(e)
{
//
}

return?rslt;
}

來自印度的MCT Maulik Patel提供了一種服務(wù)端的解決方案,很好:

使用CDN,獲取真實IP辦法-圖片3if(Context.Request.ServerVariables["HTTP_VIA"]!=null)?//?using?proxy
{
ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();??//?Return?real?client?IP.
}
使用CDN,獲取真實IP辦法-圖片3else//?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.
}
使用CDN,獲取真實IP辦法-圖片3
備注:
1. 有些代理是不會發(fā)給我們真實IP地址的

2. 有些客戶端會因為“header_access deny”的安全設(shè)置而不發(fā)給我們IP

 
  • 本文由 米粒在線 發(fā)表于 2012年10月31日13:31:25
  • 轉(zhuǎn)載請務(wù)必保留本文鏈接:http://www.bjmhhq.com/751.html
百科知道

徹底解決AMD顯卡win10開機(jī)黑屏問題

遇上個AMD R7 350 顯卡 偶爾開機(jī)到了logo之后黑屏,找了各種法子沒解決,看到了這個辦法。試試看。來自小櫻看科技的公眾號。這邊做一下記錄避免丟了。謝謝。小櫻的辦公用電...
網(wǎng)站建設(shè)

寶塔面板設(shè)置Docker加速站提示錯誤:全局配置文件有誤,請檢查Expecting value:line 1 column 1(char 0)解決方法

寶塔? docker? 修改加速 報錯:寶塔 設(shè)置失敗!讀取配置文件失敗:Expecting value: line 1 column 1 (char 0)解決辦法: 打開文件:/etc/d...
百科知道

/var/log/maillog日志太大占滿/var空間如何清理

一、情景描述 節(jié)點磁盤空間告警,使用df -h查看發(fā)現(xiàn)是/var盤滿了,cd進(jìn)入/var目錄下,du -sch log/ 發(fā)現(xiàn)是log目錄占用空間大,cd切換到log目錄下,du -dh *查看是因...

發(fā)表評論

匿名網(wǎng)友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
確定

拖動滑塊以完成驗證