午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    Discuz論壇使用CDN后無法獲取用戶真實IP的解決方法
    來源:易賢網 閱讀:1401 次 日期:2014-08-15 10:24:51
    溫馨提示:易賢網小編為您整理了“Discuz論壇使用CDN后無法獲取用戶真實IP的解決方法”,方便廣大網友查閱!

    該問題存在于任何CDN產品,如果您使用了CDN產品,該Discuz方法都適用。

    該問題導致的結果:

    1.Discuz論壇可能無法獲得用戶的真實IP,導致某些用戶IP顯示的是加速樂節(jié)點的IP

    2.論壇訪問量過大的話,可能會導致用戶訪問時提示“抱歉,您的 IP 地址不在被允許,或您的賬號被禁用,無法訪問本站點”

    產生原因:

    使用CDN,對于網站訪客來說,相當于使用了代理訪問,而Discuz在設計上,是優(yōu)先獲取代理IP,其它才會檢測代理服務器是否將用戶真實IP傳輸過來,也就是說獲取代理IP優(yōu)先于用戶真實IP。如果您的網站不需要對用戶訪問做過多的限制,強烈建議按照以下方法進行:

    解決方法(Discuz X2):

    打開Discuz    /source/class/class_core.php 文件

    找到第341行,或者搜索“HTTP_CLIENT_IP”,找到如下代碼:

    代碼如下:

    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;

    }

    將以上代碼修改為:

    代碼如下:

    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 找到如下代碼:

    代碼如下:

    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;

    }

    將其修改為:

    代碼如下:

    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后臺和你的Discuz論壇后臺分別清除緩存即可。

    更多信息請查看IT技術專欄

    更多信息請查看CMS教程
    由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢?yōu)闇剩?/div>
    相關閱讀CMS教程

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網