【问题标题】:Cakephp return host Ip instead of clientCakephp 返回主机 IP 而不是客户端
【发布时间】:2013-01-28 14:48:24
【问题描述】:

我已经将我的项目上传到我的服务器,当我调试时,我意识到系统返回的是主机的 IP,而不是客户端的 IP。如果使用 CakePHP ($this->request->clientIp) 或使用原生 PHP 代码完成,则没有区别。我从项目中提取了 sn-p 并在一个 PHP 文件中对其进行了测试,它工作正常。

有人知道如何让 CkaePHP 返回客户端 IP 吗?我正在使用CakePHP 2.1

滚动的是: - Cakephp 返回主机IP,我可以使用$this->request->clienteIp(); 或使用$_SERVER['REMOTE_ADDR'] 规划php。 - 他们都返回托管我的项目的服务器的IP。 - 我用$_SERVER['REMOTE_ADDR'] 方法测试了其他项目(没有cakephp 框架)并且工作正常。 - 我需要客户端,用户的IP(使用Cakephp的框架)。

【问题讨论】:

  • 如果它没有使用普通的 PHP 方式返回它,那么当然 Cake 会出错,因为它使用 PHP 到 grab the IP。对我来说,这听起来像是服务器配置错误。
  • 您的意思是可能是路由问题吗?
  • 不,它可能与路由无关。如果 PHP 没有正确填充它,那么它是 PHP 或 Web 服务器配置问题。
  • 但是 cakephp 之外的文件返回访问者的正确 IP。

标签: cakephp


【解决方案1】:

来源:https://stackoverflow.com/a/5675320/1110760 作为对 this question 的回应 - 如果您对此表示赞同,请考虑同时为 original answer 投票

CakePHP 1.x

RequestHandlerComponent::getClientIp();

所以澄清一下:

public $components = array(
    'RequestHandler'
);

然后在控制器方法中:

$this->RequestHandler->getClientIp();

CakePHP 2.x

RequestHandler::getClientIp() 已弃用;你可以从CakeRequest object获取客户端IP:

$this->request->clientIp();

那么,您确定您使用的是方法 ($this->request->clientIp()) 而不是变量 ($this->request->clientIp)?就像你在问题中提到的那样?

【讨论】:

    【解决方案2】:

    我自己解决了。 调试返回 $_SERVER['HTTP_X_REAL_IP'] 和用户 ip。 当我意识到我找到了这个网站时: http://www.maheshchari.com/real-ip-address/

    【讨论】:

    【解决方案3】:

    在 cakephp 2.xx 中试试这个

    $this->request->clientIp();
    

    您可以使用原生 PHP 服务器变量

    $_SERVER['REMOTE_ADDR']
    

    这是我在 CakePhP 上的应用示例

    function getIp(){
        if (!empty($_SERVER['HTTP_CLIENT_IP'])){    //check ip from share internet
                    $ip = $_SERVER['HTTP_CLIENT_IP'];
                } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){   //to check ip is pass from proxy
                    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
                } else {
                    $ip = $_SERVER['REMOTE_ADDR'];
                }
    return $ip;
    }
    

    【讨论】:

    • $_SERVER['REMOTE_ADDR'] 在 cakephp 之外工作。在框架内返回我的服务器的 IP。
    • 所以当你转储$_SERVER 是错误的?真奇怪,我从没见过 Cake 覆盖环境变量。
    猜你喜欢
    • 2020-04-06
    • 2015-01-29
    • 2019-05-23
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多