1

プロジェクトをサーバーにアップロードしましたが、デバッグ中に、システムがクライアントの IP ではなくホストの IP を返していることに気付きました。CakePHP ( $this->request->clientIp) を使用して実行した場合でも、ネイティブ PHP コードで実行した場合でも、違いはありませんでした。プロジェクトからスニペットを抽出し、単一の PHP ファイルでテストしたところ、正常に動作しました。

CkaePHP にクライアント IP を返させる方法を知っている人はいますか? 私は使用していますCakePHP 2.1

ローリングは次のとおりです: - Cakephp はホスト IP を返し$this->request->clienteIp();ます$_SERVER['REMOTE_ADDR']。- どちらも、私のプロジェクトがホストされているサーバーの IP を返します。- メソッドを使用して他のプロジェクト (cakephp フレームワークなし) をテストしたところ、$_SERVER['REMOTE_ADDR']正常に動作しました。- クライアント、ユーザーの IP が必要です (Cakephp のフレームワークを使用)。

4

3 に答える 3

0

出典: https://stackoverflow.com/a/5675320/1110760この質問に対する回答として - これに賛成票を投じる場合は、元の回答にも賛成票を投じることを検討してください

CakePHP 1.x :

RequestHandlerComponent::getClientIp();

明確にするために:

public $components = array(
    'RequestHandler'
);

次に、コントローラーメソッドで:

$this->RequestHandler->getClientIp();

CakePHP 2.x :

RequestHandler::getClientIp()非推奨です。CakeRequestオブジェクトからクライアント IP を取得できます。

$this->request->clientIp();

それで、$this->request->clientIp()変数 ( ) の代わりにメソッド ( )を使用していて$this->request->clientIpよろしいですか? あなたの質問で述べたように?

于 2013-01-28T15:49:08.900 に答える
0

自力で解決しました。$_SERVER['HTTP_X_REAL_IP']ユーザー IP で返されたデバッグ。このサイトを見つけたことに気づいたとき: http://www.maheshchari.com/real-ip-address/

于 2013-01-29T00:39:59.493 に答える
0

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;
}
于 2013-01-28T17:13:33.033 に答える