Yii2获取正确的客户端IP

Yii2获取正确的客户端IP,yii2,ip-address,Yii2,Ip Address,我使用此函数获取客户端ip: $client = @$_SERVER['HTTP_CLIENT_IP']; 你可以在这里看到。 但此地址与使用其他主机的IP(正确的IP)不匹配。例如: 我认为要获得客户端IP地址,您必须使用以下代码: Yii::$app->request->userIP 您可以使用YI2 Yii::$app->getRequest()->getUserIP() 或者,如果您希望将当前用户ip保存到数据库表中,我建议您在模型中使用 publi

我使用此函数获取客户端ip:

 $client  = @$_SERVER['HTTP_CLIENT_IP'];
你可以在这里看到。

但此地址与使用其他主机的IP(正确的IP)不匹配。例如:

我认为要获得客户端IP地址,您必须使用以下代码:

 Yii::$app->request->userIP

您可以使用
YI2

Yii::$app->getRequest()->getUserIP()
或者,如果您希望将当前用户ip保存到数据库表中,我建议您在模型中使用

public function behaviors() {
        return [
            ...
            'ip' => [
                'class' => IpBehavior::className(),
                'attributes' => [
                    ActiveRecord::EVENT_BEFORE_INSERT => ['created_ip', 'updated_ip'],
                    ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_ip',
                ],
            ]
            ...
        ];
    }
或者像这样。其中,值可以是字符串或将返回字符串的匿名函数

public function behaviors() {
    return [
        ...
        'ip' => [
            'class' => IpBehavior::className(),
            'createdIpAttribute' => 'created_ip',
            'updatedIpAttribute' => 'updated_ip',
            'value' => '127.0.0.1',
        ]
        ...
    ];
}

获取客户端ip的首选方法是使用
Yii::$app->request remoteIp

此方法使用
$\u服务器['REMOTE\u ADDR']
或ip头(如X-Forwarded-For),这些头可以由load balencers或代理服务添加


但是,在某些情况下,您的公共ip()和应用程序显示的ip()会有所不同,例如,如果您与应用程序位于同一网络上,但此ip不正确($\u SERVER['REMOTE\u ADDR'])。如何获得显示在线资源的相同ip?是否标记对您有效的正确答案