程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 各個cms系統設置cdn後獲取真實ip地址

各個cms系統設置cdn後獲取真實ip地址

編輯:關於PHP編程

    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

    eclassconnect.php搜索function egetip()函數中的獲取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網站如何取到用戶真實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函數,先 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種方法

    服務端:

    各個cms系統設置cdn後獲取真實ip地址的教程圖片//方法一
    各個cms系統設置cdn後獲取真實ip地址的教程圖片HttpContext.Current.Request.UserHostAddress;
    各個cms系統設置cdn後獲取真實ip地址的教程圖片
    各個cms系統設置cdn後獲取真實ip地址的教程圖片//方法二
    各個cms系統設置cdn後獲取真實ip地址的教程圖片HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    各個cms系統設置cdn後獲取真實ip地址的教程圖片
    各個cms系統設置cdn後獲取真實ip地址的教程圖片//方法三
    各個cms系統設置cdn後獲取真實ip地址的教程圖片string strHostName = System.Net.Dns.GetHostName();
    各個cms系統設置cdn後獲取真實ip地址的教程圖片string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
    各個cms系統設置cdn後獲取真實ip地址的教程圖片
    各個cms系統設置cdn後獲取真實ip地址的教程圖片//方法四(無視代理)
    各個cms系統設置cdn後獲取真實ip地址的教程圖片HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    各個cms系統設置cdn後獲取真實ip地址的教程圖片

    客戶端:

    各個cms系統設置cdn後獲取真實ip地址的教程圖片//方法五
    各個cms系統設置cdn後獲取真實ip地址的教程圖片var ip = ’<!–#echo var=”REMOTE_ADDR”–>’;
    各個cms系統設置cdn後獲取真實ip地址的教程圖片alert(“Your IP address is ”+ip);
    各個cms系統設置cdn後獲取真實ip地址的教程圖片
    各個cms系統設置cdn後獲取真實ip地址的教程圖片//方法六(無視代理)
    各個cms系統設置cdn後獲取真實ip地址的教程圖片function GetLocalIPAddress()
    {
    var obj = null;
    var rslt = ”";
    try
    {
    obj = new ActiveXObject(“rcbdyctl.Setting”);
    rslt = obj.GetIPAddress;
    obj = null;
    }
    catch(e)
    {
    //
    }

    return rslt;
    }

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

    各個cms系統設置cdn後獲取真實ip地址的教程圖片if(Context.Request.ServerVariables["HTTP_VIA"]!=null) // using proxy
    {
    ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();  // Return real client IP.
    }
    各個cms系統設置cdn後獲取真實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.
    }
    各個cms系統設置cdn後獲取真實ip地址的教程圖片
    備注: 1. 有些代理是不會發給我們真實IP地址的

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved