激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

DEDECMS|帝國(guó)CMS|Discuz|PHPCMS|Wordpress|ZBLOG|ECSHOP|蘋果CMS|極致CMS|CMS系統(tǒng)|

服務(wù)器之家 - 建站程序 - Discuz - Discuz論壇使用CDN后無(wú)法獲取用戶真實(shí)IP的解決方法

Discuz論壇使用CDN后無(wú)法獲取用戶真實(shí)IP的解決方法

2019-09-24 15:12Discuz建站網(wǎng) Discuz

Discuz論壇使用CDN后,用戶訪問(wèn)網(wǎng)站的是通過(guò)CDN各節(jié)點(diǎn)間接訪問(wèn)網(wǎng)站服務(wù)器的,我們發(fā)現(xiàn)Discuz論壇設(shè)計(jì)上的問(wèn)題可能會(huì)在獲取用戶IP時(shí),直接獲取CDN節(jié)點(diǎn)IP,而不能直接獲取到用戶的真實(shí)IP,在此提出一些解決方案

該問(wèn)題存在于任何CDN產(chǎn)品,如果您使用了CDN產(chǎn)品,該Discuz方法都適用。

該問(wèn)題導(dǎo)致的結(jié)果:
1.Discuz論壇可能無(wú)法獲得用戶的真實(shí)IP,導(dǎo)致某些用戶IP顯示的是加速樂(lè)節(jié)點(diǎn)的IP
2.論壇訪問(wèn)量過(guò)大的話,可能會(huì)導(dǎo)致用戶訪問(wèn)時(shí)提示“抱歉,您的 IP 地址不在被允許,或您的賬號(hào)被禁用,無(wú)法訪問(wèn)本站點(diǎn)”

產(chǎn)生原因:
使用CDN,對(duì)于網(wǎng)站訪客來(lái)說(shuō),相當(dāng)于使用了代理訪問(wèn),而Discuz在設(shè)計(jì)上,是優(yōu)先獲取代理IP,其它才會(huì)檢測(cè)代理服務(wù)器是否將用戶真實(shí)IP傳輸過(guò)來(lái),也就是說(shuō)獲取代理IP優(yōu)先于用戶真實(shí)IP。如果您的網(wǎng)站不需要對(duì)用戶訪問(wèn)做過(guò)多的限制,強(qiáng)烈建議按照以下方法進(jìn)行:

解決方法(Discuz X2):

打開Discuz    /source/class/class_core.php 文件
找到第341行,或者搜索“HTTP_CLIENT_IP”,找到如下代碼:
 

復(fù)制代碼

代碼如下:


function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
foreach ($matches[0] AS $xip) {
if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
$ip = $xip;
break;
}
}
}
return $ip;
}

 

將以上代碼修改為:

 

復(fù)制代碼

代碼如下:


function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR'];

elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];

return $ip;
}

 

解決方法(Discuz x2.5)

打開文件\source\class\discuz\discuz_application.php 找到如下代碼:

 

復(fù)制代碼

代碼如下:


private function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
foreach ($matches[0] AS $xip) {
if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
$ip = $xip;
break;
}
}
}
return $ip;
}

 

將其修改為:

 

復(fù)制代碼

代碼如下:


private function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR'];

elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];

return $ip;
}

 

以上操作后,登陸CDN后臺(tái)和你的Discuz論壇后臺(tái)分別清除緩存即可。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩一级免费毛片 | 91精品国产乱码久 | 久久无| 欧美成人a | 午夜久久视频 | 日本道中文字幕 | 黄色高清免费网站 | 青草久久网 | 国内精品视频饥渴少妇在线播放 | 成人一级免费视频 | 一级电影免费看 | 91看片王 | 欧美成人免费一区二区三区 | 99国语露脸久久精品国产ktv | 欧美日韩亚洲成人 | 中文字幕国| 91久久国产露脸精品免费 | 国产乱淫av片免费 | 久久精品无码一区二区日韩av | 色啪综合 | 国产一区免费观看 | 少妇色诱麻豆色哟哟 | 欧美成人免费在线视频 | 国产精品一区在线看 | 欧美激情999 | 国产美女一区二区在线观看 | 国产精品久久久久久久久久三级 | 国产精品久久久在线观看 | 欧美成在人线a免费 | 在线成人一区二区 | 一区二区三区欧美在线 | 久精品久久 | 成人艳情一二三区 | 国产日韩在线 | 精品国产一级毛片 | 天天操天天插 | 国产女王女m视频vk 毛片免费在线视频 | 91午夜在线观看 | 美女黄网站免费观看 | 美女在线观看视频一区二区 | 狠狠操在线观看 |