2013-10-26 3 views
0

То, что я пытаюсь сделать, - получить название страны с IP-адреса. Я создал класс с именем генерал и в этом классе у меня есть функция под названием GetIPCountry ($ внутрибрюшинно), который возвращает массив джейсон декодируется из iptolatlng.comПолучение названия страны от IP php с помощью iptolatlng.com

public function GetIPCountry($ip){ 
    $details = json_decode(file_get_contents("http://www.iptolatlng.com?`ip=".urlencode($ip)));` 
    return $details->countryFullName; 
} 

когда я отправить мой IP, как это в моем локальном хосте :

$country = $general->GetIPCountry('***.***.***.**'); 

все работает просто отлично!

Но когда я отправляю загружать тот же файл и запускать его на своем сервере, выход отсутствует.

Я думал, что с тех пор, как я на сервере, я должен попробовать $_SERVER['REMOTE_ADDR']; тоже, но это тоже не показывает никакого результата. Я подозреваю, что это тоже может быть ошибка сервера, я размещен в iPage Пожалуйста, помогите мне, Заранее благодарим!

+0

Во-первых - у вас есть ошибка в синтаксисе (не требуется «как в URL-адресе, так и в конце строки»). Исправить свою ошибку и опубликовать какие сообщения phpfiddle: ([link] http://phpfiddle.org/main/code/b3f-gvi [/ link]. Затем, если это исправлено на вашем удаленном сервере, и у вас все еще есть не выход, ошибка, вероятно, не произойдет, и вы установили PHP флаг набор 'display_errors' 0. в этом случае попробуйте вставить это до вашего кода: ini_set ('display_errors', 1); error_reporting (E_ALL); – Kleskowy

+0

@ Kleskowy Спасибо за указание, но это была просто ошибка, когда я копировал синтаксис здесь. Я сделал phpfidle, это ссылка, в основном это то, что я делаю! Http://phpfiddle.org/main/code/mih-iqn – Bhashithe

+0

@ Kleskowy на самом деле я совпадал с вашим кодом на моем сервере, и все равно он не работает. Eventhought и мой код, и ваш код работают нормально при f Или он должен работать на удаленном сервере тоже правильно? – Bhashithe

ответ

0

Просто быстрый вопрос: что содержит $ ip, когда вы размещаете его на удаленном сервере? В сущности, если вы хотите распечатать $ ip, он содержит ваш IP-адрес? Это поможет вам выяснить, есть ли проблема с получением IP-адреса подключенного компьютера или иным способом.

+0

$ ip = $ _SERVER ['REMOTE_ADDR']; как будто. когда я повторяю это, я получаю свой IP-адрес без каких-либо проблем. – Bhashithe

+0

Итак, он должен вызвать страницу iptolatng для этого IP-адреса и сохранить его в деталях. И $ details не содержит ничего после этого вызова при запуске на удаленном сервере? – Don

+0

Да! Это проблема!! – Bhashithe

0

Вы отправляете 127.0.0.1 в качестве IP? Если вы запрашиваете у службы местоположение IP 127.0.0.1, он не сможет сообщить вам, что такое ваше местоположение. У меня была эта проблема при запуске вашего кода с моего локального хоста.

+0

Я не пытаюсь это сделать, у меня загружен мой сценарий на удаленный сервер, вот где я его тестирую. проверьте мою скрипку здесь: http://phpfiddle.org/main/code/mih-iqn – Bhashithe

+0

Я загрузил и протестировал это на другом сервере, он отлично работает. Может ли это быть проблемой сервера? Я теперь подозреваю, что очень важно, и в то время как поддержка клиентов iPages постоянно говорит мне, что это проблема с сервером. – Bhashithe

+0

попробуйте проверить это, удалив параметр? Ip = в конце вашей скрипки. попробуйте: http://phpfiddle.org/main/code/v93-8er Угадайте, что на вашем сервере проблема с REMOTE_ADDR по какой-то причине – mgwhitfield

0

Не прямо отвечая на Ваш вопрос, но может помочь - почему бы не использовать расширение geoip PECL? http://www.php.net/manual/en/function.geoip-country-code-by-name.php

С этим вам не придется выходить на внешний веб-сервер для получения результата и не будет зависеть от времени простоя сторонней службы.

Смежные вопросы