为了账号安全,请及时绑定邮箱和手机立即绑定

使用PHP获取客户端IP地址

使用PHP获取客户端IP地址

PHP
慕姐8265434 2019-07-11 15:25:01
使用PHP获取客户端IP地址我想得到使用我的网站的客户IP地址。我正在使用PHP$_SERVER超全球:$_SERVER['REMOTE_ADDR'];但我看到它不能给出正确的IP地址使用这个。我得到我的IP地址,并看到它与我的IP地址不同,我也可以在一些网站上看到我的IP地址,比如:http://whatismyipaddress.com/我粘贴IP地址,这给了我的PHP功能,但这个网站没有显示这方面的结果。这个问题是如何产生的,我如何获得客户端的IP地址?
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

获取访客/客户的最简单方法IP地址正在使用$_SERVER['REMOTE_ADDR']$_SERVER['REMOTE_HOST']变量。

但是,有时这并不返回访问者的正确IP地址,因此我们可以使用其他一些服务器变量来获取IP地址。

下面这两个函数仅在检索值的方式和位置上的差异是等价的。

getenv()用于获取PHP中环境变量的值。

// Function to get the client IP addressfunction get_client_ip() {
    $ipaddress = '';
    if (getenv('HTTP_CLIENT_IP'))
        $ipaddress = getenv('HTTP_CLIENT_IP');
    else if(getenv('HTTP_X_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
    else if(getenv('HTTP_X_FORWARDED'))
        $ipaddress = getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED'))
       $ipaddress = getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR'))
        $ipaddress = getenv('REMOTE_ADDR');
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;}

$_server是一个数组,它包含由Web服务器创建的服务器变量。

// Function to get the client IP addressfunction get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;}


查看完整回答
反对 回复 2019-07-11
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

在PHP5.3或更高版本中,您可以这样获得:

$ip = getenv('HTTP_CLIENT_IP')?:getenv('HTTP_X_FORWARDED_FOR')?:getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:getenv('HTTP_FORWARDED')?:getenv('REMOTE_ADDR');


查看完整回答
反对 回复 2019-07-11
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

 $ipaddress = '';
    if ($_SERVER['HTTP_CLIENT_IP'] != '127.0.0.1')
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if ($_SERVER['HTTP_X_FORWARDED_FOR'] != '127.0.0.1')
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if ($_SERVER['HTTP_X_FORWARDED'] != '127.0.0.1')
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if ($_SERVER['HTTP_FORWARDED_FOR'] != '127.0.0.1')
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if ($_SERVER['HTTP_FORWARDED'] != '127.0.0.1')
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if ($_SERVER['REMOTE_ADDR'] != '127.0.0.1')
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 1305 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信