【问题标题】:function to get user IP address in YiiYii中获取用户IP地址的函数
【发布时间】:2014-03-11 12:37:08
【问题描述】:

我正在尝试创建一个获取用户IP地址的快捷方式,我在protected/helpers/shortcut.php

中创建了这个函数
echo getIP();
function getIP()
{
    return CHttpRequest::getUserHostAddress();
}

我收到此错误是因为我将 php.ini 设置为严格。并且 getUserHostAddress() 不是静态函数

Strict Standards: Non-static method CHttpRequest::getUserHostAddress() should not be called statically in /Applications/XAMPP/xamppfiles/htdocs/dev/protected/helpers/shortcuts.php on line 97
::1

我试过了

Yii::app()->request->userHostAddress;

但我得到了这个错误

Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/dev/protected/helpers/shortcuts.php on line 97

知道我做错了什么吗?谢谢

【问题讨论】:

  • 您是否有机会在引导程序完成之前调用此函数,或者在测试代码或任何其他“非 Web 上下文”中调用此函数?
  • 看到你把echo getIP();放在了shortcuts.php文件中。因此,只要包含此文件,它将直接运行。如果在调用CWebApplication::run() 函数之前发生这种情况(通常来自 index.php),您将收到类似这样的错误。
  • @TommyBravo 谢谢!!愚蠢的错误。 :)

标签: yii


【解决方案1】:

在 Yii2 中,使用Yii::$app->getRequest()->getUserIP()

【讨论】:

  • 伟大的。 :) :) 这个答案只有我在寻找。谢谢
  • 更短:Yii::$app->request->userIP;.
【解决方案2】:

试试这个:

Yii::app()->request->getUserHostAddress()

改为

Yii::app()->request->getUserHostAddress

使用“()”应该可以工作

【讨论】:

  • 另一种方式是:Yii::app()->request->userHostAddress
【解决方案3】:

这与 Yii2 有关(但也可能在 Yii 1.1 中工作)。如果您需要“X-Forwarded-For”IP 而不是代理,如果您的服务器位于保留代理之后,请在 config/main.php 上更改“请求”配置,如下所示:

'request' => [
    'csrfParam' => '_csrf-frontend',
    'trustedHosts' => [
        '192.168.1.10', // The IP of the reverse proxy server
    ],
    'secureHeaders' => [ // The headers coming from reserve proxy
        'X-Forwarded-For',
        'X-Forwarded-Proto',
        'Front-End-Https',
    ],
],

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 2011-02-06
    • 2019-11-15
    • 2012-06-12
    • 2013-08-01
    • 2015-03-23
    • 2014-08-23
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多