我想获得使用我的网站的客户端IP地址.我使用的是PHP $_SERVER superglobal:

$_SERVER['REMOTE_ADDR'];

但是我看到它不能用这个给出正确的IP地址.我得到了我的IP地址,发现它与我的IP地址不同,我还可以在一些网站上看到我的IP地址,例如:

http://whatismyipaddress.com/

我粘贴了赋予我PHP功能的IP地址,但是这个网站没有显示任何结果.这个问题是如何产生的?我如何获取客户端的IP地址?

推荐答案

获取访客/客户IP address的最简单方法是使用$_SERVER['REMOTE_ADDR']$_SERVER['REMOTE_HOST']变量.

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

以下两个函数是等效的,只是在检索值的方式和位置上有所不同.

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

// Function to get the client IP address
function 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;
}

$\u SERVER是一个数组,包含由web服务器创建的服务器变量.

// Function to get the client IP address
function 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;
}

Php相关问答推荐

在WooCommerce产品中按类型对产品属性术语进行分类以供显示

无法在WooCommerce中发送客户笔记邮箱通知

WooCommerce管理订单列表自定义列不显示值

创建一个新的可变产品及其属性以用于WooCommerce中的变体

WooCommerce:在 checkout 审核单和发票中显示定制产品数据

MULTI UPDATE Laravel为什么只能更新我的第一行

WHERE方法不能与有效查询Laravel一起使用

将一个按钮添加到WooCommerce产品的管理视图中,该按钮链接到一个自定义的WebHook,并在末尾附加产品ID

如何在laravel中使用script type= text/html/script

在WooCommerce中只允许高价产品的BACS付款

在 WooCommerce 订阅续订订单中设置送货方式

使用 PHP,我可以将 foreach 语句放入瞬态中吗?

Laravel 添加到经过身份验证的用户的数据将应用于每个查询

从 Laravel 机制中排除目录并直接访问该目录

提交仅包含活动详细信息选项卡表单的主表单

WooCommerce订单支付页面上的附加支付订单按钮

php preg_match 验证 Tiktok 用户名

如何将数字文本文件添加到 PHP 数学方程式中?

PHP Loop 在迭代中使用修改后的数据

password_verify 在 PHP 7.4 中有效,但在 PHP 8.2 中无效