​​解决Ecshop因为动态ip问题登录后台自动退出​​

修改lib_base.php文件real_ip()函数,添加以下代码即可解决:

function real_ip()

{

    static $realip = NULL;

    if ($realip !== NULL)

    {

        return $realip;

    }


 if(isset($_COOKIE[‘real_ipd’]) && !empty($_COOKIE[‘real_ipd’])){

  $realip = $_COOKIE[‘real_ipd’];  

  return $realip;

 }

    if (isset($_SERVER))

    {

        if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR’]))

        {

            $arr = explode(‘,’, $_SERVER[‘HTTP_X_FORWARDED_FOR’]);

            /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */

            foreach ($arr AS $ip)

            {

                $ip = trim($ip);

                if ($ip != ‘unknown’)

                {

                    $realip = $ip;

                    break;

                }

            }

        }

        elseif (isset($_SERVER[‘HTTP_CLIENT_IP’]))

        {

            $realip = $_SERVER[‘HTTP_CLIENT_IP’];

        }

        else

        {

            if (isset($_SERVER[‘REMOTE_ADDR’]))

            {

                $realip = $_SERVER[‘REMOTE_ADDR’];

            }

            else

            {

                $realip = ‘0.0.0.0’;

            }

        }

    }

    else

    {

        if (getenv(‘HTTP_X_FORWARDED_FOR’))

        {

            $realip = getenv(‘HTTP_X_FORWARDED_FOR’);

        }

        elseif (getenv(‘HTTP_CLIENT_IP’))

        {

            $realip = getenv(‘HTTP_CLIENT_IP’);

        }

        else

        {

            $realip = getenv(‘REMOTE_ADDR’);

        }

    }

    preg_match(“/[\d\.]{7,15}/”, $realip, $onlineip);

    $realip = !empty($onlineip[0]) ? $onlineip[0] : ‘0.0.0.0’;

 setcookie(“real_ipd”, $realip, time()+36000, “/”);

    return $realip;

}