2013-07-04 7 views
0

Я пытаюсь использовать функцию «clientIp», чтобы получить реальный IP-адрес пользователя, но это ничего не возвращает. Я использую это:cakephp 2.3 не возвращает реальный ip пользователя

$ipAddr = $this->request->clientIp(); 
print_r($ipAddr);die(); 

И напечатать его ":: 1"

вместо фактического внутрибрюшинно печати, распечатайте :: 1

кто-нибудь имел эту проблему, как можно Я решаю?

ответ

2

Попробуйте это в CakePHP 2.xx

$this->request->clientIp(); 

Вы можете использовать переменный сервер нативного PHP

$_SERVER['REMOTE_ADDR'] 

Это работает пример моего приложения на CakePHP

function get_realIp(){ 
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ 
     $_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_X_FORWARDED_FOR']; 
    }elseif(isset($_SERVER['HTTP_X_REAL_IP']){ 
     $_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_X_REAL_IP']; 
    } 
return $_SERVER['REMOTE_ADDR']; 
} 

дай мне знаю, могу ли я помочь тебе больше.

+0

Я протестировал 3 пути, которые вы указали, и три возвращают это: 1 Я тестирую эту функцию на localhost, это может повлиять? –

+0

жаль вас, это даст вам очень много времени на ваш местный ip, вам нужно будет протестировать некоторые живые ip. – liyakat

+0

Я положил пример на хост онлайн, и он работал правильно. Благодарим за помощь. –