$ _SERVER [‘REMOTE_ADDR’] С отступлением в браузере?

Я делаю кодирование на своем локальном хосте, а также тестирую через мой телефон и планшет.

Я планировал использовать $_SERVER['REMOTE_ADDR'] чтобы получить IP пользователей для геоип кодирования.
однако при использовании мобильного телефона и локального хоста я получаю неправильный IP-адрес.
Я пытался использовать jquery для получения геолокации, но я не могу вставить лат и лон в веб-ссылку.
В настоящее время я использую это, чтобы преодолеть мою проблему и получить IP lat и lon для другого API.

$b = '192.168.1.1';
if($_SERVER['REMOTE_ADDR'] == $b)
{
$response = file_get_contents('http://www.geoplugin.net/json.gp?ip=18.252.235.89');
$area = json_decode($response, true);
}
else
{
$response = file_get_contents('http://www.geoplugin.net/php.gp?ip='.$_SERVER['REMOTE_ADDR']);

$area = json_decode($response, true);
};

Я использую приведенный выше код, чтобы получить lat и lon и вставить его в

http://api.openweathermap.org/data/2.5/weather?q='.$area["geoplugin_city"],$area["geoplugin_region"].'&APPID=000000

Однако это работает только на моей локальной машине, а не на мобильных устройствах, и это большая работа, чтобы просто получить широту и долготу; и использование API для получения другой информации API просто неправильно в моем представлении.

Могу ли я использовать jquery или какую-либо форму расположения браузера для всего?
Моя цель заключается в том, чтобы посетители могли поместить его в API openweathermap.org.

Я надеюсь, что предоставил информацию, которая понадобится всем.

0

Решение

Недавно я разработал клиентское решение (на основе IP-адреса). Это называется userinfo.io

По сути, вы должны вставить этот скрипт на своей странице:

<script type="text/javascript" href="//cdnjs.cloudflare.com/ajax/libs/userinfo/1.0.0/userinfo.min.js"></script>

И получите объект javascript, описывающий вашего пользователя:

<script type="text/javascript">
UserInfo.getInfo(function(data) {
console.log(data.position.latitude); // That's your latitude
console.log(data.position.longitude); // That's your longitude
// There are plenty of other information in the "data" object
}, function(err) {
// the "err" object contains useful information in case of an error
});
</script>

Это может быть хорошей альтернативой для вас.

0

Другие решения

Я хотел бы взглянуть на это:

https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition

довольно просто получить данные GeoLocation из браузера, используя JavaScript.

Если я правильно понимаю ваш вопрос, использование PHP для получения этих данных определенно не будет работать для вас, поскольку оно всегда будет получать информацию о серверах.

0

Вы пробовали встроенный в браузер HTML5 Geolocation API, который даст вам широту и долготу текущей позиции? Тем не менее, я бы не рекомендовал какой-либо специфичный для браузера API для этого

Если вы не получаете IP-адрес, используете ли вы свои статические IP-адреса для указания своего сервера?

Если вы используете Geoplugin API только для получения широты, lng для IP-адреса пользователя, я думаю, что это не всегда даст вам точные результаты. Если IP-адрес отслеживается неправильно, то все последующие результаты действий также становятся недействительными, поэтому, как я понял, вы наконец-то получили данные о погоде.

Я думаю, что лучшим подходом было бы найти логи пользователя на стороне клиента с помощью HTML5 GeoLocation и отправить их на ваш php-прокси, который вызовет API погоды и выдаст необходимые результаты. Вы можете сделать это с помощью AJAX. Если этот API погоды не имеет ограничений CORS или не поддерживает jsonp, вы можете напрямую обращаться к API погоды в обход отдельного прокси-сервера.

Если HTML5 GeoLocation вначале дает сбой, вы можете использовать некоторые запасные варианты, такие как Maxmind API и Google Map API.

0
По вопросам рекламы [email protected]