已有83人关注
下面两个获取IP的函数,哪个更好?
发表在PHP答疑区 2017-04-25
是否精华
版块置顶:

function getip()
{
    if (getenv('HTTP_CLIENT_IP'))
    {
    $ip = getenv('HTTP_CLIENT_IP');
    }
    elseif (getenv('HTTP_X_FORWARDED_FOR'))
    {
    $ip = getenv('HTTP_X_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_X_FORWARDED'))
    {
    $ip = getenv('HTTP_X_FORWARDED');
    }
    elseif (getenv('HTTP_FORWARDED_FOR'))
    {
    $ip = getenv('HTTP_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_FORWARDED'))
    {
    $ip = getenv('HTTP_FORWARDED');
    }
    else
    {
    $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}







function getip()
{
static $ip = '';
$ip = $_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_CDN_SRC_IP']))
{
$ip = $_SERVER['HTTP_CDN_SRC_IP'];
}
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'];
}
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;
}


分享到:
精彩评论 2
木木初
学分:482 LV5
TA的每日心情
伤心
2017-09-04 22:27:56
2017-04-25
沙发

你好,请问这是哪本书的问题,代码是否有错误?

andy
学分:2118 LV10
TA的每日心情
继续努力
2017-02-06 23:42:34
2017-04-25
板凳

读者你好:

    方法好坏应该是看你的需求。

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照